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

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