2016-11-25 9 views
0

listagg()をパラメータとして受け取ってその重複を削除するには、この関数を作成しました。Amazon Redshift UDFにリストの代わりに文字列を受け取る方法は?

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'); 

何をしているのですか?

答えて

2

あなたは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'); 

戻り値:

test, teste, tester 
+0

返信いただきありがとうございます!私はうまくいった! –

関連する問題