如何基于CODE切片器所选值统计对应ZONE的总行数?
解决Power BI中基于CODE切片器展示对应ZONE总行数的问题
核心思路
要实现这个需求,关键是先获取选中CODE对应的ZONE值,再移除CODE列的筛选条件,统计该ZONE在全量数据中的总行数。你之前用MAX函数得到1或2,是因为没有跳出当前CODE的筛选范围,只统计了选中CODE本身的行数。
解决方案(DAX度量值)
下面提供两种可行的DAX写法,替换你的原有度量值即可:
方法1:结合ALLSELECTED与ALL函数
ZONE总行数 = VAR SelectedZone = CALCULATE(MAX('你的表名'[ZONE]), ALLSELECTED('你的表名'[CODE])) RETURN CALCULATE(COUNTROWS('你的表名'), ALL('你的表名'[CODE]), '你的表名'[ZONE] = SelectedZone)
SelectedZone:通过ALLSELECTED保留切片器的CODE选择,获取该CODE对应的唯一ZONE值(因为单个CODE对应唯一ZONE,MAX可以准确获取)- 后续
CALCULATE用ALL('你的表名'[CODE])移除CODE列的筛选,统计该ZONE在全表中的总行数
方法2:用LOOKUPVALUE匹配ZONE
ZONE总行数 = VAR SelectedCode = SELECTEDVALUE('你的表名'[CODE]) VAR SelectedZone = LOOKUPVALUE('你的表名'[ZONE], '你的表名'[CODE], SelectedCode) RETURN CALCULATE(COUNTROWS('你的表名'), '你的表名'[ZONE] = SelectedZone)
SelectedCode直接获取切片器选中的单个CODE值LOOKUPVALUE根据CODE匹配对应的ZONECALCULATE默认会忽略切片器的CODE筛选,直接统计目标ZONE的所有行数
验证效果
- 选择CODE=1001时,度量值会返回ZONE=AA的全表行数3
- 选择CODE=1003时,同样会返回ZONE=AA的行数3
内容的提问来源于stack exchange,提问作者Cain
相关产品推荐
相关产品推荐

