结合客户主键

时间:2015-06-02 20:20:26

标签: sql data-warehouse business-intelligence business-logic ssis-2012

我有4个系统聚集在一个dwh中,现在它已加入不同的客户主键。 一个实际客户可能存在于所有4个系统中或仅存在于其中一个系统中。 您认为什么是进行业务逻辑查找的最佳解决方案? 链接是一周,因此常规联接仅适用于一小部分客户。 是否有一个很好的ssis工作流程我可以使用或你将如何处理这个?

2 个答案:

答案 0 :(得分:1)

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

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

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

在您的情况下,我猜您没有任何政府颁发的身份证或SSN可供您使用。我可能会尝试直接JOIN查询您的信息(姓名,送货地址,账单地址,电子邮件,信用卡号码等)。之后,转到部分匹配。在我们无法直接JOIN的情况下,我们使用我们拥有的所有字段的左侧4个字符。之后,根据数据的质量,您可能只需要做一些腿部工作来完成剩下的逻辑。我会尝试查看您找不到任何匹配项的所有客户,看看他们是否有相同的电子邮件,类似地址或类似名称。如果是这样,请比较这些成员并查看导致匹配不起作用的原因。

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

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

答案 1 :(得分:0)

至于数据仓库 - Kimball Group撰写了关于处理此类数据的最佳实践的好文章:

http://www.kimballgroup.com/2012/07/design-tip-147-durable-super-natural-keys/