Power BI中DAX计算4周滚动平均单周切片结果异常问题
问题分析与解决方案
你的DAX公式在单周筛选(除第1周外)时结果错误,核心原因是当前筛选上下文已限定Week为选中单周,CALCULATE默认继承该筛选,导致无法获取目标范围内的历史周数据:
- 单周筛选时,上下文仅包含选中的Week,CALCULATE中的范围筛选会与上下文筛选合并,最终仅计算选中周的Volume,再除以对应周数得到错误结果;
- 多选周时,上下文包含多个Week,范围筛选与上下文兼容,能正确计算目标范围内的总和。
修正后的DAX公式
在CALCULATE中添加REMOVEFILTERS(Responsiveness[Week])移除Week列的筛选上下文,确保能获取指定范围内的所有周数据:
_4WeekRollingAverage# = VAR CurrentWeek = MAX(Responsiveness[Week]) VAR WeeksToConsider = IF( CurrentWeek >= 4, 4, CurrentWeek ) VAR _PreviousWeek = CALCULATE( SUM(Responsiveness[Volume]), REMOVEFILTERS(Responsiveness[Week]), // 移除Week列的筛选限制 Responsiveness[Week] >= CurrentWeek - WeeksToConsider + 1 && Responsiveness[Week] <= CurrentWeek ) RETURN DIVIDE(_PreviousWeek, WeeksToConsider)
也可以用ALL(Responsiveness[Week])替代REMOVEFILTERS,两者效果类似,但REMOVEFILTERS仅移除指定列的筛选,更精准。
验证示例数据
基于你提供的示例数据:
- 选择第1周:计算结果为
512 / 1 = 512,正确; - 选择第2周:计算
(512 + 725) / 2 = 618.5,KPI卡片会根据显示设置四舍五入为618或619,与多选1、2周的结果一致; - 选择第4周:计算
(512 + 725 + 798 + 721) / 4 = 689,正确。
内容的提问来源于stack exchange,提问作者Ronit Bhardwaj
相关产品推荐
相关产品推荐

