[인프런 빅쿼리 빠짝스터디] 2주차 윈도우 함수
2024. 11. 3. 03:31ㆍDataEngineer/인프런 빅쿼리 빠짝스터디
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의 함수를 하나하나 알아갈때 마다 데이터를 만지는 재미가 생기는거 같습니다. 쿼리문을 작성할 때 항상 이걸 어떻게 하지라고 생각했던 내용이 다 윈도우 함수 였다는걸 보고 소름이.... 한주한주 알차게 보낸다는 느낌이 들어서 너무 좋은거 같습니다.
참고
728x90
반응형
'DataEngineer > 인프런 빅쿼리 빠짝스터디' 카테고리의 다른 글
[인프런 빅쿼리 빠짝스터디] 1주차 BigQuery ARRAY, STRUCT, PIVOT 테이블, 퍼널 분석 (3) | 2024.10.25 |
---|