Power BI中单元格值除以整列求和失败,DAX公式报错求助
解决方案:Power BI DAX计算单元格值除以列总计的问题
错误原因分析
报错The SUM function only accepts a column reference as the argument number 1.的核心问题:
- 若
[Weightage Selection]是度量值,SUM函数仅支持传入物理列,不能直接包裹度量值; - 若
[Weightage Selection]是物理列,直接调用SUM([Weightage Selection])会受当前行上下文限制,无法获取列的全局总计。
针对两种场景的修复公式
场景1:Weightage Selection是物理列
用CALCULATE+ALL清除行上下文,获取列的全局总计(对应你Excel示例中的22500):
Agg Forecast Accuracy = IFERROR( ( '你的表名'[Weightage Selection] / CALCULATE(SUM('你的表名'[Weightage Selection]), ALL('你的表名')) ) * [Forecast Accuracy], 0 )
- 替换
'你的表名'为实际表名称; ALL('你的表名')会移除当前表的所有行筛选,确保分母是整个列的总计值。
场景2:Weightage Selection是度量值
直接用CALCULATE获取度量值的全局总计结果,无需SUM包裹:
Agg Forecast Accuracy = IFERROR( ( [Weightage Selection] / CALCULATE([Weightage Selection], ALL('你的表名')) ) * [Forecast Accuracy], 0 )
CALCULATE([Weightage Selection], ALL('你的表名'))会计算忽略当前行筛选的度量值总计,作为分母。
匹配Excel示例的逻辑
你的Excel公式(2500/22500)*100中:
- 2500 = 当前行的
Weightage Selection值 - 22500 =
Weightage Selection列的全局总计
修复后的DAX公式完全对应这个逻辑,通过CALCULATE+ALL确保分母始终是列的总计,不受当前行上下文影响。
内容的提问来源于stack exchange,提问作者Mr Pool
相关产品推荐
相关产品推荐

