MulaiMulai sekarang secara gratis

Menyaring Data

Kini setelah Anda memiliki sedikit pengetahuan SQL, lebih mudah membahas operasi yang serupa menggunakan Spark DataFrame.

Mari kita lihat metode .filter(). Seperti yang Anda duga, ini adalah padanan Spark untuk klausa WHERE di SQL. Metode .filter() menerima ekspresi yang akan mengikuti klausa WHERE pada ekspresi SQL sebagai string, atau sebuah kolom Spark berisi nilai boolean (True/False).

Sebagai contoh, dua ekspresi berikut akan menghasilkan keluaran yang sama:

flights.filter("air_time > 120").show()
flights.filter(flights.air_time > 120).show()

Perhatikan bahwa pada kasus pertama, kita meneruskan sebuah string ke .filter(). Dalam SQL, kita akan menuliskan tugas penyaringan ini sebagai SELECT * FROM flights WHERE air_time > 120. .filter() milik Spark dapat menerima ekspresi apa pun yang dapat dimasukkan ke dalam klausa WHERE pada kueri SQL (dalam hal ini, "air_time > 120"), asalkan diberikan sebagai string. Perhatikan bahwa dalam kasus ini, kita tidak menyebutkan nama tabel di dalam string — sama seperti yang tidak kita lakukan pada permintaan SQL.

Pada kasus kedua, kita benar-benar meneruskan kolom bernilai boolean ke .filter(). Ingat bahwa flights.air_time > 120 mengembalikan sebuah kolom bernilai boolean yang berisi True untuk catatan pada flights.air_time yang lebih dari 120, dan False selain itu.

Ingat, sebuah SparkSession bernama spark sudah ada di workspace Anda, bersama dengan Spark DataFrame flights.

Latihan ini adalah bagian dari kursus

Dasar-Dasar PySpark

Lihat Kursus

Petunjuk latihan

  • Gunakan metode .filter() untuk menemukan semua penerbangan yang menempuh jarak lebih dari 1000 mil dengan dua cara:
    • Pertama, teruskan string SQL ke .filter() yang memeriksa apakah distance lebih besar dari 1000. Simpan sebagai long_flights1.
    • Lalu teruskan kolom bernilai boolean ke .filter() yang memeriksa hal yang sama. Simpan sebagai long_flights2.
  • Gunakan .show() untuk mencetak head dari kedua DataFrame dan pastikan keduanya benar-benar sama!

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# Filter flights by passing a string
long_flights1 = ____.____("____ > ____")

# Filter flights by passing a column of boolean values
long_flights2 = ____.____(____.____ > ____)

# Print the data to check they're equal
____.____()
____.____()
Edit dan Jalankan Kode