You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DAX中COUNT函数搭配ALL使用无效,百分比始终为100%

问题分析与解决方法

你的问题核心在于变量的计算上下文:
你定义的PaymentCount变量是在当前筛选上下文(比如当前行对应的payment_method_id筛选条件)下计算出的数值,当把这个变量代入CALCULATE中时,它不会因为ALL移除筛选而重新计算,而是直接复用之前的结果。这就导致分子和分母完全相等,结果自然是1(100%)。

修正后的度量值写法

可以用两种方式解决:

方式一:直接在CALCULATE中重新计算总数

Count % = 
DIVIDE(
    COUNT('Pos Payments'[payment_method_id]),
    CALCULATE(
        COUNT('Pos Payments'[payment_method_id]),
        ALL('Pos Payments'[payment_method_id])
    )
)

方式二:拆分变量,分别计算当前计数和全局总数

Count % = 
Var CurrentCount = COUNT('Pos Payments'[payment_method_id])
Var TotalCount = CALCULATE(COUNT('Pos Payments'[payment_method_id]), ALL('Pos Payments'[payment_method_id]))
RETURN DIVIDE(CurrentCount, TotalCount)

你之前用SUM测试正常,是因为当时的写法应该是直接在CALCULATE中编写SUM逻辑,而非引用外部变量,所以上下文切换能正常生效。修改后,ALL会正确移除payment_method_id的筛选,计算出全局总数量,再和当前分组的计数做除法得到正确占比。

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:45:30