Агрегация шаг за шагом
Выбор между точечной нотацией и SQL — это дело личных предпочтений. Однако, как было показано в видеоуроке, бывают случаи, когда SQL проще. Также в видео было продемонстрировано, что точечная нотация иногда даёт неочевидный результат: например, вторая агрегация по столбцу может перезаписать результат предыдущей агрегации по тому же столбцу. Как отмечалось в видео, базовый синтаксис agg в PySpark позволяет выполнять только одну агрегацию по каждому столбцу за раз.
В следующих упражнениях вычисляется время первого отправления для каждой линии поезда.
Первые два запроса дают одинаковый результат. Однако два последних — нет. Можете ли вы определить, почему?
Это упражнение является частью курса
Введение в Spark SQL на Python
Инструкции к упражнению
- Заполните пропуски, чтобы первая пара команд выводила одинаковый результат.
- Четвёртый результат, названный
result, является наивной попыткой воспроизвести предыдущую строку. Однако он неожиданно отличается. Чем именно? Заполните пропуск, чтобы вывести имя второго столбца переменнойresult.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Give the identical result in each command
spark.sql('SELECT train_id, MIN(time) AS start FROM schedule GROUP BY train_id').show()
df.groupBy('____').agg({'time':'____'}).withColumnRenamed('____', 'start').show()
# Print the second column of the result
spark.sql('SELECT train_id, MIN(time), MAX(time) FROM schedule GROUP BY train_id').show()
result = df.groupBy('train_id').agg({'time':'min', 'time':'max'})
result.show()
print(result.columns[____])