DAX如何实现汇总求和排除当前公司:从合计值中移除指定分类
正确DAX写法参考
原写法错误原因
- 第一种度量值:当前视觉对象按Company分组展示时,行上下文默认筛选当前公司的所有数据,你新增的
dataset[Company] <> SelectComp筛选条件和原有筛选冲突,最终返回空值,未先清除Company维度的现有筛选是核心问题。 - 第二种计算表:仅移除了Company维度的筛选,没有额外排除当前行对应的公司,得到的是全量数据的Rate总总和,不符合需求。
方案1:度量值写法(适合在报表视觉对象中动态计算)
排除自身的Rate总和 = VAR 当前公司 = SELECTEDVALUE(dataset[Company]) VAR 全量Rate总和 = CALCULATE(SUM(dataset[Rate]), ALL(dataset[Company])) VAR 当前公司Rate总和 = SUM(dataset[Rate]) RETURN 全量Rate总和 - 当前公司Rate总和
也可以基于你原来的逻辑调整,效果一致:
排除自身的Rate总和 = VAR SelectComp = SELECTEDVALUE(dataset[Company]) RETURN CALCULATE(SUM(dataset[Rate]), REMOVEFILTERS(dataset[Company]), dataset[Company] <> SelectComp)
方案2:计算表写法(适合生成固定的静态汇总表)
NewTable = ADDCOLUMNS( VALUES(dataset[Company]), "GroupedSum", VAR CurrentComp = dataset[Company] RETURN CALCULATE(SUM(dataset[Rate]), ALL(dataset[Company]), dataset[Company] <> CurrentComp) )
结果验证
基于你提供的样本数据,各公司自身Rate总和分别为:A=19、B=15、C=22、D=31,全量总总和为87,计算后刚好匹配你给出的预期结果:
| Company | GroupedSum |
|---|---|
| A | 68 |
| B | 72 |
| C | 65 |
| D | 56 |
内容的提问来源于stack exchange,提问作者happy_frappy_dingdong
相关产品推荐
相关产品推荐

