0

我有一个dwh收集4个系统,现在它已加入不同的客户主键。 一个实际客户可能出现在所有4个系统中,或者只有其中一个。 作为进行业务逻辑查找的最佳解决方案,您会看到什么? 链接是星期,因此常规联接仅适用于一小部分客户。 有没有一个很好的工作流程我可以使用,或者你会怎么做?结合客户主键

回答

1

我为一家大型健康保险公司工作,我们最近不得不做一个有点类似的项目。我们有来自不同业务部门的包含会员信息的多个源系统。我们有一个大的成员人口,成员可能在多个系统中。系统中的数据质量如此之高:每个系统可能有也可能没有有效的SSN,Medicare ID,当前和/或拼写正确的地址信息,有效的出生日期等。我们的目标是创建一个唯一标识符我们可以与源系统PK配对,以便我们可以在多个系统中唯一标识一个成员。

结果不仅仅是一段代码或SSIS任务的过程。我们的流程会跟踪每一位来自我们系统的成员,以及我们识别他们的主要领域(姓名,地址,SSN,Medicare ID等)的快照。在每个版本中,我们添加新的成员,以前还没有进入我们的系统,并更新历史记录表。然后我们通过比较,并试图找出哪些成员匹配。我们尽可能地尝试完全匹配(firstname = firstname,lastname = lastname,ssn = ssn),但如果这些匹配失败,我们必须使用部分匹配系统。我们通常所做的是尝试将标识符(如SSN或Medicare ID)与部分名称和地址进行匹配。如果我们没有有效的SSN或Medicare ID,我们最终会在我们可用的所有字段中使用部分匹配。

该过程有点反复试验。在我们第一次发布之后,用户发现了同一个成员具有不同ID的所有类型的实例(我们的匹配逻辑错过了有效匹配),或者显然不相同的成员具有相同的唯一标识符(我们的匹配逻辑产生了不匹配的匹配)。每次发布后,我们通常会根据发现的错误编写代码,并且通常会修复几乎所有错误。我们现在到了一个能够匹配我们可靠的一切的地步。

就你而言,我猜你没有任何政府发行的ID或SSN可供你使用。我可能会尝试直接JOIN您的信息(名称,送货地址,帐单地址,电子邮件,信用卡号码等)。之后,转到部分匹配。如果我们不能直接穿过JOIN,我们使用所有字段的左4个字符。之后,根据数据的质量,您可能只需要做一些工作就可以减少其余的逻辑。我会试着去看看你找不到任何匹配的所有客户,看看他们中的任何一个是否有相同的电子邮件,或类似的地址或类似的名字。如果是这样,比较这些成员,看看是什么导致匹配不起作用。

编辑:如果此数据持续更新,请记住,您还必须将新记录与先前识别的客户进行比较,以确定它们是否与您系统中已有的客户匹配。

祝你好运。我们的项目有点令人头疼,仍然没有完全完成,但它的状态良好,我们每次运行都会继续改进。

+0

感谢您的好投入,我觉得你的做法是真的好。我从一开始就提出了一系列不同的查询,从业务角度从不同角度加入客户。我将查询结果标记为1到5的验证级别分数。分数取决于联接的强度。如果我在多个查询中找到相同的客户关系。分数会更新,然后我会继续与非分数或低分数的客户合作。 – Beesure