如何在两个数据集上执行不精确的匹配

时间:2017-04-24 16:38:24

标签: ms-access duplicates

我试图比较两个系统的两个数据集(供应商主数据)。我们正在转向一个系统,因此我们希望避免重复。问题是名称,地址等可能略有不同。例如,该名称可能以' Inc'或者'公司'或者地址可能是' St'或者' Street'。供应商的主人已被倾销到excel,所以我正在考虑将他们拉进去比较他们,但我不知道如何处理不精确的比赛。我需要比较的数据字段是:姓名,地址,电话号码,feder税号(如果已填充),联系人姓名

1 个答案:

答案 0 :(得分:1)

以下是我的进展方式。你很少会在Stack Exchange上得到这样的答案,因为你的问题如果不够集中。这是一组非常通用的步骤,并非特定于特定工具(即数据库或电子表格)。正如我在评论中所说,您需要搜索有关您使用的特定工具的具体答案(或询问新答案)。在不知道所有细节的情况下,Access在进行一些初步匹配时肯定是有用的,但您也可以直接使用Excel,甚至可以使用Oracle SQL,因为您将它作为资源。

  • 备份您的数据。
  • 复制您的数据以便进行匹配。
  • 确保两组数据的每条记录都有唯一的密钥(即自动编号字段或类似字段),这样在您确认匹配之前,记录始终可以单独识别。
  • 创建新的匹配密钥表和/或包含匹配的唯一键值列表的字段。
  • 创建新的“匹配”字段,并将关键字段复制到这些新字段中。
  • 清除所有可能的匹配字段中的数据
    • 删除句点和其他标点符号
    • 选择标准缩写并用所有记录中的相同值替换所有变体。示例:替换“公司”和“公司”与“公司”
    • 从末尾和术语之间修剪多余的空格
    • 以完全相同的方式格式化所有电话号码,或者更好地删除所有空格和标点以进行比较,不包括扩展信息:##########
    • 将多项字段解析并拆分为单独的字段。名称 - >第一,中间,姓氏字段;地址 - >街道号码,街道名称,额外的地址信息。
      • 解析过程本身可以识别和协调格式差异。
      • 允许更轻松地单独匹配条款。
    • 等等。

一旦匹配的字段被充分擦洗,现在匹配不同的字段。

  • 定义匹配优先级,即哪个或哪些字段可能产生具有最小不确定性的可靠匹配。
    • 对于包含税号的记录,这似乎是最符合逻辑的起点,因为该号码的完全匹配应该有效,或者可以表明数据中存在错误。
  • 对于每种匹配类型,请更新上述匹配关键字段
  • 对于每个连续匹配的查询,排除匹配密钥表/字段中已匹配的记录。
  • 完善并重复所有这些步骤,直到您对找到所有匹配项感到满意为止。
  • 将所有不匹配的记录添加到最终合并的记录集中。

你从未说过你有多少记录。如果可能,您的组织可能值得手动验证自动匹配,并将其并排列出并在需要时手动调整它们。

但即使您成功配对非完全匹配,仍有人需要决定为合并系统保留哪条记录。我想你可能在公司名称和税号上有匹配 - 基本上是验证匹配 - 但仍然有不同的地址和/或联系人姓名。没有技术答案可以帮助您了解要保留或丢弃的数据。再次,应该进行人工审查以最终确定合并的记录。如果你正确设置它,一对人眼球可能会在一天之内完成数千条记录。