Agregasi, selangkah demi selangkah
Apakah menggunakan notasi titik atau SQL adalah preferensi pribadi. Namun, seperti ditunjukkan dalam latihan video, ada kasus ketika SQL lebih sederhana. Juga seperti ditunjukkan dalam pelajaran video, ada pula kasus ketika notasi titik menghasilkan hasil yang tidak intuitif, misalnya ketika agregasi kedua pada sebuah kolom menimpa agregasi sebelumnya pada kolom tersebut. Seperti disebutkan dalam video, sintaks dasar agg di pyspark hanya mampu melakukan satu agregasi pada setiap kolom dalam satu waktu.
Latihan berikut menghitung waktu keberangkatan pertama untuk setiap jalur kereta.
Dua kueri pertama cocok. Namun, dua yang kedua tidak. Dapatkah Anda menentukan alasannya?
Latihan ini adalah bagian dari kursus
Pengantar Spark SQL dalam Python
Petunjuk latihan
- Isi bagian yang kosong agar pasangan perintah pertama menampilkan hasil yang identik.
- Hasil keempat, bernama
result, adalah upaya naif untuk mereplikasi baris sebelumnya. Namun, hasilnya berbeda secara tidak intuitif. Bagaimana? Isi bagian kosong untuk mencetak nama kolom kedua dariresult.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Give the identical result in each command
spark.sql('SELECT train_id, MIN(time) AS start FROM schedule GROUP BY train_id').show()
df.groupBy('____').agg({'time':'____'}).withColumnRenamed('____', 'start').show()
# Print the second column of the result
spark.sql('SELECT train_id, MIN(time), MAX(time) FROM schedule GROUP BY train_id').show()
result = df.groupBy('train_id').agg({'time':'min', 'time':'max'})
result.show()
print(result.columns[____])