Power BI虚拟表合计异常求助:合计列计算逻辑错误
Power BI 虚拟表合计列计算错误修复方案
问题描述
虚拟表最后一列合计值应为各行TOTAL列的求和,但当前AMOUNT INPUT的合计沿用了行级公式逻辑(SUM(Q.INPUT) * [AVERAGE PRICE]),导致结果错误(红色为错误值,绿色为正确值)。
当前使用的DAX公式:
AVERAGE PRICE = DIVIDE ( SUMX (zzzAcqVen1, zzzAcqVen1[ACQ AMOUNT AT COST]), SUMX (zzzAcqVen1, zzzAcqVen1[QUANTITY PURCHASED]) )
AMOUNT INPUT = SUM (zzzAcqVen1[Q. INPUT]) * [AVERAGE PRICE]
错误原因
AMOUNT INPUT的当前写法是上下文敏感的聚合计算:在每行时,它计算当前行分组下的SUM(Q.INPUT)乘以该行的AVERAGE PRICE;但在合计行时,它会计算整个表的SUM(Q.INPUT)乘以全局的AVERAGE PRICE,而非对每行结果求和。
修复方案
方案1:用SUMX迭代计算(推荐)
直接用SUMX逐行计算后求和,确保合计是各行结果的累加:
AMOUNT INPUT = SUMX( zzzAcqVen1, zzzAcqVen1[Q. INPUT] * [AVERAGE PRICE] )
SUMX会遍历zzzAcqVen1的每一行,计算该行的Q.INPUT * AVERAGE PRICE,最后将所有行的结果汇总,完全符合合计值的预期逻辑。
方案2:上下文判断适配行级与合计逻辑
如果需要保留行级公式的写法,同时让合计行正确计算,可以用ISINSCOPE判断当前上下文:
AMOUNT INPUT = IF( ISINSCOPE(zzzAcqVen1[分组列名]), // 替换为你实际的行分组列(比如产品ID、类别等) SUM(zzzAcqVen1[Q. INPUT]) * [AVERAGE PRICE], SUMX(zzzAcqVen1, zzzAcqVen1[Q. INPUT] * [AVERAGE PRICE]) )
当处于行级分组上下文时,使用原行级公式;当处于合计上下文时,切换为SUMX求和逻辑。
内容的提问来源于stack exchange,提问作者Daniele
相关产品推荐
相关产品推荐

