ПочатиПочніть безкоштовно

Агрегування крок за кроком

Використовувати крапкову нотацію чи 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[____])
Редагувати та запускати код