Как автоматически перебирать каждый столбец и запускать запрос в Redshift psql - PullRequest
0 голосов
/ 10 мая 2018

Хорошо, сегодня я сделал что-то действительно глупое, что даже у моей мыши разрядилась батарея из-за слишком большого количества копий и вставок вручную ... Я ищу некоторую помощь, чтобы избежать повторной ручной работы.

Я никогда не использовал Redshift PSQL для написания UDF и написания кода Python в RedShift PSQL. Но я знаю, что это помогает нам писать код на языке Python в UDF, верно?

У меня вопрос, как написать метод в Redshift psql, который может повторять каждый столбец в таблице и выполнять этот же запрос y для каждого столбца:

select 'col1' as col_name,
percentile_cont(0.05) WITHIN GROUP (ORDER BY col1) as perct_5,
percentile_cont(0.1) WITHIN GROUP (ORDER BY col1) as perct_10,
percentile_cont(0.25) WITHIN GROUP (ORDER BY col1) as perct_25,
percentile_cont(0.5) WITHIN GROUP (ORDER BY col1) as perct_50,
percentile_cont(0.75) WITHIN GROUP (ORDER BY col1) as perct_75,
percentile_cont(0.9) WITHIN GROUP (ORDER BY col1) as perct_90,
percentile_cont(0.95) WITHIN GROUP (ORDER BY col1) as perct_95,
variance(col1) as col_var,
average(col1) as col_avg
from my_table;

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

Это должно быть в Redshift , так как я пытался подключить Redshift через python и считывать данные как кадр данных pandas, но таблица огромна, прошло 1 час, pandas не завершил выполнение запроса. ..

1 Ответ

0 голосов
/ 10 мая 2018

В Amazon Redshift SQL нет возможности перебирать столбцы. Кроме того, пользовательские функции (UDF) не могут читать данные из таблиц.

Вам потребуется написать программу, которая запускается вне Redshift, которая запрашивает список столбцов, а затем отправляет последовательные инструкции SELECT для каждого столбца.

Или, более простой версией было бы сделать электронную таблицу с нужным вам оператором, а затем вывести аналогичный оператор для каждого столбца. Это можно сделать с помощью формулы и большого количества Fill Down . Затем просто вставьте команды в клиент Redshift.

...