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

Power BI中用度量值计算双定性变量占总计比例及ALLSELECTED解析

DAX度量值计算占总计数的百分比问题解答

示例数据

example = {("Alice", "Yellow"),("Alice", "Yellow"),("Mark", "Blue"),("Mark", "Blue"), ("Mark", "Blue"), ("Mark", "Blue"), ("Alice", "Red"), ("Mark", "Yellow"), ("Alice", "Blue")}

需求说明

在簇状条形图中添加数据标签,显示每个「姓名+颜色」组合的出现次数占所有数据总计数的百分比。比如:

  • Alice的蓝色条形标签为11%(1/9)
  • Mark的蓝色条形标签为44%(4/9)

尝试与疑问

我已经能用Power Query的「分组依据」功能实现,但想仅通过DAX度量值完成。梳理的步骤是:

  1. 获取总行数作为分母;
  2. 获取「姓名+颜色」组合的计数作为分子;
  3. 分子除以分母得到百分比。

我写出了CALCULATE(COUNTROWS(example)),能正确得到每个组合的计数,但不知道如何处理除法的分子分母关系。

后来找到可行的度量值方案,但不理解ALLSELECTED的作用:

已实现的度量值代码

  • 组合计数度量值:
num of occurences = 
CALCULATE (
    COUNT ( example[Value1] )
)
  • 总计数度量值:
total cases selection only example = CALCULATE ([num of occurences], ALLSELECTED(example[Value2], example[Value1]))
  • 百分比度量值:
proportion = DIVIDE([num of occurences], [total cases selection only example])

核心疑问:明明没加任何手动筛选,为什么移除ALLSELECTED就无法得到总计数?


原理解释

关键在于DAX的筛选上下文:簇状条形图的每个数据点(条形)都会自动生成「姓名+颜色」的行筛选上下文——也就是说,默认情况下,DAX只会统计当前条形对应的组合数据。

ALLSELECTED的作用

它会移除当前可视化对象(簇状条形图)中对example[Value1](姓名)和example[Value2](颜色)的局部筛选,让CALCULATE能统计整个图表范围内的总数据量(也就是9),而不是当前条形的单个计数。

你觉得没加筛选,但条形图本身就是筛选器——每个条形都限定了「某个人+某个颜色」的范围,ALLSELECTED就是帮你跳出这个局部范围,拿到全局总计数。

替代方案对比

如果用ALL(example)替代ALLSELECTED,也能得到总计数,但ALLSELECTED更灵活:之后如果添加切片器等外部筛选,它会自动适配筛选后的总计数;而ALL(example)会始终返回整个表的总行数,不受外部筛选影响。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:13:11