You need to enable JavaScript to run this app. Power Query(PowerBI) 解决双联系人表多对多关系的ID-Code关联问题
优惠活动
大模型
产品
解决方案
定价
更多

Power Query(PowerBI) 解决双联系人表多对多关系的ID-Code关联问题

两表联系人关联的落地方案

第一步:先做两侧的“人粒度”预聚合,跳过明细直接匹配的误区

你之前尝试用姓名+email组合当唯一键的思路走不通,本质是把匹配用的特征字段当成了主键的组成部分——主键只需要用已经明确的、无歧义的个人标识(表1的email、表2的Code)即可,姓名类字段存在录入误差、字段缺漏的问题,根本不适合当主键的组成部分,只能作为跨表匹配的参考特征。
你之前的核心痛点是试图直接用明细级的ID、Code和零散姓名字段做匹配,没有利用好题干里已经给出的两个天然个人唯一锚点,绕了远路:

  • 表1侧:按email字段做分组聚合,不要拿单条ID当个人标识。对每个email分组,收集组内所有非空的Last Name、Given Name值去重,形成这个人的「姓名特征集合」。聚合后表1的粒度就是1个email对应1个真实的人,所有同email的ID都属于这个人。
    比如你的示例里,聚合后表1的人维度结果是:
    • angry@mad.com:姓集合{Thompson},名集合{Susan, Suzanne},关联ID为0、1
    • glad@mad.com:姓集合{McNeil},名集合{George},关联ID为2
    • happy@sad.com:姓集合{Thompson},名集合{Suzannne},关联ID为3
  • 表2侧:按Code字段做分组聚合,不要拿单条记录当个人标识。对每个Code分组,收集组内所有非空的Last Name、Given Name值去重,形成这个人的「姓名特征集合」。聚合后表2的粒度就是1个Code对应1个真实的人。
    你的示例里聚合后表2的人维度结果是:
    • 65432:姓集合{Thompson},名集合{Susan, Suzanne}
    • 45678:姓集合{McNeil},名集合{George}
    • 25581:姓集合{Thompson},名集合{Suzanne}

这一步直接把原来“多对多明细匹配”的问题,转换成了两个人集合之间的1对1匹配问题,从根源上解决了字段缺漏的影响——哪怕同一个人下的某条记录姓或名为空,只要组内其他记录补全了对应信息,特征集合就不会缺失关键匹配线索。

第二步:基于特征集合做容错匹配,解决姓名拼写误差问题

两个侧的人维度数据聚合完成后,不需要复杂的关联逻辑,只要给每一对“表1人-表2人”的组合算一个简单的匹配得分:

  • 姓氏匹配分:对比双方的姓集合,对每个姓氏元素计算编辑距离,只要编辑距离≤2就算完全匹配,计算重合元素的占比
  • 名字匹配分:用同样的编辑距离规则,对比双方的名集合的重合占比
  • 总匹配分=姓氏匹配分+名字匹配分,把得分最高的配对拿出来,只要总得分超过设定阈值(比如≥0.6),就判定为关联成功。

拿你的示例计算的话:

  • angry@mad.com 和 65432:姓完全重合(Thompson),名完全重合(Susan、Suzanne),得分100%,直接判定关联
  • glad@mad.com 和 45678:姓完全重合(McNeil),名完全重合(George),得分100%,直接判定关联
  • happy@sad.com 和 25581:姓完全重合(Thompson),名的部分Suzannne和Suzanne编辑距离仅为1(多了一个n),匹配度90%,超过阈值,判定关联

第三步:生成最终关联映射

匹配完成后,把聚合层的关联关系反向映射回原来的明细表:

  • 同一个email下的所有ID,都对应到匹配成功的Code
  • 比如angry@mad.com下的ID0、ID1,都匹配到Code65432;happy@sad.com下的ID3匹配到Code25581;glad@mad.com下的ID2匹配到Code45678

如果遇到得分接近的两个候选配对,只需要把这几个候选的特征集合列出来人工核对即可——因为聚合到人的粒度后,总记录数会非常少,完全不需要复杂的大数据量处理,也能保证准确率。


内容的提问来源于stack exchange,提问作者Sweepster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.02 21:06:07