[인프런 빅쿼리 빠짝스터디] 2주차 윈도우 함수

2024. 11. 3. 03:31DataEngineer/인프런 빅쿼리 빠짝스터디

728x90
반응형

윈도우 함수

데이터를 창문을 통해 보는 것처럼, 일 부분씩 보면서 계산할 수 있게 해주는 함수


윈도우 함수 : 탐색 함수

1. LEAD

이후 행의 값을 반환 ( 이후의 값이 없다면 NULL )

LEAD(visit_month, 1) OVER (PARTITION BY user_id ORDER BY visit_month) AS after_visit_month

user_id visit_month after_visit_month
1004 1 3
1004 3 5
1004 5 7
1004 7 NULL

2. LAG

이전 행의 값을 반환 ( 이전의 값이 없다면 NULL )

LAG(visit_month, 1) OVER (PARTITION BY user_id ORDER BY visit_month) AS before_visit_month

user_id visit_month before_visit_month
1004 1 NULL
1004 3 1
1004 5 3
1004 7 5

3. FIRST_VALUE

첫번째 값

user_id visit_month first_visit_month
1004 1 1
1004 3 1
1004 5 1
1004 7 1

4. LAST_VALUE

마지막 값

user_id visit_month last_visit_month
1004 1 7
1004 3 7
1004 5 7
1004 7 7

5. IGNORE NULLS

- 윈도우 함수의 FIRST_VALUE, LAST_VALUE에선 기본적으로 NULL을 포함해서 연산

- 파티션 내의 처음/마지막 값이 NULL이면 NULL을 반환하게 되어있는데 NULL을 반환하기 싫다면 IGNORE NULLS를 사용하여 NULL을 무시하고 연산을 진행


윈도우 함수 : 번호 지정 함수

1. ROW_NUMBER

중복이 있으면 랜덤으로 숫자 부여

2. RANK

중복이 있으면 공동 N으로 처리하고 그 다음 값 패스


윈도우 함수 : 집계 분석 함수

AVG, SUM, MIN, MAX 등등

- GROUP BY가 여러 Row의 값을 집계해서 반환하는 반면 윈도우 함수는 각각의 Row에 값을 계산해서 반환


Frame 설정

1. PRECEDING

현재 행 기준으로 이전 행

2. CURRENT ROW

현재 행

3. FOLLOWING

현재 행 기준으로 이후 행

4. UNBOUNDED

처음부터 또는 끝까지


윈도우 함수 : QUALIFY ( 조건 설정 )

WHERE 대신 QUALIFY를 사용하면 윈도우 함수의 결과에 대해 필터링할 수 있음 WHERE과 같이 사용하는 경우엔 WHERE 아래에 작성하면 됨


느낀 점

BigQuery의 함수를 하나하나 알아갈때 마다 데이터를 만지는 재미가 생기는거 같습니다. 쿼리문을 작성할 때 항상 이걸 어떻게 하지라고 생각했던 내용이 다 윈도우 함수 였다는걸 보고 소름이.... 한주한주 알차게 보낸다는 느낌이 들어서 너무 좋은거 같습니다.

참고

- 인프런 BigQuery(SQL) 활용편(퍼널분석, 리텐션 분석)

728x90
반응형