Power BI矩阵度量值使用CALCULATE筛选时数值不显示问题
问题产生原因
- 矩阵视觉对象的行维度使用
Line字段,且配置了视觉级筛选仅展示AB、AC、AG三类,因此每个值单元格的初始筛选上下文为当前月份+当前行对应的Line值。 - 原DAX代码中计算AB、AC行分母时,使用的
FILTER ( 'table1', table1[Line] = "ST" )是在当前筛选上下文限定的表范围内做筛选:当单元格上下文为Line=AB或Line=AC时,传入FILTER的table1已经被筛选为仅包含当前Line值的行,不存在Line="ST"的记录,因此分母计算结果为空,DIVIDE函数返回空值,无法在视觉对象中渲染。 - AG行使用固定值4作为分母,计算过程不依赖表中ST行的数据,不受当前Line筛选上下文的影响,因此可以正常显示结果。
修复方案
不需要为AB、AC、AG分别写分支判断,三类Line的计算逻辑完全一致:均为当前行Line的当月金额 / 当月ST对应的金额,计算分母时只需先清除Line维度的现有筛选,再筛选Line="ST"即可。
- 保留矩阵的视觉级筛选配置:行维度放
Line、列维度放Month,筛选器中勾选Line的AB、AC、AG三个值,排除ST。 - 将原度量值替换为以下代码:
(%) Amount ST = VAR MonthlySTAmount = CALCULATE ( SUM ( table1[Amount] ), REMOVEFILTERS ( table1[Line] ), // 清除行维度对Line的筛选限制 table1[Line] = "ST" // 筛选出ST行的金额 ) RETURN DIVIDE ( SUM ( table1[Amount] ), MonthlySTAmount )
- 将度量值的格式设置为百分比,保留2位小数即可完全匹配预期结果:
- 1月:AB 50.00%、AC 10.00%、AG 75.00%
- 2月:AB 50.00%、AC 10.00%、AG 20.00%
- 3月:AB 7.69%、AC 9.23%、AG 3.08%
注:如果使用的Power BI版本不支持
REMOVEFILTERS函数,可以将对应参数替换为ALL( table1[Line] )实现相同的清除筛选效果,代码逻辑不变。
内容的提问来源于stack exchange,提问作者ofeliajesus
相关产品推荐
相关产品推荐

