short terms
Kimball’s Dimensional Modeling
presentj94
2023. 7. 18. 15:12
Kimball’s Dimensional Modeling
차원 모델링은 데이터 웨어하우스레벨에서 유용한 데이터 모델링 기법입니다.
Star Schema로 데이터를 정의하는 기법으로, 기존의 테이블을 변경하지 않고 새로운 컬럼을 추가하는 것과 같은 효과를 누릴 수 있게 합니다. 즉, 확장성과 재사용성 면에서 뛰어난 장점이 있습니다.
1. Design Process
설계 프로세스는 다음 네 단계로 정의할 수 있습니다.
business Process
를 정의Fact
의 성능 메트릭을 생성하거나 캡쳐하는 단계
- e.g.) 주문접수, 보험청구, 수강생 등록 등 운영 활동
grain
을 정의- 데이터를 유일하게 식별하는 식별자 → PK 또는
여러 키의 조합
(하단 링크)이 될 수 있음
Fact Table Surrogate Key | Kimball Dimensional Modeling TechniquesFact table surrogate keys, which are not associated with any dimension, are assigned sequentially during the ETL load process.https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/fact-surrogate-key/
- 데이터를 유일하게 식별하는 식별자 → PK 또는
dimensions
를 정의Business Process
에 대해 육하원칙의 정보를 추가합니다.- 누가, 무엇을, 어디서, 언제, 왜, 어떻게
- 팩트를 필터링, 그룹화하기 위한 설명 속성
facts
를 정의Business Process
의 결과이며, 측정값들이 포함됩니다.
- e.g.) 소액 판매 거래에서, 판매된 제품의 수량과 가격
2. Fact Modeling
Fact
는 수치 측정의 결과 기록과 같습니다.- 수치 측정은 세 가지로 나뉩니다.
- 가산
- 가장 유연하고 유용한 팩트 측정입니다.
- 전체 차원에 걸친 합산
- 반가산
- 일부 차원에서 합산
- e.g.) 잔액 등
- 비가산
- 비율 등
- 가산
- 수치 측정 결과는 null이 될 수 있습니다. (
필수 키
가 null이 아니면 됩니다.)\
- 수치 측정은 세 가지로 나뉩니다.
필수 키
- 차원 연결을 위한 FK, 선택적 Dimension Key, 날짜/시간 스탬프가 항상 포함되어야 합니다.
- 쿼리에서 발생하는 계산, 동적 집계의 기본 대상입니다.
- 팩트의 종류는 다음과 같습니다.
- Transaction
- 공간, 시간상 한 지점에서의 측정 이벤트
- 가장 흔히 사용되는 유형
- Periodic Snapshot
- 특정 기간동안의 측정 데이터를 지표화하여 저장
- 비즈니스의 시간 경과에 따른 변화를 추적하고 분석하는 데 사용
- e.g.) 매월 말 일의 재고량, 매주 매출액, 분기별 고객 등록 수, 등
- Factless
- 수치 결과가 없지만, 차원 엔티티가 있는 테이블
- e.g.) 수업 참석 이벤트 등
- Aggregate
- 기간 외 다른 속성으로 집계 요약한 테이블
- 성능 향상을 위해, 특정 측정 항목을 기준으로 그룹화된 데이터를 저장.
- 큰 데이터 집합을 빠르게 집계, 분석하기 위한 테이블
- Consolidated
- 같은 수준의 여러 팩트를 한 팩트 테이블로 결합시킨 경우
- Transaction
3. Dimension Modeling
- 일반적으로 카디널리티가 낮은 텍스트 속성이 많습니다.
- 비정규화가 특징입니다.
- 하위 요소를 정규화할 수 있지만, 그 경우 star schema가 아닌 snowflake schema가 됩니다.
Snowflaked Dimension | Kimball Dimensional Modeling TechniquesA flattened denormalized dimension table contains exactly the same information as a snowflaked dimension.https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/snowflake-dimension/
- star schema는 단순성과 속도라는 두 가지 목표를 달성하게 합니다.
- 비정규화가 특징입니다.
- 최대한 null값을 포함하지 않아야 합니다.
- SCD Types (Slowly Changing Dimension Techniques)
- 주로 type 0~3을 사용하며, 4~7은 조인이 필요한 차원을 생성하게 되어, 복잡성, 비용 등 측면에서 부정적일 수 있음. (https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/dimension-to-dimension-join/)
- Type 0 :
Retain Original
- 원본 유지 속성 (영구적, 불변)
- Type 1 :
Overwrite
- 이전 속성 값을 덮어씀 (최근 할당 기준)
- Type 2 :
Add new row
- 새 행을 추가함 (설명 관련 여러 행 존재할 수 있음)
- 다중 값 차원을 유지하려는 경우
- e.g.) 은행 계좌들과 개별 고객 간의 다대다 관계
- 해당 타입은 다음 세 가지 속성을 추가해야 함
- 유효 날짜 또는 시간
- 만료 날짜 또는 시간
- id (중복 방지용 구분자)
- Type 3 :
Add new attribute
- 이전 속성 값을 덮어씀 (Type 1과 동일)
- 기존 속성과 새롭게 추가된 속성을 동시에 유지하면서, 사용자가 선택하여 그룹화, 필터링할 수 있게 하기 위한 용도.
- 거의 드물게 사용됨
- Type 4 :
Add mini-dimension
- 속성 그룹이 빠르게 변경되는 경우에 사용
- 수백만 행의 차원 테이블에서 자주 사용되는 속성의 경우, 빠르게 변경되지 않더라도 고려할 수 있음
- e.g. 고객 데이터에서 건강 상태 차원이 자주 변경되는 경우
- 건강 상태를 별도로 관리하여 미니 차원으로 생성
- 고객 상태가 변경될 때, 새로운 행을 추가하는 대신 미니 차원만 변경
- Type 5 :
Add mini-dimension and Type 1 Outrigger
- Type 1 + Type 4
- Outrigger
- 차원 테이블과 1:1 관계를 가지며, 테이블의 일부 속성을 분리하여 저장하는 역할
- 차원 테이블의 변경 없이 새로운 정보를 관리할 수 있게 하기 위함
- e.g. 고객 데이터에서 건강 상태 차원이 자주 변경되는 경우
- Outrigger Table에 최신 건강 상태 덮어씌움
- Mini-dimension에 건강 상태 정보를 추가
- Type 6 :
Add Type 1 Attributes to Type 2 Dimension
- Type 2 + Type 1
- 차원 테이블의 변경을 다루는 방식
- Type 2이던 차원에 Type 1을 부여함. 즉 주 타입은 2
- e.g. 제품 차원 테이블
- 제품의 가격이 변동될 때, Type 1으로 업데이트
- 나머지 속성들은 Type 2로 유지
- Type 7 :
Dual Type 1 and Type 2 Dimensions
- 차원 테이블의 변경을 다루는 방식
- 두 타입의 차원 테이블로 복제하여, PK를 공유하도록 하여 병합
- e.g. 사원 차원 테이블
- 직책과 부서는 Type 1 테이블에 저장, 실시간 조회
- 입사일은 Type 2 테이블에 저장, 히스토리 추적
- 차원 테이블의 변경을 다루는 방식
Behavior Study Groups
- 고객 행태 분석을 위해 복잡하고 반복적인 분석이 필요한 경우, 분석 결과 고객 Key만 저장하는 스터디 그룹을 만들어 유지할 수 있음.
- 일종의 필터로서 고객의 Key로 분리할 수 있음.
- 스터디그룹 간 교집합, 차집합, 합집합으로 파생 스터디그룹을 생성할 수 있음.