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

Power BI中ALL()函数在SUMX里的行为差异:为何仅返回非重复值?

关于DAX中ALL(表)与ALL(列)在SUMX中的行为差异

核心差异解析

你观察到的结果差异,本质是ALL函数参数类型不同导致返回对象的本质区别:

  • ALL(FactFinance) 返回的是整个FactFinance表的所有原始行(包含重复行,共7行)
  • ALL(FactFinance[Amount]) 返回的是FactFinance[Amount]列的所有非重复值构成的单列表(仅3个值:100、200、300)

两个度量值的计算逻辑

  1. FactTotal1 = SUMX(ALL(FactFinance), FactFinance[Amount])
    SUMX会逐行迭代ALL(FactFinance)返回的7行数据,将每一行的Amount值累加:
    100+200+100+300+200+100+300 = 1300

  2. FactTotal2 = SUMX(ALL(FactFinance[Amount]), FactFinance[Amount])
    SUMX迭代的是ALL(FactFinance[Amount])返回的3个非重复值集合,每次迭代取集合中的单个值累加:
    100+200+300 = 600

对官方定义的误解澄清

微软官方定义中,ALL(列)的作用是"清除该列的筛选并返回所有值",这里的"所有值"指的是列中的唯一值,而非原始表中每行的重复值。而ALL(表)返回的是表的完整行集,只要行的列组合(比如OrgKey+Amount)不同,就算是不同的行,因此保留了所有重复的Amount行。

补充验证

如果需要让FactTotal2得到与FactTotal1相同的结果,可修改为:

FactTotal2 = SUMX(ALL(FactFinance), FactFinance[Amount])

或者直接使用更简洁的SUM函数(SUM会自动累加所有行的Amount):

FactTotal = SUM(FactFinance[Amount])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:22:11