Power BI DAX:筛选%_calc<0.6的分类变量col值并单独展示
解决Power BI中动态筛选%_calc<0.6的列问题
首先明确核心:你要的是动态隐藏不符合条件的列,而非过滤行。普通度量值的布尔筛选只作用于行上下文,没法直接控制列的显示,得用以下两种针对性方案:
方案一:字段参数(推荐,支持实时更新)
创建字段参数
点击「建模」选项卡 → 「字段参数」,把所有需要评估的col列添加进去,给参数命名(比如「动态列参数」)。编写对应度量值
写一个度量值,根据选中的字段参数计算对应列的%_calc:动态列%_calc = VAR 当前列 = SELECTEDVALUE('动态列参数'[动态列参数]) RETURN SWITCH( 当前列, "Expiration", DIVIDE(CALCULATE(SUM('你的表'[数值列]), '你的表'[col]="Expiration"), CALCULATE(SUM('你的表'[数值列]), ALL('你的表'[col])), 0), "其他列1", DIVIDE(CALCULATE(SUM('你的表'[数值列]), '你的表'[col]="其他列1"), CALCULATE(SUM('你的表'[数值列]), ALL('你的表'[col])), 0), // 按上述格式添加所有需要评估的列 0 )这里用
ALL('你的表'[col])确保总求和是全列范围的,避免上下文干扰计算结果。配置视觉对象与筛选
- 插入矩阵(或表格),把「动态列参数」拖到「列」区域,「动态列%_calc」拖到「值」区域。
- 打开「视觉级别筛选器」,添加「动态列%_calc」,设置筛选条件为「小于」→ 0.6。
完成后只会显示%_calc<0.6的列。
方案二:计算表(适合静态场景)
如果不需要实时更新,可直接生成仅包含符合条件列的计算表:
符合条件的列 = FILTER( ADDCOLUMNS( VALUES('你的表'[col]), "计算占比", DIVIDE(CALCULATE(SUM('你的表'[数值列])), CALCULATE(SUM('你的表'[数值列]), ALL('你的表'[col])), 0) ), [计算占比] < 0.6 )
生成该表后,将其col字段与原表建立关系,后续在视觉对象中仅使用这个计算表的col列,就能只展示符合条件的列。
为什么之前的方法无效?
你之前用SWITCH或布尔值度量值,本质是在行上下文中做判断,但Power BI默认的表格/卡片是静态选中列,行级筛选不会影响列的显示状态,因此只会过滤行,无法隐藏不符合条件的列,必须用动态列的方式(字段参数或计算表)来控制列的展示。
内容的提问来源于stack exchange,提问作者budding pro
相关产品推荐
相关产品推荐

