25분
SCD Type 2: 이력을 남겨라
Day 3: 작년 VIP가 올해 일반이 됐는데요 - SCD
SCD Type 2: 이력을 남겨라
데이터 모델링 > Day 3: 작년 VIP가 올해 일반이 됐는데요 - SCD
학습 목표
SCD Type 2의 원리를 이해한다 valid_from, valid_to 컬럼 사용법을 익힌다
SCD Type 2: 새 행 추가
Type 2 = 변경 시 새 행 추가 (이력 유지)
에디터 로딩 중...
핵심 포인트:
- customer_id는 같음 (Natural Key)
- customer_key는 다름 (Surrogate Key) → 새 행!
- valid_from/valid_to로 유효 기간 표시
- is_current로 현재 버전 표시
Type 2 컬럼 설명
| 컬럼 | 설명 |
|---|---|
| customer_key | Surrogate Key (DW용, 매번 새로 생성) |
| customer_id | Natural Key (OLTP 원본, 동일) |
| valid_from | 이 버전의 시작일 |
| valid_to | 이 버전의 종료일 (현재는 9999-12-31) |
| is_current | 현재 유효 버전 여부 (Y/N 또는 TRUE/FALSE) |
Type 2 등급 변경 시 처리
Before (2023-12-31):
에디터 로딩 중...
After (2024-01-01에 등급 변경):
에디터 로딩 중...
처리 순서:
- 기존 행의 valid_to를 어제 날짜로 변경
- 기존 행의 is_current를 N으로 변경
- 새 행 INSERT (새 customer_key)
과거 시점 조회
"2023년 6월 김철수의 등급은?"
에디터 로딩 중...
결과: VIP
"현재 김철수의 등급은?"
에디터 로딩 중...
결과: 일반
Fact와 연결
중요: Fact 테이블은 그 시점의 customer_key를 저장!
에디터 로딩 중...
2023년 VIP 매출 조회:
에디터 로딩 중...
→ 정확한 8만원 (1001 행만 조회)