차원 모델링

Snowflake로 시작하는 데이터 모델링

Nuno Rocha

Director of Engineering

차원 데이터 모델 소개

  • 차원 모델링: 측정값(팩트)과 설명 정보(차원)를 분리하여 보고·분석에 최적화한 데이터 구조화 기법.

차원 모델

Snowflake로 시작하는 데이터 모델링

차원 데이터 모델 소개 (1)

  • 차원(Dimensions): 차원 모델에서 범주형 데이터를 가진 엔터티.
  • 팩트(Facts): 차원의 범주 내 활동을 기록·정량화하는 엔터티.

대학 차원 모델

Snowflake로 시작하는 데이터 모델링

스타 차원 모델 스키마

스타 차원 모델

Snowflake로 시작하는 데이터 모델링

스타 차원 모델 스키마

  • Snowflake 데이터 웨어하우스: 클라우드 기반 저장·분석 서비스.
  • Snowflake 스키마: 하위 차원을 포함하는 차원 모델의 데이터 구성 방식.

Snowflake, 데이터 웨어하우스 vs 차원 모델

Snowflake로 시작하는 데이터 모델링

스노우플레이크 차원 모델 스키마

스노우플레이크 차원 모델

Snowflake로 시작하는 데이터 모델링

차원 정의하기

  • 명확성을 위해 엔터티를 모델의 차원에 맞춰 dim_EntityName으로 변경:
ALTER TABLE students RENAME TO dim_students;
ALTER TABLE classes RENAME TO dim_classes;
ALTER TABLE schools RENAME TO dim_schools;
Snowflake로 시작하는 데이터 모델링

날짜 차원 정의하기

  • 학교 재학생 등록과 관련된 주요 고정 일자를 저장할 dim_date 테이블 생성:
CREATE OR REPLACE TABLE dim_date (
    date_id NUMBER(10,0) PRIMARY KEY,
    year NUMBER(4,0),
    semester VARCHAR(255)
);
Snowflake로 시작하는 데이터 모델링

등록 팩트 정의하기

  • 모든 차원을 참조하는 팩트 엔터티 생성:
CREATE OR REPLACE TABLE fact_enrollments (
    enrollment_id NUMBER(10,0) PRIMARY KEY,
    student_id NUMBER(10,0),
    class_id NUMBER(10,0),
    date_id NUMBER(10,0),
    FOREIGN KEY (student_id) REFERENCES dim_students(student_id),
    FOREIGN KEY (class_id) REFERENCES dim_classes(class_id),
    FOREIGN KEY (date_id) REFERENCES dim_date(date_id)
);
Snowflake로 시작하는 데이터 모델링

차원에서 데이터 조회

대학 차원 데이터 모델

Snowflake로 시작하는 데이터 모델링

차원에서 데이터 조회 (1)

SELECT name, 
    class_name
FROM fact_enrollments
    JOIN dim_students -- 학생 이름을 가져오기 위해 조인
    ON fact_enrollments.student_id = dim_students.student_id
    JOIN dim_classes -- 수업명을 가져오기 위해 조인
    ON fact_enrollments.class_id = dim_classes.class_id
    JOIN dim_schools -- 'Science' 학부로 필터링
    ON dim_classes.school_id = dim_schools.school_id
    JOIN dim_date -- 2023년으로 제한
    ON fact_enrollments.date_id = dim_date.date_id
WHERE dim_schools.school_name = 'Science' 
    AND dim_date.year = 2023;
Snowflake로 시작하는 데이터 모델링

용어와 기능 개요

  • 차원 모델링: 측정값(팩트)과 설명 정보(차원)를 분리하는 데이터 구조화 기법
  • 차원(Dimensions): 차원 모델에서 범주형 데이터를 가진 엔터티
  • 팩트(Facts): 차원의 범주 내 활동을 기록·정량화하는 엔터티
  • ALTER TABLE: 기존 엔터티 구조를 수정하는 SQL 명령
  • RENAME TO: ALTER TABLE과 함께 사용하여 엔터티 이름을 변경
  • JOIN ON: 관련 열을 기준으로 테이블 행을 결합하는 절
  • WHERE: 조건에 따라 레코드를 필터링하는 절
  • AND: WHERE와 함께 여러 조건을 결합하는 논리 연산자
Snowflake로 시작하는 데이터 모델링

기능 개요

-- 엔터티 수정
ALTER TABLE table_name 
RENAME TO new_name;
-- 특정 조건으로 병합된 엔터티에서 데이터 조회
SELECT 
    table_name.column_name,
    other_name.*
FROM table_name
    JOIN other_table 
    ON table_name.FK = other_table.PK
WHERE column_name  condition  value
    AND column_name  condition  value;
Snowflake로 시작하는 데이터 모델링

Ayo berlatih!

Snowflake로 시작하는 데이터 모델링

Preparing Video For Download...