Bắt đầu ngayBắt đầu miễn phí

Lọc dữ liệu

Giờ bạn đã nắm được một chút SQL, chúng ta sẽ dễ dàng nói về các thao tác tương tự với Spark DataFrame.

Hãy xem phương thức .filter(). Đúng như bạn đoán, đây là “bản sao” của mệnh đề WHERE trong SQL. Phương thức .filter() nhận vào hoặc là một biểu thức dạng chuỗi giống phần theo sau mệnh đề WHERE của một câu SQL, hoặc một cột Spark gồm các giá trị boolean (True/False).

Ví dụ, hai biểu thức sau sẽ cho cùng một kết quả:

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

Lưu ý trong trường hợp đầu, ta truyền một chuỗi vào .filter(). Trong SQL, ta sẽ viết thao tác lọc này như SELECT * FROM flights WHERE air_time > 120. .filter() của Spark có thể nhận bất kỳ biểu thức nào có thể đặt trong mệnh đề WHERE của một truy vấn SQL (trong trường hợp này là "air_time > 120"), miễn là truyền vào dưới dạng chuỗi. Cũng lưu ý rằng trong chuỗi này, ta không nhắc đến tên bảng — giống như khi viết yêu cầu SQL.

Trong trường hợp thứ hai, ta truyền vào một cột các giá trị boolean cho .filter(). Hãy nhớ flights.air_time > 120 trả về một cột boolean với True tại những bản ghi trong flights.air_time lớn hơn 120, và False nếu không.

Nhớ rằng một SparkSession tên là spark đã có sẵn trong không gian làm việc của bạn, cùng với Spark DataFrame flights.

Bài tập này là một phần của khóa học

Nền tảng về PySpark

Xem khóa học

Hướng dẫn bài tập

  • Dùng phương thức .filter() để tìm tất cả các chuyến bay bay hơn 1000 dặm theo hai cách:
    • Trước tiên, truyền một chuỗi SQL vào .filter() để kiểm tra khoảng cách lớn hơn 1000. Lưu kết quả thành long_flights1.
    • Sau đó truyền một cột giá trị boolean vào .filter() để kiểm tra điều kiện tương tự. Lưu kết quả thành long_flights2.
  • Dùng .show() để in phần đầu của cả hai DataFrame và đảm bảo chúng thực sự giống nhau!

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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
____.____()
____.____()
Chỉnh sửa và Chạy Mã