我遇到了一篇论坛帖子,其中介绍了在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
上的两个表之间的连接中使用此概念进行模糊匹配。
是否有人熟悉一个“魔法范围”(或者可以根据经验提出一些建议),其中记录应该被视为可能的匹配?即。什么应该将min和max levenshtein(s,t)视为可能的匹配。
答案 0 :(得分:1)
这取决于您的具体情况。当您提供训练数据集时,可以将其视为一个简单的机器学习问题 - 您可以针对数据运行该函数以查看不同类型对的值,并根据该值设置范围。如果您匹配名称,则错误的成本非常高,无论是假阴性(对同一个人不匹配)还是误报(对不同的人匹配)的情况,所以我会选择soundex
比leuvenstein
。 AFAIK Leuvenstein距离对于非常不同的姓氏,如果它们仅在一个字母中不同,则它们将等于1,但这可能是两种情况 - 当姓氏实际上相同但拼写不同时,或者当姓氏实际上不同但是差异时是一封信。 Soundex更适合区分这类案件。