PowerBI中Measure未正确统计多对多筛选下的Scans行数
问题分析与解决方案
问题原因
你的度量值TITLE_SCANS = "Scans (" & COUNTROWS(ALLSELECTED(Scans)) & ")"在多对多筛选下失效,核心原因是ALLSELECTED(Scans)的作用逻辑:
- ALLSELECTED(表名)仅识别直接应用于该表的筛选器,比如一对多关系中,Tools/Teams的筛选是直接传递到Scans表的,因此能被正确捕捉。
- 而ProductsDistinct与Scans是多对多关系,筛选器是通过关联表间接作用于Scans的,不属于Scans的直接筛选器。此时ALLSELECTED(Scans)会忽略这种间接筛选,直接返回整个Scans表的行数。
- 可视化表格能正确显示筛选结果,是因为表格会自动继承所有关联表的筛选上下文(包括多对多的间接筛选),不受ALLSELECTED的限制。
解决方案
不需要使用KEEPFILTERS,只需调整度量值逻辑,让它捕捉所有筛选上下文(包括间接的多对多筛选),以下两种写法均可:
方法一:直接使用COUNTROWS(Scans)
这种写法会自动继承当前所有筛选上下文(无论是一对多还是多对多),统计筛选后的Scans行数:
TITLE_SCANS = "Scans (" & COUNTROWS(Scans) & ")"
方法二:结合CALCULATETABLE与ALLSELECTED()
如果你的场景需要保留外部筛选上下文(比如可视化内部存在行级筛选时),可以用不带参数的ALLSELECTED()来保留所有外部筛选,再用CALCULATETABLE传递给Scans:
TITLE_SCANS = "Scans (" & COUNTROWS(CALCULATETABLE(Scans, ALLSELECTED())) & ")"
两种写法都能解决多对多筛选下的统计问题,可根据你的具体场景选择。
内容的提问来源于stack exchange,提问作者sisdog
相关产品推荐
相关产品推荐

