การหาผลรวมสะสมด้วย Window Function SQL
Window function ทำงานคล้ายกับฟังก์ชันการรวมค่า (aggregate function) แต่ต่างกันตรงที่ให้ผลลัพธ์ทุกแถวในชุดข้อมูล แทนที่จะได้แถวเดียวต่อกลุ่ม
สามารถใช้การรวมค่าร่วมกับ window function ได้ การหาผลรวมสะสมด้วย window function นั้นทำได้ง่ายกว่าการใช้ join และยังใช้เวลาในการรันคิวรีได้เร็วกว่าอีกด้วย
มีตารางชื่อ schedule ให้พร้อมใช้งาน โดยมีคอลัมน์ train_id, station, time และ diff_min คอลัมน์ diff_min แสดงเวลาที่ใช้เดินทางระหว่างสถานีปัจจุบันกับสถานีถัดไปบนสาย
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Introduction to Spark SQL in Python
คำแนะนำการฝึกหัด
- รันคิวรีที่เพิ่มคอลัมน์ใหม่ชื่อ
running_totalลงในชุดข้อมูลนี้ โดยคอลัมน์running_totalใช้SUM()เพื่อหาผลรวมสะสมของเวลาระหว่างสถานีจากคอลัมน์diff_min - รันคิวรีและแสดงผลลัพธ์
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Add col running_total that sums diff_min col in each group
query = """
SELECT train_id, station, time, diff_min,
____(____) OVER (PARTITION BY ____ ORDER BY ____) AS running_total
FROM schedule
"""
# Run the query and display the result
spark.____(query).show()