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

การกรองข้อมูล

เมื่อมีพื้นฐาน SQL มาบ้างแล้ว การอธิบายการดำเนินการที่คล้ายกันบน Spark DataFrame ก็จะง่ายขึ้นมาก

มาดูเมธอด .filter() กัน เมธอดนี้คือตัวแทนของ SQL WHERE clause ใน Spark โดย .filter() รับได้ทั้งนิพจน์แบบสตริงที่ใช้ต่อท้าย WHERE ใน SQL หรือ Spark Column ที่มีค่าบูลีน (True/False)

ตัวอย่างเช่น สองนิพจน์ต่อไปนี้ให้ผลลัพธ์เหมือนกัน:

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

ในกรณีแรก เราส่ง สตริง ให้ .filter() ซึ่งถ้าเขียนเป็น SQL จะได้ว่า SELECT * FROM flights WHERE air_time > 120 เมธอด .filter() ของ Spark รับนิพจน์ใดก็ได้ที่สามารถใช้ใน WHERE clause ของ SQL (ในที่นี้คือ "air_time > 120") โดยต้องส่งเป็นสตริง สังเกตว่าในกรณีนี้ ไม่จำเป็นต้องระบุชื่อตารางในสตริง เช่นเดียวกับที่ไม่ระบุใน SQL

ในกรณีที่สอง เราส่ง คอลัมน์ที่มีค่าบูลีน ให้ .filter() โดย flights.air_time > 120 จะคืนค่าเป็นคอลัมน์บูลีนที่มีค่า True สำหรับแถวใน flights.air_time ที่มีค่ามากกว่า 120 และ False สำหรับแถวที่เหลือ

ทั้งนี้ SparkSession ชื่อ spark และ Spark DataFrame ชื่อ flights พร้อมใช้งานใน workspace แล้ว

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

พื้นฐาน PySpark

ดูคอร์ส

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

  • ใช้เมธอด .filter() เพื่อค้นหาเที่ยวบินที่บินระยะทางเกิน 1,000 ไมล์ โดยทำสองวิธี:
    • วิธีแรก ส่ง สตริง SQL ให้ .filter() เพื่อตรวจสอบว่า distance มากกว่า 1,000 หรือไม่ แล้วบันทึกผลลัพธ์เป็น long_flights1
    • วิธีที่สอง ส่งคอลัมน์บูลีนให้ .filter() เพื่อตรวจสอบเงื่อนไขเดียวกัน แล้วบันทึกผลลัพธ์เป็น long_flights2
  • ใช้ .show() เพื่อแสดงข้อมูลส่วนหัวของทั้งสอง DataFrame และตรวจสอบว่าผลลัพธ์เหมือนกัน

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

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

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