Я пытаюсь реализовать запрос в AWS Athena, где я вычисляю коэффициент корреляции Пирсона выбранного столбца для каждого другого столбца в матрице и возвращаю отсортированный список.
Данные хранятся вS3 в виде CSV-файла и выглядит следующим образом:
col_1 col_2 col_3 col_4 .... col_15000
0 124 56 200 .... 4
0 0 44 0 .... 0
....
Я хочу иметь возможность вычислять corr (col_1, col_2), corr (col_1, col_3), ... cor (col_1, col_15000) иотсортировать результаты по коэффициентам корреляции (найти наиболее / наименее коррелированные столбцы).
Какой самый эффективный способ написать этот запрос?Я бы хотел, чтобы этот запрос был максимально быстрым.Очевидный ответ - создать запрос, подобный следующему:
SELECT
corr(col_1, col_2) AS cor_2,
corr(col_1, col_3) AS cor_3,
...
corr(col_1, col_15000) AS cor_15000
Однако это кажется утомительным, и ограничение размера запроса быстро достигается.Есть ли лучший способ, который не жертвует (или увеличивает) производительность?Это может быть легко распараллелено, поскольку каждый отдельный коэффициент корреляции может быть вычислен независимо.