Power BI表格数据清理:关联Excel文件修正错误列数据
在Power BI中用类似LEFT JOIN+COALESCE的方式修正Excel数据
哈哈,这个需求太常见了!在Power BI里实现和SQL里LEFT JOIN + COALESCE完全一样的效果一点都不难,我给你拆解成具体的步骤,两种方法任你选:
方法一:Power Query预处理(推荐,导入时完成数据清理)
这是最贴合你SQL思路的方式,在数据加载到模型前就完成修正:
- 先把两个Excel文件都导入Power BI,进入Power Query编辑器
- 选中你的错误表(
table bad),点击顶部菜单栏的【合并查询】→【合并查询作为新查询】- 在弹出的窗口里,选择正确表(
table correct)作为合并的第二张表 - 连接类型选择左外部(从第一个)(对应SQL的LEFT JOIN)
- 匹配列选两张表的
ID列,点击确定
- 在弹出的窗口里,选择正确表(
- 此时你的表会多出一列(默认叫
table correct),点击列标题右侧的展开按钮,只勾选colx列,取消“使用原始列名作为前缀”的勾选,点击确定 - 现在添加一个自定义列来实现COALESCE的逻辑:
- 点击【添加列】→【自定义列】,输入公式:
或者用更直观的条件判断:Coalesce([colx], [col1])if [colx] <> null then [colx] else [col1]
- 点击【添加列】→【自定义列】,输入公式:
- 删掉原来的
col1和colx列,把新的自定义列重命名为col1 - 点击【关闭并应用】,回到Power BI界面就得到你想要的修正后表格了
方法二:DAX计算列(适合保留原始数据的场景)
如果你想保留原始的错误表数据,同时在模型里生成修正后的列,可以用DAX的COALESCE函数:
- 确保两张表已经通过
ID列建立了一对多关系(错误表是“多”端,正确表是“一”端,因为每个ID在正确表里应该是唯一的) - 进入数据视图,选中
table bad,点击【建模】→【新建列】,输入DAX公式:
这个公式的逻辑和SQL里的COALESCE完全一致:如果正确表中有对应ID的col1 = COALESCE(RELATED('table correct'[colx]), 'table bad'[col1])colx值,就用它;没有的话就保留错误表原来的col1值
两种方法都能实现你要的效果,推荐用Power Query的方式,因为数据清理在加载前完成,模型会更简洁~
内容的提问来源于stack exchange,提问作者skyline01
相关产品推荐
相关产品推荐

