755 words
4 minutes
[DW]Dimensional Modeling: Basics
Overview
차원모델링의 기초 개념에 대해 정리한다.
1. 차원 모델링
차원 모델링(Dimensional Modeling)은 Ralph Kimball이 제시한 데이터 웨어하우스 설계 방법론으로, 비즈니스 유저가 이해하기 쉽고 분석하기 편한 구조로 데이터를 구성하는 기법.
-
팩트 테이블 (Fact Table) : 비즈니스 프로세스의 측정 가능한 수치 데이터를 저장하는 테이블
-
차원 테이블 (Dimension Table) : 팩트의 맥락을 제공하는 설명적 속성들을 저장.
- 데이터 필터 및 분류의 기준을 제공. 쿼리 필터링,제한, 그룹화에 사용
- 분석과 리포팅을 위한 사용자 친화적인 라벨 제공
-- fact_salesCREATE TABLE fact_sales ( date_key INT, product_key INT, customer_key INT, sales_amount DECIMAL(10,2), quantity INT);
-- dim_productCREATE TABLE dim_product ( product_key INT PRIMARY KEY, product_name VARCHAR(100), category VARCHAR(50), brand VARCHAR(50));
## 2. 차원 모델링 설계 프로세스
### 1단계: 비즈니스 프로세스 선택
- 비즈니스에서 측정하고자 하는 활동을 식별
```python# retail business_processes
business_processes = [ "판매 (Sales)", "재고 관리 (Inventory)", "구매 (Procurement)", "고객 서비스 (Customer Service)"]2단계: 그레인(Grain) 선언
- 팩트 테이블의 각 행이 나타내는 세부 수준을 정의
- grain은 fact table의 하나의 row가 나타내는 정보의 세부 수준을 정의한다.
# 판매 팩트의 그레인 예제
grain_definition = { "level": "각각의 개별 판매 거래 라인 아이템", "time_grain": "일별", "description": "특정 날짜에 특정 고객이 특정 제품을 구매한 각 라인"}
### 3단계: 차원 식별
- 그레인에 맞는 차원들을 식별
```sql
-- 판매 팩트에 대한 차원
-- 시간 차원: 언제 판매가 발생한 시점-- 고객 차원: 구매한 고객의 특성-- 제품 차원: 제품의 설명적 속성들-- 매장 차원: 매장의 설명적 속성들4단계: 팩트 식별
- 측정하고자 하는 수치들을 결정
facts = { "additive_facts": ["sales_amount", "quantity", "cost"], "semi_additive_facts": ["inventory_balance"], # 시간에 대해서만 더할 수 없음 "non_additive_facts": ["unit_price", "profit_margin"] # 더할 수 없음}
---
**_Concept_**
- **차원모델링** : 비즈니스 유저 친화적인 데이터 웨어하우스 설계 방법론- **팩트테이블** : 비즈니스 프로세스와 관련한 측정값을 저장 sales, inventory 등- **차원테이블** : 팩트의 맥락을 제공하는 설명적 속성들을 저장하는 테이블. 핵심 역할은 데이터 필터 및 분류, 라벨링 제공- **그레인** : 팩트 테이블의 각 로우가 나타내는 정보의 세부수준에 대한 명세- **스타스키마** : 중앙 팩트 테이블과 비정규화된 차원 테이블로 구성된 구조 기본적으로 OLAP에서 사용. 차원 테이블이 비정규화된 이유는 조인 회수를 줄여서 조회 속도를 빠르게 하기 위함.
---
## References
- https://learn.microsoft.com/ko-kr/fabric/data-warehouse/dimensional-modeling-dimension-tables- https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/grain/ [DW]Dimensional Modeling: Basics
https://yjinheon.netlify.app/posts/02de/data-warehouse/de-dw-01_dm_basics/