Агрегируйте UDF с помощью Python в Redshift

Мне удалось написать несколько скалярных функций на Python в AmazonRedshift, т.е. брать на вход один или несколько столбцов и возвращать одно значение на основе какой-то логики или преобразования.

Но есть ли способ передать все значения числового столбца (т.е. списка) в UDF и рассчитать статистику по ним, например, среднее значение или стандартное отклонение?


person and_apo    schedule 25.10.2015    source источник


Ответы (1)


В документации указано, что возможна только скалярная функция udf (см. http://docs.aws.amazon.com/redshift/latest/dg/user-defined-functions.html).

Однако вы можете обмануть, если список значений не слишком велик, создав строковый скаляр udf, ожидающий список строк, результат выполнения функции LISTAGG.

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

см.: http://docs.aws.amazon.com/redshift/latest/dg/r_LISTAGG.html

person Robert Chevallier    schedule 19.02.2016