将Excel SUMPRODUCT公式转为Power BI DAX度量值,解决SumX总计失效问题
解决Power BI中SumX总计行不准的问题
Excel里的=SUMPRODUCT(AK14:AK37,AM14:AM37)本质是计算两列对应行相乘后的总和,转成百分比后得到98.77%。对应到Power BI中,Column1对应原AK列,Column3对应原AM列,你用SumX时出现分组行计算正确但总计行结果错误的情况,可按以下方法处理:
基础度量值写法
如果仅需计算全表的乘积和,直接使用:
乘积总和 = SUMX('你的表名', '你的表名'[Column1] * '你的表名'[Column3])
若要转换为百分比(示例以Column1的总和为分母,可根据实际需求替换):
乘积百分比 = DIVIDE( SUMX('你的表名', '你的表名'[Column1] * '你的表名'[Column3]), SUM('你的表名'[Column1]) )
修复总计行错误
矩阵分组行计算正确但总计行出错,核心原因是矩阵的筛选上下文限制了总计的计算范围。需让总计行无视分组筛选,计算所有目标行的乘积和:
正确的乘积总和 = VAR 筛选后数据 = ALLSELECTED('你的表名') RETURN IF( HASONEVALUE('你的表名'[你的矩阵分组列]), // 判断当前行是否为矩阵分组行 SUMX('你的表名', '你的表名'[Column1] * '你的表名'[Column3]), SUMX(筛选后数据, '你的表名'[Column1] * '你的表名'[Column3]) )
也可使用更简洁的写法:
正确的乘积总和 = CALCULATE( SUMX('你的表名', '你的表名'[Column1] * '你的表名'[Column3]), IF(HASONEVALUE('你的表名'[你的矩阵分组列]), , ALLSELECTED('你的表名')) )
逻辑说明
ALLSELECTED会保留你手动添加的报表筛选条件,仅清除矩阵分组带来的筛选上下文,确保总计行计算的是所有选中数据的乘积和。HASONEVALUE用于区分分组行与总计行:分组行按当前分组的筛选范围计算,总计行则基于全部选中数据计算乘积和。
内容的提问来源于stack exchange,提问作者Joshua Ehd Silvio
相关产品推荐
相关产品推荐

