【发布时间】:2017-07-08 17:32:50
【问题描述】:
我使用的是 MS SQL Server 2012,并且已经完成了简单的查询和数据加载,但没有完成循环或 case 语句或嵌套选择。我正在寻找一些帮助来帮助我开始这种方法。
我们正在一个项目中,我们正在合并来自多个旧系统的客户列表。我在暂存数据库中有一个原始客户表,其中包含来自这些多个来源的记录。在将最终表写入数据集市之前,我们需要执行以下操作。我认为这在数据清理/金唱片世界中会很常见,但经过大量搜索,无法找到类似的帖子。
首先,我们需要找到代表同一客户的记录。这些记录来自多个来源,因此可能有超过 2 条记录代表同一客户。每个来源都使用类似的模型。根据可用值确定记录是否代表级联层次结构中的相同客户更改的标准。我们要用于记录的第一个标准是 DOB 和 SSN。但如果缺少 SSN,则该行的标准将变为姓氏、名字和出生日期。如果 SSN 和 DOB 都缺失,则重复测试更改为姓氏 + 名字 + 另一个标准字段。如果其中一个名称丢失,即使在此之后还有其他标准。由于代表同一客户的记录可能有不同的可用字段,因此我们必须使用两个记录都可以使用的测试。如果事实证明给定客户仅存在于一个系统中,则可能不会出现重复记录。
- 一旦识别出重复的记录,我们希望将代表客户的那些记录组合起来,以便我们最终将代表客户的 1 条记录写入新表,使用相同的字段。组合是通过比较类似字段的值来完成的。如果 SSN 从一个源中丢失,但在另一个源中可用,则使用该 SSN。如果有超过 2 条代表客户的记录,并且超过 1 条有 SSN,并且这些 SSN 编号不同,则根据记录来自哪个系统存在层次结构,我们希望将 SSN 值写入等级最高的系统。这种逻辑将应用于我们需要检查的每个领域。
我认为对我来说最难概念化的部分是如何存储一条记录的值,以便您可以与同一张表中的一条或多条其他记录进行比较,执行实际的比较逻辑,然后编写“获胜" 对新表的价值?如果我能得到一些帮助,将不胜感激。
【问题讨论】:
标签: tsql sql-server-2012 data-cleaning record-linkage