Power BI合并查询能否实现一个键精确匹配、第二个键模糊匹配?
结论
Power BI完全支持「单字段精确匹配+同分组内字段模糊匹配」的两表合并需求,使用内置的Power Query(数据转换编辑器)即可实现,不需要安装第三方插件或付费组件。
实现方案
你可以根据自己使用的Power BI版本,选对应方案操作:
方案1:全版本通用方案(自定义程度最高)
这个方案所有Power BI版本都能使用,匹配规则可以完全自主控制,适合需要自定义相似度判断逻辑的场景:
- 第一步:将两张表导入Power BI后,点击顶部菜单栏的「转换数据」进入Power Query编辑器。
- 第二步:完成Key列的精确关联:选中表1,点击「合并查询」,如果需要保留原表、在新表生成合并结果就选「将查询合并为新查询」。在弹出的合并配置窗口中,关联字段分别选表1的
Key列和表2的Key列,连接种类选择「内部(仅匹配行)」,点击确定。这一步会自动把所有Key值相同的行两两配对,比如Key=1的Michael会和同Key下的Mike、Andrea分别生成配对行,Key=2的Robert会和同Key下的Robbie、Michelle分别生成配对行,初步得到4行同Key匹配结果。 - 第三步:点击合并生成的表2列右上角的展开按钮,勾选需要保留的
Name2、info_b字段,取消勾选「使用原始列名作为前缀」,完成字段展开。 - 第四步:新增自定义列做名称模糊匹配判断:点击「添加列」->「自定义列」,如果是做昵称、简称类的常规模糊匹配,直接用内置的模糊匹配函数即可,公式写为
= Text.FuzzyEquals([Name1], [Name2], [IgnoreCase=true, Threshold=0.7])。其中Threshold是相似度阈值,取值范围0-1,数值越高对名称相似度要求越严格,0.7是昵称匹配场景下比较常用的阈值,你可以根据自己的实际数据测试调整。如果需要用编辑距离、Jaro-Winkler距离等更特殊的相似度规则,也可以自己写自定义函数在这一步调用。 - 第五步:筛选新增的自定义列,只保留值为
true的行,删除辅助判断的自定义列,就能得到和你预期完全一致的结果:Key=1关联Michael和Mike,对应info_a=a、info_b=aa;Key=2关联Robert和Robbie,对应info_a=b、info_b=bb。
方案2:新版本快速方案(操作更简便)
如果你用的是2021年及之后更新的Power BI版本,合并功能已经内置了分组模糊匹配能力,不需要手动计算相似度:
- 打开合并查询配置窗口后,先勾选「使用模糊匹配执行合并」,点开下方的「模糊匹配选项」,在「按列分组匹配」中选择
Key列,设置好你需要的相似度阈值,再把主关联字段设为两表的Key列,连接种类选内连接,确定后直接展开表2的对应字段,就能直接得到同Key内名称模糊匹配的结果,操作步骤更简洁,大数据量下性能也更好。
注意事项
- 相似度阈值一定要结合实际业务数据测试调整,阈值过低容易匹配上不相关的名称,阈值过高会漏匹配符合要求的记录。
- 如果数据量超过10万行,优先使用方案2的内置模糊匹配功能,性能比手动写自定义列计算相似度高30%以上。
内容的提问来源于stack exchange,提问作者belle
相关产品推荐
相关产品推荐

