НачатьНачать бесплатно

Агрегирование одного столбца дважды

Бывают случаи, когда точечная нотация менее удобна, чем SQL. В этом упражнении вычисляется время первой и последней остановки для каждого маршрута поезда. Приведённый ниже код решает эту задачу с помощью точечной нотации.

from pyspark.sql.functions import min, max, col
expr = [min(col("time")).alias('start'), max(col("time")).alias('end')]
dot_df = df.groupBy("train_id").agg(*expr)
dot_df.show()
+--------+-----+-----+
|train_id|start|  end|
+--------+-----+-----+
|     217|6:06a|6:59a|
|     324|7:59a|9:05a|
+--------+-----+-----+

Ваша задача — получить тот же результат с помощью SQL-запроса. Датафрейм df зарегистрирован как таблица с именем schedule.

Это упражнение является частью курса

Введение в Spark SQL на Python

Посмотреть курс

Инструкции к упражнению

  • Напишите SQL-запрос, который даёт результат, идентичный запросу на точечной нотации.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Write a SQL query giving a result identical to dot_df
query = "SELECT ____ FROM schedule ____ ____ ____"
sql_df = spark.sql(query)
sql_df.show()
Редактировать и запускать код