이동 평균과 합계

Snowflake의 Window 함수

Jake Roach

Field Data Engineer

누적 평균과 합계

"슬라이딩" 창 프레임을 보여주는 출력.

Snowflake의 Window 함수

이동 평균과 합계

이동 평균을 보여주는 출력.

Snowflake의 Window 함수

이동 평균과 합계

이동 합계를 보여주는 출력.

Snowflake의 Window 함수

이동 계산

SELECT
    ...

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

        -- 현재 행 기준 X개 이전과
        -- Y개 이후 레코드로 창 지정

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

현재 행 전후 레코드 수 지정

ROWS BETWEEN X PRECEDING AND Y FOLLOWING
  • 이동 계산, 누적 아님
  • CURRENT ROW 사용 가능

$$

<X>: 뒤로 보는 행 수

<Y>: 앞으로 보는 행 수

Snowflake의 Window 함수

이동 평균 만들기

SELECT
    member_id, workout_date, calories_burned,

    -- 이전/현재/다음 운동을 포함한 창으로 이동 평균 생성

    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의 Window 함수

이동 평균 만들기

             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의 Window 함수

이동 합계로 회원 안내하기

SELECT
    member_id, workout_date, calories_burned,

    ...

    -- 미리보기 방지를 위해 CURRENT ROW 사용
    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의 Window 함수

이동 합계로 회원 안내하기

      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의 Window 함수

Ayo berlatih!

Snowflake의 Window 함수

Preparing Video For Download...