Агрегирование одного столбца дважды
Бывают случаи, когда точечная нотация менее удобна, чем 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()