เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การเลือกข้อมูล II

เช่นเดียวกับ SQL คุณสามารถใช้เมธอด .select() เพื่อดำเนินการกับคอลัมน์ได้ด้วย เมื่อเลือกคอลัมน์โดยใช้รูปแบบ df.colName จะสามารถทำการคำนวณใดก็ได้กับคอลัมน์นั้น และ .select() จะคืนค่าคอลัมน์ที่ผ่านการแปลงแล้ว ตัวอย่างเช่น

flights.select(flights.air_time/60)

จะคืนค่าคอลัมน์ระยะเวลาของเที่ยวบินในหน่วยชั่วโมงแทนนาที นอกจากนี้ยังสามารถใช้เมธอด .alias() เพื่อเปลี่ยนชื่อคอลัมน์ที่กำลังเลือกได้ด้วย เช่น หากต้องการ .select() คอลัมน์ duration_hrs (ซึ่งไม่มีอยู่ใน DataFrame) ก็สามารถทำได้ดังนี้

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

เมธอด .selectExpr() ของ Spark DataFrame ที่ใช้งานเทียบเท่ากันนี้ รับนิพจน์ SQL ในรูปแบบสตริง:

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

โดยคีย์เวิร์ด as ใน SQL มีความหมายเทียบเท่ากับเมธอด .alias() และหากต้องการเลือกหลายคอลัมน์ก็สามารถส่งสตริงหลายค่าได้

อย่าลืมว่า SparkSession ชื่อ spark พร้อมใช้งานอยู่แล้วใน workspace รวมถึง Spark DataFrame flights ด้วย

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

พื้นฐาน PySpark

ดูคอร์ส

คำแนะนำการฝึกหัด

สร้างตารางแสดงความเร็วเฉลี่ยของแต่ละเที่ยวบินทั้งสองแบบ

  • คำนวณความเร็วเฉลี่ยโดยหาร distance ด้วย air_time (แปลงให้เป็นชั่วโมงก่อน) จากนั้นใช้เมธอด .alias() ตั้งชื่อคอลัมน์นี้ว่า "avg_speed" และบันทึกผลลัพธ์ไว้ในตัวแปร avg_speed
  • เลือกคอลัมน์ "origin", "dest", "tailnum" และ avg_speed (ไม่ต้องใส่เครื่องหมายคำพูด!) แล้วบันทึกไว้เป็น speed1
  • สร้างตารางเดียวกันโดยใช้ .selectExpr() และสตริงที่มีนิพจน์ SQL แล้วบันทึกไว้เป็น speed2

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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 ____")
แก้ไขและรันโค้ด