Power BI累计工时运行总计计算异常问题求助
DAX运行总计度量值错误修复方案
问题概述
现有Spedizioni发货表,已创建以下度量值:
Cumulated Hours Life 1st Year:计算当年发货量ComulativeSpedizioni_1_year_before:计算前一年的累计发货量Cumulated hours:上述两个度量值求和
创建的运行总计度量值Cumulated Hours Running Total未正确计算累计值,仅返回年度数据(例如2020年预期为46541,实际显示24120)。
问题根源
- 运行总计度量值迭代的是事实表
Spedizioni[Data fattura],而非专用日期表Calendar Lookup。事实表的日期可能存在不连续、空白的情况,导致累加逻辑遗漏部分日期。 - 时间上下文依赖不一致:其他度量值均基于
Calendar Lookup表,而运行总计使用事实表日期,导致筛选逻辑冲突。
修复方案
1. 修正运行总计度量值
替换原Cumulated Hours Running Total代码为:
Cumulated Hours Running Total = VAR CurrentDate = MAX('Calendar Lookup'[Date]) RETURN SUMX( FILTER( ALL('Calendar Lookup'[Date]), 'Calendar Lookup'[Date] <= CurrentDate ), [Cumulated Hours] )
关键调整说明:
- 使用
Calendar Lookup的日期列进行迭代,确保时间维度连续完整,避免事实表日期缺失导致的累加错误。 - 提取当前上下文最大日期为变量,明确筛选逻辑,保证在不同时间粒度(日/月/年)下都能正确计算累计值。
2. 验证基础度量值逻辑(可选)
若Cumulated Hours Life 1st Year的目标是当前日期所在年份的累计发货量,原度量值仅做SUM可能未限定时间范围,可调整为:
Cumulated Hours Life 1st Year = CALCULATE( SUM(Spedizioni[Qtà fatturata]), DATESYTD('Calendar Lookup'[Date]) )
该调整确保在任意日期上下文下,都能计算到当前日期为止的当年累计发货量,与ComulativeSpedizioni_1_year_before的逻辑对齐。
验证方法
将修复后的度量值拖入报表,按日期(日/月/年)分组查看:
- 日粒度下:每日的运行总计应为之前所有日期的
Cumulated hours之和 - 年粒度下:当年的运行总计应为全年所有日期的
Cumulated hours之和,与预期值46541匹配
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

