การ Profile Lazy Query
ก่อนนำ query ใหม่เข้าสู่ workflow ที่รันทุกวัน ทีมต้องการดูว่าเวลาถูกใช้ไปที่ขั้นตอนใดบ้าง การ Profile จะรัน lazy query เหมือนกับ .collect() แต่ยังคืนค่า timings DataFrame ที่มีหนึ่งแถวต่อหนึ่งขั้นตอนด้วย
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars
คำแนะนำการฝึกหัด
- กรอง
libraryให้เหลือเฉพาะการยืมที่useมีค่าเป็น"Physical" - เก็บ 10 ชื่อเรื่องที่ยาวที่สุดตาม
title_lenโดยใช้.top_k() - รัน query พร้อมกับ profiling เพื่อให้ได้ timings DataFrame ด้วย
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
result, timings = (
library
# Filter to physical checkouts
.filter(pl.col("use") == "____")
.with_columns(pl.col("title").str.len_chars().alias("title_len"))
# Keep the 10 longest titles
.top_k(10, by="____")
# Run with profiling to capture per-stage timings
.____()
)
print(timings)