Power BI:如何让矩阵识别外部DimensionA筛选的生效状态?
Power BI矩阵响应外部筛选的正确实现
问题原因
你当前的度量值在矩阵内失效,是因为矩阵中使用DimensionA作为行/列字段时,会自动在视觉筛选上下文中对DimensionA应用筛选,导致ISFILTERED(DimensionA)始终返回TRUE——无论外部视觉筛选器是否生效,矩阵自身的行/列筛选都会触发这个判断条件,所以度量值一直返回求和结果。
解决方案
修改度量值,通过区分外部筛选器带来的维度集合和整个维度表的集合,来判断是否存在外部筛选:
measure = VAR ExternalFilteredItems = COUNTROWS(ALLSELECTED(DimensionA)) VAR TotalDimensionItems = COUNTROWS(ALL(DimensionA)) RETURN IF(ExternalFilteredItems < TotalDimensionItems, CALCULATE(SUM(Fact[colA])), BLANK())
逻辑说明
ALLSELECTED(DimensionA):返回经过外部视觉筛选器筛选后的DimensionA集合(不受矩阵行/列内部筛选的影响)ALL(DimensionA):返回DimensionA表的所有条目,即无任何筛选时的总数量- 当外部筛选器生效时,
ExternalFilteredItems会小于TotalDimensionItems,此时返回求和结果;反之返回空值,实现矩阵仅在外部筛选生效时显示数据的需求
另一种可选写法
如果你需要判断是否有任意外部筛选(包括单值或多值筛选),也可以使用以下写法:
measure = VAR HasExternalFilter = NOT(ISEMPTY(EXCEPT(ALL(DimensionA), ALLSELECTED(DimensionA)))) RETURN IF(HasExternalFilter, CALCULATE(SUM(Fact[colA])), BLANK())
内容的提问来源于stack exchange,提问作者Nelson Gomes Matias
相关产品推荐
相关产品推荐

