You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI DAX度量值使用ALL()函数无法获取未过滤数据问题求助

DAX动态时钟度量值返回0问题排查与修复方案

问题根因定位

  • ALL函数调用逻辑错误:AVERAGEX(ALL(Facts_Values), Facts_Values[Value])已经移除了Facts_Values表上的所有筛选,外层CALCULATE新增的'Facts_Values'[Quarter from] == _CURRENT_DATE筛选器无法作用于已经清除筛选的表,导致筛选条件失效,平均值计算逻辑完全错误。
  • 时间智能函数未保留独立上下文:计算回溯日期时调用的'Date'[Date]受外部切片器/可视化轴筛选影响,当所选日期范围不包含回溯日期时,时间智能函数返回空值,后续计算直接为0。
  • 字段拼写错误:短周期平均值计算中引用的Facts_Values[Values]多了末尾的s,与事实表实际字段Facts_Values[Value]不匹配,返回空值。
  • CALCULATE嵌套冗余:无意义的双层CALCULATE嵌套会干扰筛选上下文传递,进一步提升逻辑出错概率。

修复后的DAX代码

New Clock = 
VAR _SHORTTERM = 3
VAR _LONGTERM = 6
// 取当前上下文最小日期的当月1号,可响应X轴日期维度/用户日期选择
VAR _CURRENT_DATE = DATE(YEAR(MIN('Date'[Date])), MONTH(MIN('Date'[Date])), 1)
// 计算回溯日期时强制使用完整日期表,不受外部筛选限制
VAR _SHORT_TERM_DATE = PREVIOUSDAY(
                        FIRSTDATE(
                            DATESINPERIOD(
                                ALL('Date'[Date]),
                                _CURRENT_DATE,
                                -(3*_SHORTTERM),
                                MONTH)
                                ))
VAR _LONG_TERM_DATE = PREVIOUSDAY(
                        FIRSTDATE(
                            DATESINPERIOD(
                                ALL('Date'[Date]),
                                _CURRENT_DATE,
                                -(3*_LONGTERM),
                                MONTH)
                                ))
// 平均值计算:先清除事实表外部筛选,再应用季度筛选,保证筛选条件生效
VAR _CURRENT_AVERAGE =  CALCULATE(
        AVERAGE(Facts_Values[Value]),
        ALL(Facts_Values),
        'Facts_Values'[Quarter from] == _CURRENT_DATE
        )
VAR _LONGTERM_AVERAGE =  CALCULATE(
    AVERAGE(Facts_Values[Value]),
    ALL(Facts_Values),
    'Facts_Values'[Quarter from] == _LONG_TERM_DATE
    )
VAR _SHORTTERM_AVERAGE = CALCULATE(
    AVERAGE(Facts_Values[Value]), // 修复字段拼写错误
    ALL(Facts_Values),
    'Facts_Values'[Quarter from] == _SHORT_TERM_DATE
    )
// 用DIVIDE避免除零错误
VAR _LONGTERM_AVERAGE_RELATIVE = DIVIDE(_CURRENT_AVERAGE - _LONGTERM_AVERAGE, _LONGTERM - 1, 0)
VAR _SHORTTERM_AVERAGE_RELATIVE = DIVIDE(_CURRENT_AVERAGE - _SHORTTERM_AVERAGE, _SHORTTERM - 1, 0)
// 下方原有业务逻辑保持不变
.. 
.. 
.. 
VAR _ALL = ROUNDDOWN((12 * (RDV+YDV+IDV+RLV+YLV+ILV)),0)+ 1 
Return _ALL

优化建议

  • 建议在Date表上标记为官方日期表,保证时间智能函数运行稳定,可通过模型视图 -> 选中Date表 -> 标记为日期表完成设置。
  • 若需要保留除日期外其他维度的切片器筛选,可将ALL(Facts_Values)替换为ALL('Date'),仅移除日期维度的外部筛选即可。

内容的提问来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:54:08