Hareketli Ortalamalar ve Toplamlar

Snowflake'ta Pencere Fonksiyonları

Jake Roach

Field Data Engineer

Koşan Ortalamalar ve Toplamlar

"Kayma" pencere çerçevesini gösteren çıktı.

Snowflake'ta Pencere Fonksiyonları

"Hareketli" Ortalamalar ve Toplamlar

Hareketli ortalamayı gösteren çıktı.

Snowflake'ta Pencere Fonksiyonları

"Hareketli" Ortalamalar ve Toplamlar

Hareketli toplamı gösteren çıktı.

Snowflake'ta Pencere Fonksiyonları

Hareketli Hesaplamalar

SELECT
    ...

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

        -- X önceki ve Y sonraki kayıtlar arasında pencere

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

Mevcut satırdan önceki ve sonraki kayıt sayısını belirtin

ROWS BETWEEN X PRECEDING AND Y FOLLOWING
  • "Hareketli" hesaplama, koşan değil
  • CURRENT ROW kullanılabilir

$$

<X>: Geriye bakılacak satır sayısı

<Y>: İleriye bakılacak satır sayısı

Snowflake'ta Pencere Fonksiyonları

Hareketli Ortalama Oluşturma

SELECT
    member_id, workout_date, calories_burned,

    -- Önceki, mevcut ve sonraki antrenmanı kullanarak hareketli bir ortalama oluşturun

    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;
Snowflake'ta Pencere Fonksiyonları

Hareketli Ortalama Oluşturma

             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      
                                        ...
Snowflake'ta Pencere Fonksiyonları

Üyeleri Hareketli Toplamlarla Bilgilendirme

SELECT
    member_id, workout_date, calories_burned,

    ...

    -- "İleriye bakmayı" önlemek için CURRENT ROW kullanın
    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;
Snowflake'ta Pencere Fonksiyonları

Üyeleri Hareketli Toplamlarla Bilgilendirme

      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
                                            ...
Snowflake'ta Pencere Fonksiyonları

Haydi pratik yapalım!

Snowflake'ta Pencere Fonksiyonları

Preparing Video For Download...