Gộp cùng một cột hai lần
Có những trường hợp dùng dot notation sẽ rườm rà hơn SQL. Bài tập này tính thời điểm đầu và cuối cho mỗi tuyến tàu. Đoạn mã sau thực hiện điều đó bằng dot notation.
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|
+--------+-----+-----+
Nhiệm vụ của bạn là đạt được kết quả tương tự bằng một truy vấn SQL. DataFrame df đã được đăng ký thành một bảng tên là schedule.
Bài tập này là một phần của khóa học
Nhập môn Spark SQL bằng Python
Hướng dẫn bài tập
- Viết một truy vấn SQL cho kết quả giống hệt truy vấn dùng dot notation.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Write a SQL query giving a result identical to dot_df
query = "SELECT ____ FROM schedule ____ ____ ____"
sql_df = spark.sql(query)
sql_df.show()