Trong polars
, mà cụ thể hơn là khi xây dựng và thực thi các truy vấn trong chế độ Lazy, có hai khái niệm quan trọng là biểu thức hay "Expression" và khái niệm kế hoạch thực thi hay "Execution Plan".
Hiểu và biết cách sử dụng các biểu thức sẽ đạt được năng lực, khả năng xử lý tối đa của polars
. Nhân tiện, cũng cần phải nói là đối với các lập trình viên đã quen làm việc với pandas và Python thì sẽ cần thay đổi tư duy lập trình vì trong pandas không có cơ chế xử lý Lazy, chỉ có Eager, nên không có khái niệm xử lý kiểu biểu thức going như polars
. Lưu ý, đây cũng chính là một trong những điểm tạo nên khả năng vượt trội của polars
so với pandas.
Một biểu thức về cơ bản sẽ gồm hai phần chính, một cấu trúc Expr
và một ngữ cảnh thực thi trên LazyFrame
mong muốn. Expr
sẽ được dùng để lưu giữ và tổ chức biểu thức truy vấn còn ngữ cảnh thực thi sẽ quyết cách thức biểu thức truy vấn sẽ được tối ưu và thi hành như thế nào. Đoạn mã dưới minh hoạc cách tạo một biểu thức truy vấn (chưa thực sự gán cho bất kỳ data-frame nào)
let expr_plan: Expr = (col("quantity") * col("price")).alias("total_revenue");
polars
sẽ luôn phân tích, tìm cách thi song song đa luồng các biểu thức, lưu ý là song song thực sự trên các CoreCPU khác nhau; sẽ luôn phân tích truy vấn để truy xuất dữ liệu cần phân tích một cách tối uu nhất hay nói cách khác là chỉ đọc chính xác những dữ liệu cần cho phân tích; sẽ luôn tối uu sử dụng SIMD (nếu CPU hỗ trợ) cho các biểu thức.
Để có thêm thông tin về biểu thức và cách sử dụng với Lazy Execution, hãy xem video "#0041 - Phân tích dữ liệu với polars (Phần 05)" trên kênh Youtube RustDEV Vietnam.
- vừa được xem lúc
Rust & Jupyter Notebook - Phân tích dữ liệu với Polars (Phần 05)
0 0 3
Người đăng: RustDEV VietNam
Theo Viblo Asia