Окно агрегации или нормальное агрегирование? - PullRequest
0 голосов
/ 18 апреля 2020

В моей таблице 8107 строк.

предположим, я нахожу группу "avg (altitude)" по "стране" в столбце с окном. Я получаю вывод:

avg = ap.withColumn('avg_alt',mean(ap.altitude).over(Window.partitionBy(ap.country)))

o / p: 8107 строк

то же самое со свечой. sql -

select avg(altitude) from table group by country

o / p: 240 строк

Какой вывод правильный?

Должен ли я использовать окно или обычный sql?

Оба технически верны, но окно дает для каждой строки

1 Ответ

0 голосов
/ 18 апреля 2020

Оба выхода верны, они отличаются только форматом вывода. Как вы упомянули правильно, оконный подход будет прикреплять среднюю высоту к каждой строке вашего кадра данных, тогда как групповой подход SQL будет иметь только среднюю высоту для каждой страны.
В большинстве случаев вы хотите использовать только сгруппированные и агрегированные результаты (например, если вы хотите построить график или отобразить страны с наивысшим / наименьшим значением и т. д. c.)
Если вы хотите выполнить дополнительные вычисления, лучше всего подойдет оконный подход (например, если вы хотите найти места, которые имеют максимальную разницу в средней высоте).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...