MulaiMulai sekarang secara gratis

Selecting II

Serupa dengan SQL, Anda juga dapat menggunakan metode .select() untuk melakukan operasi per kolom. Saat Anda memilih kolom dengan notasi df.colName, Anda dapat melakukan operasi apa pun pada kolom tersebut dan metode .select() akan mengembalikan kolom yang telah ditransformasi. Sebagai contoh,

flights.select(flights.air_time/60)

menghasilkan kolom durasi penerbangan dalam jam, bukan menit. Anda juga dapat menggunakan metode .alias() untuk mengganti nama kolom yang Anda pilih. Jadi jika Anda ingin .select() kolom duration_hrs (yang tidak ada di DataFrame Anda) Anda dapat melakukan

flights.select((flights.air_time/60).alias("duration_hrs"))

Metode setara pada Spark DataFrame, .selectExpr(), menerima ekspresi SQL sebagai string:

flights.selectExpr("air_time/60 as duration_hrs")

dengan kata kunci SQL as yang setara dengan metode .alias(). Untuk memilih beberapa kolom, Anda dapat memasukkan beberapa string.

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

Buat tabel kecepatan rata-rata setiap penerbangan dengan dua cara.

  • Hitung kecepatan rata-rata dengan membagi distance dengan air_time (dikonversi ke jam). Gunakan metode .alias() untuk menamai kolom ini "avg_speed". Simpan keluaran sebagai variabel avg_speed.
  • Pilih kolom "origin", "dest", "tailnum", dan avg_speed (tanpa tanda kutip!). Simpan sebagai speed1.
  • Buat tabel yang sama menggunakan .selectExpr() dan sebuah string berisi ekspresi SQL. Simpan sebagai speed2.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# Define avg_speed
avg_speed = (flights.____/(flights.____/60)).alias("____")

# Select the correct columns
speed1 = flights.select("origin", "dest", "tailnum", avg_speed)

# Create the same table using a SQL expression
speed2 = flights.selectExpr("____", "____", "____", "distance/(air_time/60) as ____")
Edit dan Jalankan Kode