Power Pivot中DAX计算价差量差总计不符合预期 如何按明细行求和?
解决方案
你遇到的是DAX度量值经典的上下文总计计算逻辑和业务预期不符的问题,要实现明细行求和的总计规则,使用SUMX迭代明细维度聚合即可:
第一步:修正原有度量值的语法错误
你提供的原有DAX有两处语法问题,先调整:
FC Sales/kg公式末尾缺失右括号,修正为:
FC Sales/kg = DIVIDE([FC Sales EUR], [FC Sales KG])
Price Variance公式中使用了非标准乘号x,替换为DAX标准运算符*
第二步:重写差异度量值适配总计求和规则
假设你的透视表行维度为Product(如果有多个行维度比如日期、区域,对应调整SUMX的迭代维度即可),重写后的度量值如下:
-- 数量差异:先逐产品计算再求和 Quantity Variance = SUMX ( VALUES ( 'data'[Product] ), ( [ACT Sales KG] - [FC Sales KG] ) * [FC Sales/kg] )
-- 价格差异:先逐产品计算再求和 Price Variance = SUMX ( VALUES ( 'data'[Product] ), ( [ACT Sales/kg] - [FC Sales/kg] ) * [ACT Sales KG] )
逻辑说明
VALUES('data'[Product])会提取当前筛选上下文下的所有产品列表SUMX会逐行遍历每个产品,先计算单产品的差异值,最后将所有产品的结果汇总,完全符合你需要的「明细行值简单求和」的总计规则- 如果你的透视表行维度包含多个字段(比如产品+日期),只需要把
SUMX的第一个参数替换为维度组合即可,示例:
-- 多维度适配版本 Quantity Variance = SUMX ( SUMMARIZE ( 'data', 'data'[Product], 'data'[Date] ), ( [ACT Sales KG] - [FC Sales KG] ) * [FC Sales/kg] )
注:如果你的PowerPivot区域设置使用分号作为公式分隔符,把上述公式中的逗号替换为分号即可。
内容的提问来源于stack exchange,提问作者mpn275
相关产品推荐
相关产品推荐

