데이터분석
23. GROUP BY & AGGREGATE
장수우
2023. 12. 29. 22:26
학습주제
- GROUP BY와 AGGREGATE 함수
- CTAS와 CTE 소개
- 데이터 품질 확인
주요 메모 사항 소개
- GROUP BY & Aggreagate 함수
- 테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산
- 2단계로 이루어진다.
- 먼저 그룹핑을 할 필드를 결정한다(1개 이상의 필드)
GROUP BY로 지정 (필드 이름을 사용하거나 필드 일련번호를 사용한다) - 다음 그룹별로 계산할 내용을 결정한다.
- 여기서 Aggregate 함수를 사용한다.
- COUNT, SUM, AVG, MIN, MAX, LISTAGG, ...
- 보통 필드 이름을 지정하는 것이 일반적이다.(alias)
- 먼저 그룹핑을 할 필드를 결정한다(1개 이상의 필드)
- CTAS : SELECT 가지고 테이블 생성
- 간단하게 새로운 테이블을 만드는 방법
- 자주 조인하는 테이블들이 있다면 CTAS를 사용해서 조인해두면 편리하다
DROP TABLE IF EXISTS adhoc.sooyee_session_summary; CREATE TABLE adhoc.sooyee_session_summary AS SELECT B.*, A.ts FROM raw_data.session_timestamp A JOIN raw_data.user_session_channel B ON A.sessionid = B.sessionid;
- 항상 시도해봐야하는 데이터 품질 확인 방법들
- 중복된 레코드 체크하기
With ds AS ( SELECT DISTINCT userId, sessinId, ts, channel FROM adhoc.sooyee_session_summary ) SELECT COUNT(1) FROM ds;
- 최근 데이터의 존재 여부 체크하기
SELECT MIN(ts), MAX(ts) FROM adhoc.sooyee_session_summary;
- Primary key uniqueness가 지켜지는지 체크하기
SELECT sessinId, COUNT(1) FROM adhoc.sooyee.session_summary GROUP BY 1 ORDER BY 2 DESC LIMIT 1;
- 값이 비어있는 컬럼들이 있는지 체크하기
SELECT COUNT(CASE WHEN sessionId is NULL THEN 1 END) sessionId_null_count, COUNT(CASE WHEN userID is NULL THEN 1 END) userid_null_count, COUNT(CASE WHEN ts is NULL THEN 1 END) ts_null_count, COUNT(CASE WHEN channel is NULL THEN 1 END) channel_null_count FROM adhoc.sooyee_session_summary;
- 중복된 레코드 체크하기
공부하며 어려웠던 내용
-
반응형