DAX按月度索引MonthIndex计算度量值Forecast%累计总计运行错误如何解决
问题原因
- 筛选范围逻辑错误:你使用
ALL('table'[MonthIndex])清除了所有MonthIndex的筛选规则,包括切片器限定的月份范围,会导致累计范围超出你选择的月份区间,不符合预期。 - 上下文丢失:你的
Forecast%本身依赖切片器、SWITCH语句的动态规则,原有写法没有保留除MonthIndex之外的其他筛选上下文,导致Forecast%的计算基准发生变化,结果自然出错。 - 上下文获取错误:若你的动态表是视觉对象层面的SUMMARIZE聚合结果(而非模型中持久化的计算表),直接引用
MAX('table'[MonthIndex])无法正确获取当前行对应的月份索引,导致判断条件失效。
修复方案
如果你的Forecast%本身的计算逻辑符合累加规则,使用以下DAX即可:
x = VAR 当前月份索引 = MAX('table'[MonthIndex]) RETURN CALCULATE ( [Forecast%], FILTER ( ALLSELECTED('table'[MonthIndex]), 'table'[MonthIndex] <= 当前月份索引 ) )
注意事项
如果Forecast%是通过分子/分母的除法运算得到的百分比度量,直接累加百分比本身不符合常规业务逻辑,建议先分别累计分子、分母后再做除法,参考写法:
x = VAR 当前月份索引 = MAX('table'[MonthIndex]) VAR 累计分子 = CALCULATE([你的分子度量值], FILTER(ALLSELECTED('table'[MonthIndex]), 'table'[MonthIndex] <= 当前月份索引)) VAR 累计分母 = CALCULATE([你的分母度量值], FILTER(ALLSELECTED('table'[MonthIndex]), 'table'[MonthIndex] <= 当前月份索引)) RETURN DIVIDE(累计分子, 累计分母, 0)
内容的提问来源于stack exchange,提问作者marcinn
相关产品推荐
相关产品推荐

