gpt4 book ai didi

Redshift中的Python UDF函数总是返回NULL值

转载 作者:行者123 更新时间:2023-12-01 06:36:30 25 4
gpt4 key购买 nike

我希望 Redshift 中有一个功能可以删除单词中的重音符号。我在 SO( question ) 中找到了一个问题,并使用 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.combining(c)])

然后我在 Redshift 中创建该函数,如下所示:

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;

关于Redshift中的Python UDF函数总是返回NULL值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59644325/

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