Power BI计算PRED_BL列时如何将前一日结果作为次日运算起始值
解决方案(Power BI DAX 实现)
前置要求
- 你的数据表需包含数据类型为「日期/时间」的唯一日期列,日期从2021年10月4日开始连续无断档
- 2021年10月4日的
PRED_WORKLOAD字段有确定赋值,其余日期该字段为空不影响计算
计算列实现(适合生成固定列用于后续分析)
在Power BI字段面板右键点击对应表,选择「新建列」,粘贴以下DAX代码,替换代码中的你的表名为你实际的表名即可:
PRED_BL = VAR 首日初始值 = CALCULATE( FIRSTNONBLANK('你的表名'[PRED_WORKLOAD], 1), ALL('你的表名'), '你的表名'[日期] = DATE(2021,10,4) ) VAR 累计净变化 = CALCULATE( SUMX('你的表名', '你的表名'[PRED_REC] - '你的表名'[WORKDONE]), ALL('你的表名'), '你的表名'[日期] <= EARLIER('你的表名'[日期]) ) RETURN 首日初始值 + 累计净变化
逻辑说明
你需要的迭代运算本质是累计求和场景:当日PRED_BL = 首日初始PRED_WORKLOAD + 从首日到当日所有(PRED_REC - WORKDONE)的求和结果,和你要求的「前一日PRED_BL作为当日PRED_WORKLOAD」规则完全匹配,相比逐行偏移取值的写法计算效率更高,也更不容易出错。
如果你的首日不是固定的2021年10月4日,而是表内的最小日期,可以把变量首日初始值的日期筛选条件替换为:'你的表名'[日期] = MINX(ALL('你的表名'), '你的表名'[日期])
即可适配动态首日的场景。
可选:度量值实现(适合动态筛选场景)
如果需要配合切片器做动态日期范围的分析,可以新建度量值使用:
PRED_BL_度量值 = VAR 当前选中最大日期 = MAX('你的表名'[日期]) VAR 首日初始值 = CALCULATE( FIRSTNONBLANK('你的表名'[PRED_WORKLOAD], 1), ALL('你的表名'), '你的表名'[日期] = DATE(2021,10,4) ) VAR 累计净变化 = CALCULATE( SUMX('你的表名', '你的表名'[PRED_REC] - '你的表名'[WORKDONE]), ALL('你的表名'), '你的表名'[日期] <= 当前选中最大日期 ) RETURN 首日初始值 + 累计净变化
内容的提问来源于stack exchange,提问作者Martin Pugsley
相关产品推荐
相关产品推荐

