【问题标题】:Techniques for finding repeat transactions between customers with misspellings or other change in information?查找拼写错误或其他信息更改的客户之间重复交易的技术?
【发布时间】:2012-01-09 08:55:05
【问题描述】:

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

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

问题分为两部分:

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

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

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

【问题讨论】:

    标签: sql-server tsql analysis fuzzy-comparison


    【解决方案1】:

    不是 T-SQL,但 SSIS 有一些答案:Fuzzy Lookup TransformationFuzzy Grouping Transformation。这篇 MSDN 文章展示了如何使用它:Fuzzy Lookups and Groupings Provide Powerful Data Cleansing Capabilities,这里有一个关于该主题的视频:MSDN TV: Data Cleansing Applications with SQL Server Integration Services

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

    您还应该阅读有关Levenshtein distance 的信息,已经有许多公开的现成 T-SQL 实现以及 CLR 实现,可在 SQL Server 中使用。只需Google for them

    【讨论】:

      【解决方案2】:

      我还建议查看Jaro-Winkler模糊匹配算法进行查询,其CLR实现可以在here找到

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-23
        • 2016-10-24
        • 1970-01-01
        • 2019-06-10
        • 1970-01-01
        相关资源
        最近更新 更多