0

Rust & Jupyter Notebook - Phân tích dữ liệu với Polars (Phần 05)

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.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí