如何用Power BI或T-SQL删除flow含NULL/0的SiteID对应的所有行
需求完全可以实现,以下是两种场景下的落地方案:
方案1:T-SQL实现(优先推荐,大数据量处理效率更高)
无需逐行遍历全表,直接使用数据库的集合运算即可完成,200万行数据执行效率远高于逐行逻辑:
-- 方案A:直接在原表删除不符合要求的记录 DELETE FROM 你的业务表名 WHERE SiteID IN ( SELECT DISTINCT SiteID FROM 你的业务表名 WHERE flow IS NULL OR flow = 0 ) -- 方案B:不修改原表,将清洗后的数据写入新表(更安全) SELECT * INTO 清洗后的结果表名 FROM 你的业务表名 WHERE SiteID NOT IN ( SELECT DISTINCT SiteID FROM 你的业务表名 WHERE flow IS NULL OR flow = 0 )
优化提示:如果
SiteID和flow字段没有建索引,执行前先建索引可以大幅提升处理速度,200万行数据通常可在1分钟内处理完成。
方案2:Power BI 内置Power Query工具实现
如果需要在Power BI的数据准备环节完成清洗,可按以下步骤操作:
- 将数据集导入Power Query编辑器
- 选择「转换」选项卡 -> 点击「分组依据」,分组字段选择
SiteID,新列名设置为存在无效Flow,操作选择「自定义」,公式输入:List.AnyTrue(List.Contains({null,0}, [flow])) - 筛选
存在无效Flow列,仅保留值为False的行,即可过滤掉所有存在无效flow的SiteID对应全部记录 - 删除统计用的辅助列,导出或加载清洗后的数据即可
提示:200万行数据用Power Query处理需要预留足够内存,处理时长通常在3-10分钟左右。
内容的提问来源于stack exchange,提问作者AndreC
相关产品推荐
相关产品推荐

