MulaiMulai sekarang secara gratis

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

Lihat Kursus

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 dari result.

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[____])
Edit dan Jalankan Kode