You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在PowerBI中基于其他列值创建Calculated Column的方法求助

在PowerBI中创建「Time to Completed」计算列的实现方案

核心逻辑

针对每条记录按以下规则计算:

  • 非Completed状态的行直接返回0;
  • Completed状态的行:若为项目第一条Completed记录,或前一条记录已是Completed,则返回0;否则计算当前日期与上一条非Completed记录的月份间隔。

DAX计算公式

Time to Completed = 
VAR CurrentProject = [Project]
VAR CurrentDate = [Reporting Date]
VAR CurrentStatus = [Status]
-- 筛选当前项目中早于当前日期的所有记录
VAR FilteredRecords = FILTER(ALL('你的表名'), '你的表名'[Project] = CurrentProject && '你的表名'[Reporting Date] < CurrentDate)
-- 获取当前项目中最新的前一条记录的状态
VAR LastRecordStatus = MAXX(TOPN(1, FilteredRecords, '你的表名'[Reporting Date], DESC), '你的表名'[Status])
-- 获取当前项目中最后一条非Completed状态的记录日期
VAR LastNonCompletedDate = MAXX(FILTER(FilteredRecords, '你的表名'[Status] <> "Completed"), '你的表名'[Reporting Date])
RETURN
IF(
    CurrentStatus <> "Completed",
    0,
    IF(
        -- 处理「第一条Completed记录」或「前一条已是Completed」的情况
        ISBLANK(LastRecordStatus) || LastRecordStatus = "Completed",
        0,
        -- 计算月份间隔
        DATEDIFF(LastNonCompletedDate, CurrentDate, MONTH)
    )
)

公式细节说明

  1. 变量初始化:捕获当前行的项目、日期、状态,为后续筛选计算提供上下文;
  2. 前序记录筛选:FilteredRecords锁定当前项目中所有早于当前日期的历史记录;
  3. 前一行状态判断:LastRecordStatus提取前序记录中最新一条的状态,用来识别连续Completed的场景;
  4. 非Completed记录定位:LastNonCompletedDate找出前序记录中最后一条非Completed状态的日期;
  5. 结果分支返回:
    • 当前状态非Completed → 返回0;
    • 满足「第一条Completed」或「前一行Completed」条件 → 返回0;
    • 其余Completed状态行 → 计算两个日期的月份差并返回。

注意事项

  • 替换公式中的你的表名为实际数据集的表名称;
  • 确保Reporting Date列是日期格式;
  • 状态值"Completed"需与数据中的实际值完全匹配(注意大小写、空格);
  • 若存在同一项目同一日期多条记录的情况,需先对数据去重,保证每个项目每个日期仅一条记录。

内容的提问来源于stack exchange,提问作者tikkimasala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:23:30