转置自然键的记录重复数据删除

时间:2017-04-24 19:45:43

标签: sql sql-server tsql duplicates

重复数据删除记录的最佳方法是什么,通过异常糟糕的ETL设计方法,两个自然键被转换为另一个自然键,或者当其中一个自然键可能格式错误时?

可在此处找到测试数据集和SQL示例:

http://sqlfiddle.com/#!9/a36281/3/0

理解这个例子需要一个解释,这里从原始问题抽象成一个有趣的场景。

圣诞老人的驯鹿最近在波旁街上玩得太开心了。难道你不知道 - 每一个驯鹿都被警察抓住了(当然鲁道夫除外,他是道德美德的典范)。他们都被发布了各种道德适当污染的引用 - 或者,至少,他们被发出引用他们实际被捕的法律的违法行为;)

当然,北极督察长会保留一份更新清单,向圣诞老人报告,他们顽皮又善良 - 即使那些顽皮的人都是圣诞老人的驯鹿。

IG的不良行为数据库似乎有一个记录加载过程,其中存在严重的设计缺陷,导致重复记录。这导致了圣诞老人的驯鹿似乎更加糟糕的情况。

好吧,圣诞老人即将给那些驯鹿带来愤怒,这些驯鹿甚至会吓唬甚至可恶的雪怪,幸运的是,监察长发现了错误。

有两个与不良行为记录相关联的自然键:

1)引用号码:这是警方发出的每个引文的唯一编号。 2)法庭案卷号:这是分配给每个法庭案件的唯一号码。

IG的不良行为数据库预计这两个值都是由波本街警察准确提供的,这些警察起源于引用,并由当地法院审理案件。不幸的是,这种期望被违反了。

有很多次没有提供引用号码。在这些情况下,IG的记录加载过程使用已知值(案卷号)作为缺失值(引用号)的替代。

同样,很多时候没有提供法庭案卷号,同样,记录加载过程使用已知值(引用号)作为缺失值(案卷号)的替代。

在其他情况下,有时引文编号或法庭案卷编号格式错误。

稍后会出现一个严重的问题,即对于已经存在于其不良行为数据库中的案例,将记录更新发送给IG。忘记IG数据库没有被标准化,或者它没有同时尝试模糊匹配两个记录键。不,当他的加载过程找到新的引文号或新的案卷号时,它不是查找和更新原始记录,而是插入新记录 - 因此产生重复记录。

现在出现了如何解开这个重复难题的问题。

还有其他字段可用于帮助IG获取一组唯一的记录:

1)CourtDivision:与独特的法庭相关的信件。 2)被告名称:本练习简化。 3)CitationOffense:对被告的引用收费。 4)EventDate:与法院对被告案件记录的任何更新相关的事件日期。

这些字段以及CitationNumber和CourtDocketNumber都是IG必须使用的,以生成重复数据删除记录列表。

IG是否成功对其记录进行重复数据删除?更重要的是,当他将这个解决方案应用于更大的记录集时,是否有更有效的方法来重复删除这些记录而不是IG提出的记录?

这是一个棘手的难题。一些帮助将非常受欢迎(圣诞老人的驯鹿)。

0 个答案:

没有答案