如何基于关联列在Power BI中仅显示符合条件的Hazard列值
解决Power BI中仅显示对应Level为Medium/High的Hazard数值问题
方法1:通过DAX计算列生成处理后的值
直接为每个Hazard列创建对应的计算列,仅在对应Level为Medium或High时保留原数值,否则返回空值:
以处理「Hazard 1」为例,在数据模型中新建计算列,输入以下DAX公式(替换表名为你的实际表名):
显示Hazard 1 = IF( '数据表'[Level 1] IN {"Medium", "High"}, '数据表'[Hazard 1], BLANK() )
按同样逻辑,复制公式并替换对应的Hazard和Level列名(比如显示Hazard 2对应Level 2),生成所有处理后的列。之后直接用这些新列做可视化,空值会自动不显示。
方法2:可视化组件内设置条件隐藏(无需修改数据模型)
如果不想新增列,可直接在可视化层通过条件格式隐藏不符合条件的值:
- 添加表格/矩阵组件,导入所有Hazard和Level列
- 选中某一Hazard列(如Hazard 1),打开「条件格式」→「字体颜色」
- 选择「规则」类型,设置规则:当[Level 1]不属于{"Medium", "High"}时,将字体颜色设为与表格背景色一致(比如白色),视觉上就会隐藏不符合条件的值
- 为每个Hazard列重复上述操作,绑定对应的Level列规则
批量处理方案(适合多列场景)
如果Hazard和Level列数量较多,可通过Power Query逆透视来简化操作:
- 进入Power Query编辑器,选中所有Hazard和Level列,点击「转换」→「逆透视列」→「逆透视列对」
- 生成
Attribute(如"Hazard 1"、"Level 1")和Value列后,添加自定义列提取数字后缀(比如用Text.AfterDelimiter([Attribute], " ")提取1、2、3) - 筛选
Attribute包含"Level"的行,保留Value为Medium/High的记录,再通过数字后缀关联对应的Hazard值,最后按需透视回原结构或直接用于可视化
内容的提问来源于stack exchange,提问作者user111103
相关产品推荐
相关产品推荐

