Power BI Query中如何删除指定列全为NULL的整行数据
Power BI Query 删除数值列全为NULL无效行的方法
已知表中前几列KPI描述类字段永远非空,仅需过滤掉后续所有数值列均为NULL的行即可,以下两种方法都可以实现,新手优先选第一种零代码操作。
方法一:图形界面点选操作(无代码,适合初学者)
- 打开Power Query编辑器,定位到需要处理的目标表
- 按住Ctrl键,鼠标逐个点选所有后续存储实际数值的列(不要选中KPI名称、月份这类前置描述列)
- 点击顶部「主页」选项卡下的「删除行」下拉按钮,选择「删除空行」
该操作的逻辑是:仅删除当前选中的所有列同时为空的行,完全匹配你的过滤需求。由于前置描述列永远非空,不会出现误删有效行的问题。
- 核对剩余行数据符合预期后,点击「关闭并应用」即可。
方法二:M代码批量操作(适合数值列较多,不想手动选列的场景)
如果数值列数量多,手动逐一点选效率低,可以直接通过M代码批量实现过滤:
- 先在「视图」选项卡勾选「公式栏」,让编辑区顶部显示M代码输入框
- 在现有查询步骤的最后新增一个过滤步骤,核心代码逻辑是判断指定数值列是否存在非NULL值,保留存在非NULL值的行,示例代码如下:
// 请将尖括号内容替换为你自己表的实际信息 #"过滤全空数值行" = Table.SelectRows(<上一步骤的名称>, each not List.IsEmpty(List.RemoveNulls(Record.FieldValues(Record.SelectFields(_, {<所有数值列名,用英文双引号包裹,逗号分隔>})))))
举个实际使用示例:如果上一步骤名为#"完成逆透视",数值列分别是"1月指标"、"2月指标"、"3月指标",替换后的代码为:
#"过滤全空数值行" = Table.SelectRows(#"完成逆透视", each not List.IsEmpty(List.RemoveNulls(Record.FieldValues(Record.SelectFields(_, {"1月指标","2月指标","3月指标"})))))
- 输入完成后按回车,系统会自动完成行过滤,核对结果无误即可保存。
操作提示:正式修改前可以右键点击目标查询,选择「重复」先做一份备份,确认过滤结果正确后再删除备份即可,避免操作失误丢失数据。
内容的提问来源于stack exchange,提问作者rlsrls
相关产品推荐
相关产品推荐

