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
相关产品推荐
相关产品推荐

