gpt4 book ai didi

postgresql - Redshift : Any ways to compute fuzzy string similarity/string edit distance?

转载 作者:行者123 更新时间:2023-11-29 11:34:25 36 4
gpt4 key购买 nike

在 PSQL(我相信 Redshift 是基于它的)中,有字符串相似性函数,如 levenshtein/levenshtein_less_equal [ http://www.postgresql.org/docs/9.1/static/fuzzystrmatch.html ].这些功能似乎没有进入 Redshift [ http://docs.aws.amazon.com/redshift/latest/dg/String_functions_header.html ].我错了吗,或者有人提出了创造性的查询来解决这个限制?

最佳答案

Redshift 基于 Postgres 8.0,它非常旧(并且不再受支持),因此这些年来它们已经发生了很大的分歧。 Postgres 的开发版本目前是 9.4,Postgres 的 8.x 和 9.x 版本在 9.0 及更高版本中有一些实质性的差异和补充。

levenshtein 函数是您上面链接的 fuzzystrmatch 模块的一部分,该模块是在 Postgres 8.3 中引入的,这很可能为什么它没有为 Redshift 做准备(而且它显然还没有被添加)。

通常我会说你最好的选择是定义一个自定义 PL/pgSQL 函数来实现 Levenshtein Distance 算法,但根据 Redshift doc用户定义的函数和存储过程Postgres 的许多主要功能之一,Redshift 不支持,所以我认为您不幸的是,在这方面运气不佳。

根据您的要求,您可以使用 LIKE 来获得类似的结果。看这个SO answer有关更多信息(请注意,Redshift 也不支持该答案中的一些替代建议,例如全文)。

更新,2016-04-25

似乎自从我最初在 2014 年 10 月回答了这个问题以来,就有能力创建基于 PythonUser Defined Functions (UDFs) 已添加。这不像能够内联创建自定义 Postgres 函数那样理想(文档列出了 UDF 的各种注意事项),但应该允许 将在 Python 中实现并在 Redshift 查询的上下文中处理的编辑距离算法。

Apache Hive 中的

UDFHadoop 生态系统中使用的数据仓库项目,允许以类似的方式实现用户定义的功能(基于 JavaPython)。

关于postgresql - Redshift : Any ways to compute fuzzy string similarity/string edit distance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26598228/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com