计算去重计数累计值(Running Total)时结果不准确,求原因
问题原因与解决方案
你的DAX代码和预期值的差异,核心是两种累计逻辑的区别:
1. 差异根源
你的DAX逻辑是计算截止到当前日期的所有唯一订单号总数,而手动计算的“Expected Running Total”是每日去重订单数的简单累加和。两者的差距来自于跨日期重复的订单号:这些订单会在多个日期的DistinctCount中被统计,但在DAX的去重累计逻辑里只会被计数一次,而手动累加时会被重复计算。
比如2/5的预期值112=36+76,但DAX结果是109,说明有3个订单号同时出现在1/5和2/5,DAX的去重累计会把这3个订单只算一次,比手动累加少3,正好对应数值差。
2. 修正方案
根据你的实际需求选择对应方案:
方案A:保留“截止到当前日期的唯一订单总数”逻辑(修正代码笔误)
你的原有逻辑是正确的去重累计,只是代码里的表名写错了(ALLSELECTED(Date)应该是ALLSELECTED('Dates')),修正后的代码:
Running Total = VAR MaxDate = MAX('Dates'[Date]) VAR Result = CALCULATE( DISTINCTCOUNT('Figures'[Order Number]), FILTER( ALLSELECTED('Dates'), 'Dates'[Date] <= MaxDate) ) RETURN Result
方案B:实现“每日去重订单数的累加和”(匹配你的预期值)
先创建每日去重订单的度量值:
Daily Distinct Orders = DISTINCTCOUNT('Figures'[Order Number])
再基于这个度量值做累计求和:
Running Total of Daily Distinct = SUMX( FILTER(ALLSELECTED('Dates'), 'Dates'[Date] <= MAX('Dates'[Date])), [Daily Distinct Orders] )
这个度量值会将每日的去重订单数直接累加,和你手动计算的预期值一致。
内容的提问来源于stack exchange,提问作者Kresten
相关产品推荐
相关产品推荐

