Mengagregasi kolom yang sama dua kali
Ada kalanya notasi titik lebih merepotkan dibanding SQL. Latihan ini menghitung waktu pertama dan terakhir untuk setiap jalur kereta. Kode berikut melakukannya dengan notasi titik.
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|
+--------+-----+-----+
Misi Anda adalah mencapai hasil yang sama menggunakan kueri SQL. DataFrame df telah didaftarkan sebagai tabel bernama schedule.
Latihan ini adalah bagian dari kursus
Pengantar Spark SQL dalam Python
Petunjuk latihan
- Tulis kueri SQL yang menghasilkan hasil identik dengan kueri notasi titik.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Write a SQL query giving a result identical to dot_df
query = "SELECT ____ FROM schedule ____ ____ ____"
sql_df = spark.sql(query)
sql_df.show()