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

Power BI(DAX)技术问询:All()函数仅针对Column1列的2个值未生效

分析度量值[B]在Column1选B/D时数值异常的原因及解决办法

让我来帮你拆解这个问题,先理清楚核心矛盾点:为什么选Column1的A/C/E/F时度量值B结果一致,选B/D时就变了?

问题根源:度量值[A]中的日期计算受Column1筛选影响

先看你的度量值[A]的核心逻辑:它通过MAX('Date-Table'[Date])获取当前筛选上下文下的最大日期,再计算上年年末的日期,最后取该日期的有机余额。

这里的关键问题是:MAX('Date-Table'[Date])会受到当前Column1筛选的影响。举个例子:

  • 当你选Column1=A/C/E/F时,这些类别在最新的日期都有数据,所以MAX('Date-Table'[Date])取到的是整个数据集的最新日期,计算出来的上年年末日期固定,最终[A]的结果一致,度量值B的总和也一致。
  • 但当你选Column1=B或D时,如果这两个类别在最新日期没有数据(比如B的最新数据只到2023年10月,而其他类别到2023年12月),那么MAX('Date-Table'[Date])就会取到B/D有数据的最后一个日期,导致上年年末日期偏移,[A]的结果自然就变了,度量值B的总和也跟着变。

解决办法:让[A]中的日期计算不受Column1筛选影响

要解决这个问题,我们需要让MAX('Date-Table'[Date])忽略Column1的筛选,确保取到的是整个模型的最新日期。修改度量值[A]的日期变量即可:

修改后的度量值[A]公式

A = 
var _date = CALCULATE(MAX('Date-Table'[Date]), ALL('Table'[Column1])) // 清除Column1的筛选,确保日期取全局最新
var _month = MONTH(_date)
var _prior_year_date = if(_month=1,EOMONTH(_date,-13),EOMONTH(_date,-_month))
var _prior_year_end_organic_balance = CALCULATE([Organic Balance],FILTER(ALL('Date-Table'),[Date]=_prior_year_date))
return _prior_year_end_organic_balance

如果希望_date完全不受任何筛选影响(包括其他表的筛选),可以把ALL('Table'[Column1])换成ALL()或者ALL('Date-Table'),根据你的业务需求调整。

优化度量值[B]的写法(可选)

你的度量值[B]逻辑是对的,但可以简化成更易读的形式:

B = CALCULATE([A], 'Table'[Column1] IN {"C", "D", "F"}, ALL('Table'[Column1]))

用IN运算符替代多个||,代码更简洁清晰。

验证效果

修改后,不管你在Column1中选择哪个值,度量值[A]都会基于全局最新日期计算上年年末余额,度量值[B]也会稳定返回C/D/F三个类别的总余额,不会再出现B/D选项下的数值异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 00:37:38