红移中的Python UDF函数始终返回空值
我想在红移中有一个函数,可以去除单词中的重音。我在SO()中发现了一个问题,它的代码是用Python编写的。我尝试了几种解决方案,其中之一是:红移中的Python UDF函数始终返回空值,python,amazon-web-services,amazon-redshift,unaccent,Python,Amazon Web Services,Amazon Redshift,Unaccent,我想在红移中有一个函数,可以去除单词中的重音。我在SO()中发现了一个问题,它的代码是用Python编写的。我尝试了几种解决方案,其中之一是: import unicodedata def remove_accents(accented_string): nfkd_form = unicodedata.normalize('NFKD', input_str) return u"".join([c for c in nfkd_form if not unicodedata.comb
import unicodedata
def remove_accents(accented_string):
nfkd_form = unicodedata.normalize('NFKD', input_str)
return u"".join([c for c in nfkd_form if not unicodedata.combining(c)])
然后我用红移创建函数,如下所示:
create function remove_accents(accented_string varchar)
returns varchar
immutable
as $$
import unicodedata
def remove_accents(accented_string):
nfkd_form = unicodedata.normalize('NFKD', input_str)
return u"".join([c for c in nfkd_form if not unicodedata.combining(c)])
$$ language plpythonu;
我将其应用于具有以下内容的列:
SELECT remove_accents(city) FROM info_geo
只获取空值。列city是varchar类型。为什么我会得到空值以及如何解决它?您不需要在UDF中创建Python函数。添加函数调用或将其作为标量表达式写入:
create function remove_accents(accented_string varchar)
returns varchar
immutable
as $$
import unicodedata
nfkd_form = unicodedata.normalize('NFKD', accented_string)
return u"".join([c for c in nfkd_form if not unicodedata.combining(c)])
$$ language plpythonu;