핵심 인사이트 (3줄 요약)
- 본질: 팩트 테이블은 **비즈니스 이벤트의 측정값(매출액·수량·클릭 수)**을 저장하는 대용량 테이블이고, 디멘전 테이블은 **분석 축(날짜·상품·고객·지역)**의 속성을 저장하는 마스터 테이블이다.
- 가치: "2024년 1월 서울 매장의 전자제품 매출"을 분석할 때, 팩트(매출)에 디멘전(날짜·지역·카테고리)을 **JOIN하면 자유로운 다차원 분석(OLAP Cube)**이 가능하다.
- 판단 포인트: 팩트 유형(Transaction·Periodic·Accumulating Snapshot)과 디멘전 변경 관리(SCD Type 1/2/3)를 정확히 구분해야 한다.
Ⅰ. 개요 및 필요성
┌───────────────────────────────────────────────────────┐
│ 팩트 테이블 구조 │
├───────────────────────────────────────────────────────┤
│ FACT_매출 │
│ ┌─────────┬─────────┬─────────┬──────┬──────┐ │
│ │ 날짜KEY │ 상품KEY │ 고객KEY │ 매출액│ 수량 │ │
│ ├─────────┼─────────┼─────────┼──────┼──────┤ │
│ │ 20240101│ P001 │ C100 │30000 │ 2 │ │
│ │ 20240101│ P002 │ C101 │15000 │ 1 │ │
│ └─────────┴─────────┴─────────┴──────┴──────┘ │
│ FK(날짜KEY) → DIM_날짜 │
│ FK(상품KEY) → DIM_상품 │
│ FK(고객KEY) → DIM_고객 │
└───────────────────────────────────────────────────────┘
- 📢 섹션 요약 비유: 팩트는 "무슨 일이 일어났는가(숫자)"이고, 디멘전은 "그 일의 맥락(누가·언제·어디서·무엇을)"이다.
Ⅱ. 아키텍처 및 핵심 원리
팩트 테이블 유형
| 유형 | 설명 | 예 |
| Transaction | 이벤트 발생 시마다 1행 | 주문·클릭 |
| Periodic Snapshot | 정해진 주기로 스냅샷 | 월말 재고·잔액 |
| Accumulating Snapshot | 프로세스 전체 추적 | 주문→배송→반품 |
SCD (Slowly Changing Dimension) 유형
| Type | 방법 | 이력 |
| Type 1 | 덮어쓰기 | 없음 |
| Type 2 | 새 행 + 유효기간 | 보존 |
| Type 3 | 이전/현재 컬럼 | 제한적 |
- 📢 섹션 요약 비유: SCD Type 2는 "이사 기록"이다. 서울→부산 이사 시 서울 행(만료)과 부산 행(현재)을 모두 유지한다.
Ⅲ. 비교 및 연결
| 비교 | 팩트 테이블 | 디멘전 테이블 |
| 내용 | 측정값 (숫자) | 속성 (텍스트) |
| 행 수 | 수억 | 수천~수만 |
| 변경 | Append (추가) | SCD (갱신) |
| 키 | FK (디멘전 참조) | PK (Surrogate Key) |
Ⅳ. 실무 적용 및 기술사 판단
Surrogate Key vs Natural Key
- Natural Key (상품코드 "P001"): 비즈니스 의미 있음, 변경 가능.
- Surrogate Key (자동증가 정수): DW 내부 전용, SCD Type 2에 필수.
Ⅴ. 기대효과 및 결론
팩트/디멘전 분리 설계는 OLAP 분석의 기본이며, 현대 클라우드 DW(BigQuery, Snowflake)에서도 이 패턴이 표준으로 사용된다. dbt(data build tool)가 팩트/디멘전 모델 자동 생성을 지원한다.
📌 관련 개념 맵
| 개념 | 연결 포인트 |
| 스타 스키마 | 팩트 중심 + 1단 디멘전 JOIN |
| SCD | 디멘전 변경 이력 관리 |
| Surrogate Key | DW 디멘전의 내부 PK |
| OLAP Cube | 팩트+디멘전으로 구성하는 다차원 분석 |
| dbt | 팩트/디멘전 모델 자동 빌드 도구 |
📈 관련 키워드 및 발전 흐름도
[ER 모델 3NF (OLTP)]
│
▼
[Kimball 차원 모델링 (1996) — 팩트/디멘전 분리]
│
▼
[SCD Type 2 (이력 보존 표준)]
│
▼
[클라우드 DW (BigQuery, 2010s) — 스타 스키마 최적화]
│
▼
[현재: dbt + 팩트/디멘전 자동 생성]
👶 어린이를 위한 3줄 비유 설명
- 팩트 테이블은 "가게 매출 일지"예요. 얼마를 벌었는지 숫자를 기록해요.
- 디멘전 테이블은 "누가, 언제, 어디서, 무엇을"이라는 맥락 사전이에요.
- 일지와 사전을 합치면 "서울 매장에서 1월에 전자제품이 얼마나 팔렸는지" 다차원 분석이 가능해요!