변하는 dimension — 그리고 뭐 할지
고객이 나라 이동. 제품이 카테고리 바뀜. Tier 할당이 변동. Dimension 속성이 시간 따라 변하고, "이 주문 났을 때 그 사람 tier 가 뭐였어?" 질문이 생각보다 흥미로워져. Kimball 의 답은 slowly changing dimension (SCD) type 패밀리. 둘 — Type 1 과 Type 2 — 이 거의 모든 실전 케이스 cover.
SCD Type 1 — overwrite
Dimension 이 항상 현재 상태 반영. 고객이 'KR' 에서 'US' 로 이동하면 country column 덮어. 과거 fact 가 이제 항상 US 고객과 연관됐던 것처럼 나타남. 단순, 낮은 storage, 이력 없음.
쓸 때: 역사적 속성 값이 안 중요할 때 (오타 수정, 프로필 사진 업데이트, 입력 에러 fix). Dimension 에 대한 "As-of" 리포팅 안 필요.
SCD Type 2 — versioned 이력
추적 속성에 변경할 때마다 dimension 테이블에 새 row 생성, effective-from / effective-to 타임스탬프와 current-flag 와 함께. Fact 테이블이 fact 일어난 시점 customer_key 로 join 해서 historical 리포트가 고객의 그때-당시 속성 보여줌.
쓸 때: 역사적 값이 중요할 때. 국가별 매출이 과거 주문을 고객이 그때 실제로 있던 곳에 attribute 해야 함, 지금 있는 곳 아니라.