Mulai sekarangMulai 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 merupakan bagian dari kursus

Pengantar Spark SQL dalam Python

Lihat Kursus

Instruksi latihan

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

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

# 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