在 Redshift 中使用 Python 聚合 UDF

Aggregate UDFs with Python in Redshift

我设法在 AmazonRedshift 中使用 Python 编写了一些标量函数,即将一列或几列作为输入并根据某种逻辑或转换返回单个值。

但是有什么方法可以在 UDF 中传递数字列(即列表)的所有值并计算这些值的统计信息,例如平均值或标准差?

文档指出只有标量 udf 函数是可能的(参见 http://docs.aws.amazon.com/redshift/latest/dg/user-defined-functions.html)。

但是,如果值列表不是太大,您可以通过创建一个字符串标量 udf 来作弊,该字符串列表是 LISTAGG 函数执行的结果。

例如:select udfSum(listagg(val,'|')) from table;

参见:http://docs.aws.amazon.com/redshift/latest/dg/r_LISTAGG.html