데이터분석

23. GROUP BY & AGGREGATE

장수우 2023. 12. 29. 22:26
학습주제
  • GROUP BY와 AGGREGATE 함수
  • CTAS와 CTE 소개
  • 데이터 품질 확인
주요 메모 사항 소개
  • GROUP BY & Aggreagate 함수
    • 테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산
    • 2단계로 이루어진다.
      1. 먼저 그룹핑을 할 필드를 결정한다(1개 이상의 필드)
        GROUP BY로 지정 (필드 이름을 사용하거나 필드 일련번호를 사용한다)
      2. 다음 그룹별로 계산할 내용을 결정한다.
        - 여기서 Aggregate 함수를 사용한다.
        - COUNT, SUM, AVG, MIN, MAX, LISTAGG, ...
        - 보통 필드 이름을 지정하는 것이 일반적이다.(alias)
  • 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;​

 

공부하며 어려웠던 내용

-

반응형