1

这不是 SQL Server 特定的问题;但这里可能有 tSQL 特定的选项。

我有一堆客户详细信息;他们中的许多人取消并退出了​​他们的服务。他们获得了一个全新的帐户;我们的数据验证充其量只是粗略的;所以他们经常打错电子邮件地址或其他数据。

问题分为两部分:

第一的; 我有诸如名字和姓氏、电子邮件、信用卡最后 4 位、邮政编码、电话号码等信息。是否有一种算法/过程我可以查看我的数据集并寻找常见的重复池,以便我可以确定数据的一些手动特征,这些特征往往是回头客的“陷阱”项目——即 80% 的时间电子邮件“相似”且邮政编码相同,是回头客(基于我的人工匹配技能)?

第二; 我该如何表达数据集之间的相似性——即如果 5 个字段中有 3 个匹配,则有一个称为匹配的项目?所有不同数据点之间的某种相似性指数?我知道我可以在某种程度上在名称上使用 soundex……在电子邮件地址上不太确定。

所以,我对快速和肮脏的解决方案都感兴趣(我今晚正在整理分析;但我也对解决这个问题的“正确”方法非常感兴趣。)这两个答案都会赢得我的爱和尊重。=)

4

2 回答 2

3

不是 T-SQL,但 SSIS 有一些答案:Fuzzy Lookup TransformationFuzzy Grouping Transformation。这篇 MSDN 文章展示了如何使用它:Fuzzy Lookups and Groupings Provide Powerful Data Cleansing Capabilities,这里有一个关于该主题的视频:MSDN TV:使用 SQL Server 集成服务的数据清理应用程序

还有第 3 方解决方案,例如 Red-Gate 的Data Cleanser。尽管如此,他们仍然使用 SSIS,因为它是更适合这项工作的工具。

您还应该阅读有关Levenshtein distance的信息,已经有许多公共的现成 T-SQL 实现以及 CLR 实现,可在 SQL Server 中使用。只是谷歌他们

于 2011-11-30T06:54:16.707 回答
0

我还建议查看用于查询的Jaro-Winkler模糊匹配算法,它的 CLR 实现可以在这里找到

这似乎适用于较小量的文本字符串匹配

于 2011-11-30T11:50:28.933 回答