编辑距离 Python UDF 作为 SQL 连接中的模糊匹配代理

Levenshtein distance Python UDF as fuzzy matching proxy in SQL join

我遇到了一个论坛 post,它描述了在 Redshift 中创建 Python UDF 的方法:https://community.periscopedata.com/r/y715m2

有关 Redshift 中 Python UDF 的更多信息:https://docs.aws.amazon.com/redshift/latest/dg/udf-python-language-support.html

我检查了该函数的一些输出(如 select public.levenshtein('walk', 'cake'))- 它运行良好。

我希望在 t1.first_name+last_name = t2.first_name+last_name 上的两个表之间的连接中使用这个概念进行模糊匹配。

是否有人熟悉 "magical range"(或可以根据经验提出建议)记录应介于两者之间才能被视为可能匹配? IE。 min 和 max levenshtein (s,t) 应该是多少才被认为是可能的匹配。

这取决于您的具体情况。当您提供训练数据集时,可以将其视为一个简单的机器学习问题 - 您可以 运行 针对您的数据的函数来查看不同类型对的值,并根据该值设置您的范围。如果你匹配名字错误的成本是相当高的,对于假阴性(没有匹配同一个人)和假阳性(匹配不同的人)的情况,所以我会选择 soundex 而不是 leuvenstein。如果姓氏仅在一个字母上不同,AFAIK Leuvenstein 距离将等于一个非常不同的姓氏,但这可能是两种情况 - 当姓氏实际上相同但拼写不同时,或者当姓氏实际上不同但差异时是一个字母。 Soundex更适合区分这种情况。