Rata-rata dan Total Bergerak

Fungsi Window di Snowflake

Jake Roach

Field Data Engineer

Rata-rata dan Total Berjalan

Output yang menunjukkan bingkai jendela "geser".

Fungsi Window di Snowflake

Rata-rata dan Total "Bergerak"

Output yang menggambarkan rata-rata bergerak.

Fungsi Window di Snowflake

Rata-rata dan Total "Bergerak"

Output yang menggambarkan total bergerak.

Fungsi Window di Snowflake

Perhitungan Bergerak

SELECT
    ...

    AVG(<1>) OVER(
        PARTITION BY ...
        ORDER BY <2>

        -- Jendela antara X sebelumnya
        -- dan Y catatan berikutnya

ROWS BETWEEN <X> PRECEDING AND <Y> FOLLOWING
) ...

Tentukan jumlah catatan sebelum dan sesudah baris saat ini

ROWS BETWEEN X PRECEDING AND Y FOLLOWING
  • Perhitungan "Bergerak", bukan berjalan
  • Masih bisa menggunakan CURRENT ROW

$$

<X>: # baris untuk melihat ke belakang

<Y>: # baris untuk melihat ke depan

Fungsi Window di Snowflake

Membuat Rata-rata Bergerak

SELECT
    member_id, workout_date, calories_burned,

    -- Buat rata-rata bergerak menggunakan jendela dengan latihan sebelumnya, 
    -- latihan saat ini, dan latihan berikutnya

    AVG(calories_burned) OVER(
        PARTITION BY member_id
        ORDER BY workout_date

ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
) AS moving_avg_cb FROM FITNESS.workouts;
Fungsi Window di Snowflake

Membuat Rata-rata Bergerak

             member_id  |  workout_date  |   calories_burned  |  moving_avg_cb  
            ----------- | -------------- | ------------------ | --------------- 
               m_192    |   2024-01-01   |         105        |      130.5      
               m_192    |   2024-01-03   |         156        |      110.0      
               m_192    |   2024-01-04   |          69        |      109.0      
               m_192    |   2024-01-10   |         102        |      120.0      
               m_192    |   2024-01-11   |         189        |      127.3     
               m_192    |   2024-01-12   |          91        |      145.0     
               m_192    |   2024-01-16   |         155        |      127.7      
               m_192    |   2024-01-19   |         137        |      133.7      
               m_192    |   2024-01-20   |         109        |      123.0      

               m_74     |   2024-02-10   |         374        |      385.0      
                                        ...
Fungsi Window di Snowflake

Memberi Informasi dengan Total Bergerak

SELECT
    member_id, workout_date, calories_burned,

    ...

    -- Gunakan CURRENT ROW untuk menghindari "look ahead"
    SUM(calories_burned) OVER(
        PARTITION BY member_id
        ORDER BY workout_date

ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
) AS last_3_cb FROM FITNESS.workouts;
Fungsi Window di Snowflake

Memberi Informasi dengan Total Bergerak

      member_id  |  workout_date  |   calories_burned  |  moving_avg_cb  |  last_3_cb
     ----------- | -------------- | ------------------ | --------------- | -----------
        m_192    |   2024-01-01   |         105        |      130.5      |     105
        m_192    |   2024-01-03   |         156        |      110.0      |     261
        m_192    |   2024-01-04   |          69        |      109.0      |     330
        m_192    |   2024-01-10   |         102        |      120.0      |     327
        m_192    |   2024-01-11   |         189        |      127.3      |     360
        m_192    |   2024-01-12   |          91        |      145.0      |     382
        m_192    |   2024-01-16   |         155        |      127.7      |     435
        m_192    |   2024-01-19   |         137        |      133.7      |     383
        m_192    |   2024-01-20   |         109        |      123.0      |     401

        m_74     |   2024-02-10   |         374        |      385.0      |     374
                                            ...
Fungsi Window di Snowflake

Ayo berlatih!

Fungsi Window di Snowflake

Preparing Video For Download...