开始使用免费开始使用

对同一列做两次聚合

有些情况下,点号语法不如 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 的表。

本练习是课程的一部分

Python 中的 Spark SQL 入门

查看课程

练习说明

  • 编写一条 SQL 查询,使其结果与点号语法查询完全一致。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Write a SQL query giving a result identical to dot_df
query = "SELECT ____ FROM schedule ____ ____ ____"
sql_df = spark.sql(query)
sql_df.show()
编辑并运行代码