如何让我的 Amazon Redshift UDF 接收字符串而不是列表?
How to make my Amazon Redshift UDF receive a string instead of a list?
我创建此函数是为了接收 listagg()
作为参数并删除重复项。
create or replace function reports.f_listagg_distinct (l varchar(20000))
returns varchar(20000)
immutable
as $$
aux_list = l.split(',')
nl = []
for i in aux_list:
if i not in nl:
nl.append(i)
return nl
$$ language plpythonu;
当我 运行 下面的代码时,我收到此错误:TypeError: expected string or Unicode object, list found
select reports.f_listagg_distinct('teste,teste,teste');
我做错了什么?
如果您正在寻找 return 逗号分隔对象的不同列表,请使用 remove duplicates from comma separated string (Amazon Redshift):
中的此函数
CREATE FUNCTION f_uniquify (s text)
RETURNS text
IMMUTABLE
AS $$
-- Split string by comma, remove duplicates, convert back to comma-separated
return ', '.join(set(s.split(',')))
$$ LANGUAGE plpythonu;
测试它:
select f_uniquify('test,teste,tester,teste,test');
Returns:
test, teste, tester
我创建此函数是为了接收 listagg()
作为参数并删除重复项。
create or replace function reports.f_listagg_distinct (l varchar(20000))
returns varchar(20000)
immutable
as $$
aux_list = l.split(',')
nl = []
for i in aux_list:
if i not in nl:
nl.append(i)
return nl
$$ language plpythonu;
当我 运行 下面的代码时,我收到此错误:TypeError: expected string or Unicode object, list found
select reports.f_listagg_distinct('teste,teste,teste');
我做错了什么?
如果您正在寻找 return 逗号分隔对象的不同列表,请使用 remove duplicates from comma separated string (Amazon Redshift):
中的此函数CREATE FUNCTION f_uniquify (s text)
RETURNS text
IMMUTABLE
AS $$
-- Split string by comma, remove duplicates, convert back to comma-separated
return ', '.join(set(s.split(',')))
$$ LANGUAGE plpythonu;
测试它:
select f_uniquify('test,teste,tester,teste,test');
Returns:
test, teste, tester