Mempartisi data dalam fungsi window

Fungsi Window di Snowflake

Jake Roach

Field Data Engineer

Memberi peringkat data

Di sini, kita memberi peringkat semua rekaman dalam hasil!

      user_id  |    event_name   |  km_traveled  |  closest_attendees 
      -------  | --------------- | ------------- | ----------------- 
      user_81  |  Lunar Drift    |      0.5      |         1         
      user_02  |  Lunar Drift    |      1.1      |         2       
      user_33  |  Crimson Arc    |      8.6      |         3          
      user_33  |  Neon Prophet   |      8.6      |         3         
      user_15  |  VibeStorm      |      17       |         5          
      user_94  |  The Dusk Owls  |      41       |         6        
      user_47  |  Lunar Drift    |      61       |         7   
      user_56  |  Crimson Arc    |      116      |         8         
Fungsi Window di Snowflake

Peringkat data dengan partisi

Sekarang, kita memberi peringkat data untuk tiap window yang ditentukan.

Tabel yang memberi peringkat pengunjung konser berdasarkan jarak yang mereka tempuh ke tiap venue

Fungsi Window di Snowflake

PARTITION BY

SELECT
    user_id,
    event_name,
    distance_traveled,

    RANK() OVER(
        -- Buat window berdasarkan event_name
        PARTITION BY event_name
        ORDER BY km_traveled
    ) AS closest_concert_goer

FROM CONCERTS.attendance;

PARTITION BY membantu membuat window rekaman untuk penerapan fungsi

$$

  • PARTITION BY muncul sebelum ORDER BY dalam OVER(...)
  • Mirip GROUP BY, tetapi tidak "menggabungkan" rekaman
Fungsi Window di Snowflake

Peringkat data dengan partisi

SELECT
    level,
    price,

    RANK() OVER(
        PARTITION BY level
        ORDER BY price DESC
    ) AS price_rank

FROM CONCERTS.attendance;
  • PARTITION BY membuat window
      level  |   price   | price_rank 
    -------- | --------- | -----------
       100   |    765    |      1
       100   |    617    |      2
       100   |    490    |      3
       100   |    490    |      3

                  ...

       200   |    212    |      1
       200   |    207    |      2

                  ...
Fungsi Window di Snowflake

Membuat metrik ringkas dengan FIRST_VALUE

    FIRST_VALUE(<1>) OVER(
        PARTITION BY <2>
        ORDER BY <3>
    ) AS <alias>

FIRST_VALUE membantu menemukan nilai pertama dalam sebuah window

    <1>: kolom yang dikembalikan

    <2>: kolom untuk mempartisi data

    <3>: kolom penentu rekaman pertama

Fungsi Window di Snowflake

Membuat metrik ringkas dengan AVG

AVG(<1>) OVER(
    PARTITION BY <2>
    -- No need to ORDER BY!
) AS <alias>

AVG menghitung nilai rata-rata kolom per window

    <1>: kolom yang dirata-ratakan

    <2>: kolom untuk mempartisi data

$$

                                                                                                      ... tidak perlu ORDER BY!

Fungsi Window di Snowflake

Kepuasan pelanggan

SELECT
    user_id, event_name, satisfaction_score,

FIRST_VALUE(satisfaction_score) OVER( PARTITION BY event_name -- Skor kepuasan untuk pengunjung konser terdekat ORDER BY km_traveled ) AS first_score,
-- Cari rata-rata skor kepuasan untuk "window" rekaman AVG(satisfaction_score) OVER( PARTITION BY event_name ) AS average_score
FROM CONCERTS.attendance;
Fungsi Window di Snowflake

Kepuasan pelanggan


      user_id  |   event_name   |  satisfaction_score  |  first_score  |  average_score 
     --------- | -------------- | -------------------- | ------------- | ---------------

      user_26  |  Pulse Theory  |          71          |       98      |      84.5      
      user_92  |  Pulse Theory  |          98          |       98      |      84.5      

                                          ...

      user_57  |   Nova Sway    |           4          |       22      |      29.3      
      user_39  |   Nova Sway    |          22          |       22      |      29.3      
      user_44  |   Nova Sway    |          62          |       22      |      29.3      

                                          ...
Fungsi Window di Snowflake

Ayo berlatih!

Fungsi Window di Snowflake

Preparing Video For Download...