MulaiMulai sekarang secara gratis

Konversi fungsi window dari notasi titik ke SQL

Kita akan menambahkan sebuah kolom ke jadwal kereta sehingga setiap baris berisi jumlah menit yang dibutuhkan kereta untuk mencapai pemberhentian berikutnya.

  • Kita memiliki dataframe df di mana df.columns == ['train_id', 'station', 'time'].
  • df didaftarkan sebagai tabel SQL bernama schedule.
  • Fungsi window berikut menggunakan notasi titik. Kueri ini menghasilkan dataframe baru dot_df.
window = Window.partitionBy('train_id').orderBy('time')
dot_df = df.withColumn('diff_min', 
                    (unix_timestamp(lead('time', 1).over(window),'H:m') 
                     - unix_timestamp('time', 'H:m'))/60)

Perhatikan penggunaan fungsi unix_timestamp, yang setara dengan fungsi SQL UNIX_TIMESTAMP.

Harap perhatikan scaffolding pada kode contoh. Memformat jawaban sesuai scaffolding akan memastikan jawaban Anda tidak ditolak karena masalah pemformatan.

Latihan ini adalah bagian dari kursus

Pengantar Spark SQL dalam Python

Lihat Kursus

Petunjuk latihan

  • Buat kueri SQL untuk memperoleh hasil yang identik dengan dot_df. Harap format kueri sesuai dengan scaffolding (yaitu garis bawah placeholder _____).

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# Create a SQL query to obtain an identical result to dot_df
query = """
SELECT *, 
(____(____(time, 1) ____ (____ BY train_id ____ BY time),'H:m') 
 - ____(time, 'H:m'))/60 AS diff_min 
FROM schedule 
"""
sql_df = spark.sql(query)
sql_df.show()
Edit dan Jalankan Kode