在Redshift中是否可以创建自定义聚合UDF函数?如果可以,我在哪里可以找到相关的教程或文档?
我的数据如下:
A B time_series
a1 b1 "[1,2,3]"
a1 b2 "[2,3,4]"
a2 b1 "[2,2,2]"
我希望能够按照 A 或 B 进行分组,并得到平均时间序列。
例如,按照 A 进行分组:
a1 "[1.5, 2.5, 3.5]"
a2 "[2,2,2]"
在Redshift中是否可以创建自定义聚合UDF函数?如果可以,我在哪里可以找到相关的教程或文档?
我的数据如下:
A B time_series
a1 b1 "[1,2,3]"
a1 b2 "[2,3,4]"
a2 b1 "[2,2,2]"
我希望能够按照 A 或 B 进行分组,并得到平均时间序列。
例如,按照 A 进行分组:
a1 "[1.5, 2.5, 3.5]"
a2 "[2,2,2]"
CREATE FUNCTION f_mean(time_series VARCHAR)
RETURNS varchar
IMMUTABLE AS $$
import json
data = [json.loads(x.replace('"', '')) for x in time_series.split('""')]
return json.dumps([sum(e)/float(len(e)) for e in zip(*data)])
$$ LANGUAGE plpythonu;
mydb=> select A, f_mean(listagg(time_series)) within group (order by A) from my_table group by A;
a | f_mean
----+-----------------
a2 | [2.0, 2.0, 2.0]
a1 | [1.5, 2.5, 3.5]
(2 rows)