Power BI如何实现筛选后按年度计算经纪人价值平均值
问题与解决方案
问题描述
现有一张包含「经纪人名称」「价值」「年份」的表,仪表板设置了Broker单选择切片器,需制作折线堆叠柱形图:
- 柱形:展示切片选中经纪人的年度Value
- 折线:展示所有经纪人(A、B)的年度平均Value
示例:选中A时,柱形为2020年100、2021年200;折线应为2020年250、2021年350。
当前创建的度量值:
Consensus = CALCULATE(SUM(Broker[Value])/DISTINCTCOUNT(Broker[Broker]), ALLSELECTED())
该度量值返回所有年份的整体平均值(如300),无法随X轴的Year维度变化。
修改方案
问题核心是ALLSELECTED()会清除所有筛选上下文(包括年份的筛选),导致计算的是全时段的平均。需要只清除「经纪人」的筛选,保留「年份」的上下文,修改后的度量值如下:
方案1:使用ALL(Broker[Broker])
Consensus = CALCULATE( SUM(Broker[Value])/DISTINCTCOUNT(Broker[Broker]), ALL(Broker[Broker]) )
方案2:使用REMOVEFILTERS(Broker[Broker])(DAX较新版本推荐)
Consensus = CALCULATE( SUM(Broker[Value])/DISTINCTCOUNT(Broker[Broker]), REMOVEFILTERS(Broker[Broker]) )
说明
ALL(Broker[Broker]):仅清除「经纪人」列的筛选,保留其他列(如年份)的筛选上下文,这样会按每个年份计算所有经纪人的Value总和除以经纪人数量,得到年度平均。REMOVEFILTERS(Broker[Broker]):作用与ALL(Broker[Broker])一致,是DAX较新版本中更直观的写法,专门用于移除指定列的筛选。
内容的提问来源于stack exchange,提问作者Fankastic
相关产品推荐
相关产品推荐

