การกำหนดหมายเลขแถว

Window Functions ใน Snowflake

Jake Roach

Field Data Engineer

Window functions

ใช้คำนวณข้ามชุดของแถวที่เรียกว่า "window" และส่งคืนค่า สำหรับแต่ละแถว

$$

$$

การจัดอันดับ

  • RANK, DENSE_RANK
  • FIRST_VALUE, LAST_VALUE, NTH_VALUE
  • LAG, LEAD

การรวมข้อมูล

  • COUNT, SUM, AVG
Window Functions ใน Snowflake

Window functions

Window functions ช่วยตอบคำถามรูปแบบใหม่ได้!

$$

  • คอนเสิร์ต ที่ได้รับความนิยมอันดับสาม ของแต่ละสถานที่คืออะไร?
  • ยอดขายของสินค้าเปลี่ยนแปลง วันต่อวัน อย่างไร?
  • ค่าเฉลี่ยเคลื่อนที่ ของยอดผู้ชมกำลังเพิ่มขึ้นหรือลดลง?
Window Functions ใน Snowflake

ฟังก์ชันแบบดั้งเดิม

ฟังก์ชันการรวมข้อมูลแบบดั้งเดิมต้องใช้คำสั่ง GROUP BY

ภาพแสดงการทำงานของฟังก์ชันการรวมข้อมูล

Window Functions ใน Snowflake

Window functions

ภาพแสดงผลลัพธ์ของ window function

                                                 ไม่จำเป็นต้องใช้ GROUP BY!

Window Functions ใน Snowflake

การกำหนดหมายเลขแถว

SELECT
    <other-fields>,

    ROW_NUMBER() OVER(
        ORDER BY <field>
    ) AS <alias>

FROM SCHEMA.table

...;

ฟังก์ชัน ROW_NUMBER() กำหนดหมายเลขแถวให้แต่ละระเบียนในผลลัพธ์

$$

  • OVER() กำหนด window
  • ตั้งชื่อคอลัมน์ผลลัพธ์ด้วย alias
  • ไม่ต้องใช้ GROUP BY!
Window Functions ใน Snowflake

ข้อมูลการเข้าชมคอนเสิร์ต

SELECT
    customer_id,
    event_name,

    -- Assign a row number to each 
    -- record in the result set

    ROW_NUMBER() OVER(
        ORDER BY time_spent_minutes
    ) AS row_num

FROM concerts.attendance;
  customer_id  |  event_name  |  row_num  
 ------------- | ------------ | ---------
     1931292   |  Music Fest  |    1    
     5462384   |  Elton John  |    2    
     7732891   |  Coachella   |    3    
     3124888   |  Porch Fest  |    4

$$

$$

จำ syntax ไว้: ROW_NUMBER() OVER( ORDER BY ...)!

Window Functions ใน Snowflake

มาฝึกกันเถอะ!

Window Functions ใน Snowflake

Preparing Video For Download...