如何计算Scenario ID计数的累计值?DAX代码异常排查
DAX累计和计算错误修复方案
我有包含日期及每日Scenario ID计数的数据,需要计算累计和。使用以下DAX代码后,未得到逐行累加的结果,反而出现Scenario ID计数总和乘以计数的错误:
Cummulative Planned = CALCULATE ( SUM('Table7'[Count of Scenario ID]), FILTER ( ALL( 'Table7'[Projected LandingStart Date] ), 'Table7'[Projected LandingStart Date] <= MAX ( 'Table7'[Projected LandingStart Date] ) ) )
问题原因
原代码仅清除了日期列的筛选上下文,但表中若存在其他列,这些列的筛选会保留,导致CALCULATE重复计算总和,最终出现总和乘以当前行计数的错误结果。此外,行上下文与筛选上下文的冲突也会干扰累计逻辑。
修复方案
方案1:使用单独日期表(推荐)
如果模型中有独立的日期表,用日期表的日期列来构建筛选逻辑,能彻底避免原表其他列的干扰:
Cummulative Planned = CALCULATE ( SUM('Table7'[Count of Scenario ID]), FILTER ( ALL( 'DateTable'[Date] ), 'DateTable'[Date] <= MAX ( 'DateTable'[Date] ) ) )
方案2:清除整个表的筛选上下文
若没有单独日期表,修改代码清除整个表的筛选,确保只按日期维度累计:
Cummulative Planned = CALCULATE ( SUM('Table7'[Count of Scenario ID]), FILTER ( ALL( 'Table7' ), 'Table7'[Projected LandingStart Date] <= MAX ( 'Table7'[Projected LandingStart Date] ) ) )
方案3:用变量明确当前日期
通过变量获取当前行的日期,简化筛选逻辑,避免上下文冲突:
Cummulative Planned = VAR CurrentDate = MAX('Table7'[Projected LandingStart Date]) RETURN CALCULATE ( SUM('Table7'[Count of Scenario ID]), ALL('Table7'[Projected LandingStart Date]), 'Table7'[Projected LandingStart Date] <= CurrentDate )
内容的提问来源于stack exchange,提问作者Tabisile Samantha
相关产品推荐
相关产品推荐

