PowerPivot总计问题:如何计算所有组的变动百分比总和?
解决PowerPivot总计行中所有组变动百分比总和的问题
嘿,这个需求我之前帮同事处理过类似的,咱们直接说解决方案:
你现在用硬编码组名的方式单独计算每个组的变动百分比,这种方式在总计行里没法自动汇总,所以最好做一个动态计算所有组变动百分比总和的度量值,不用依赖单独的组度量值,以后新增组也不用改公式。
推荐的DAX度量值写法
创建一个新的度量值,命名比如Total Variance % Sum,公式如下:
Total Variance % Sum := SUMX( VALUES(你的表名[分组列名]), // 替换成你实际的表和分组列(比如table[name]) ABS( DIVIDE( [Actual] - [Forecast], [Actual], 0 // 当Actual为0时返回0,你也可以改成BLANK()或者其他值 ) ) )
公式解释
VALUES(你的表名[分组列名]):会自动获取当前报表上下文里的所有不重复组(总计行里就是所有组,分组行里就是当前行的组)SUMX:逐个迭代每个组,计算该组的变动百分比绝对值,然后把所有结果累加起来DIVIDE:比直接用/更安全,能避免Actual为0时出现错误,第三个参数可以自定义除数为0时的返回值
备选方案(如果想复用现有组度量值)
如果你不想放弃已经写好的Group1 Acc这类单独组度量值,也可以直接把它们加起来:
Total Variance % Sum := [Group1 Acc] + [Group2 Acc] + [Group3 Acc]
但这种方法的缺点很明显——以后新增组的话,你得手动修改这个公式,灵活性差很多,所以更推荐第一种动态方法。
注意事项
- 记得把公式里的
你的表名[分组列名]替换成你实际使用的表和列 - 如果报表有其他筛选条件,这个度量值会自动遵循筛选上下文,只计算筛选后的组的总和
- 测试一下Actual为0的场景,调整
DIVIDE的第三个参数,确保报表不会出现错误值
内容的提问来源于stack exchange,提问作者Tfo
相关产品推荐
相关产品推荐

