Power BI에서 스키마 및 데이터 모델링: 초보자 친화적인 단계별 가이드
Source: Dev.to
위에 제공된 내용 외에 번역할 텍스트가 없습니다. 번역이 필요한 본문을 제공해 주시면 한국어로 번역해 드리겠습니다.
Source:
Introduction
Power BI 작업 시 가장 중요한 기술 중 하나가 데이터 모델링입니다. 데이터 자체가 정확하더라도, 부실한 데이터 모델링은 보고서 속도 저하, 잘못된 수치, 혼란스러운 시각화로 이어질 수 있습니다.
이 문서는 처음부터 Power BI에서 스키마와 데이터 모델링이 어떻게 작동하는지 설명합니다. 초보자가 단계별로, 클릭마다 따라가며 올바른 모델을 구축할 수 있도록 작성되었습니다.
배우게 될 내용:
- Power BI에서 데이터 모델링이 의미하는 바
- 사실 테이블과 차원 테이블의 차이
- 스타 스키마와 스노우플레이크 스키마
- 관계(일대다, 카디널리티, 필터 방향)
- 좋은 모델링이 성능과 정확성을 향상시키는 이유
- Power BI에서 깔끔한 데이터 모델을 만드는 방법(단계별)
Power BI에서 데이터 모델링이란?
데이터 모델링은 다음과 같은 과정을 말합니다:
- 테이블 정리
- 테이블 간 관계 정의
- Power BI가 데이터를 효율적으로 분석할 수 있도록 구조화
데이터 모델링을 집의 기초 설계에 비유해 보세요 – 기초가 약하면 위에 세운 모든 것이 무너지게 됩니다.
왜 좋은 데이터 모델링이 중요한가?
- 성능 – 잘 설계된 모델은 로드 속도가 빠르고 쿼리 응답이 신속합니다
- 정확성 – 올바른 관계 설정으로 계산 및 집계가 정확해집니다
- 확장성 – 좋은 모델은 데이터 양이 증가해도 성능 저하 없이 처리할 수 있습니다
- 유지보수성 – 깔끔한 모델은 업데이트와 문제 해결이 용이합니다
- 사용자 경험 – 빠르고 정확한 보고서는 더 나은 비즈니스 의사결정을 이끌어냅니다
Power BI에서 데이터 모델링은 주로 다음 영역에서 수행됩니다:
- 모델 보기 – 관계 다이어그램
- 데이터 보기 – 테이블 구조
사실 테이블과 차원 테이블
사실 테이블
사실 테이블은 비즈니스 프로세스에 대한 정량적 데이터(측정값)를 포함하는 데이터 모델의 중심 테이블입니다. “무슨 일이 있었는가”를 기록하는 테이블이라고 생각하면 됩니다.
사실의 예시
- 매출 금액
- 판매 수량
- 이익
- 수율
사실 테이블의 특징
- 수치형 측정값(매출 금액, 수량, 비용, 이익)을 포함
- 행이 많음(수백만 레코드까지 가능)
- 차원 테이블과 연결되는 외래 키를 포함
- 비즈니스 이벤트 또는 거래를 나타냄
- 열은 적고(컬럼 수가 적음) 행은 매우 많음
예시: Sales_Fact 테이블
| Column | Description |
|---|---|
| SaleID | 기본 키 |
| DateKey | Date 차원에 대한 외래 키 |
| ProductKey | Product 차원에 대한 외래 키 |
| CustomerKey | Customer 차원에 대한 외래 키 |
| StoreKey | Store 차원에 대한 외래 키 |
| Quantity | 측정값(판매된 단위) |
| SalesAmount | 측정값(수익) |
| Cost | 측정값(매출원가) |
| Profit | 측정값(매출 – 비용) |

차원 테이블
차원 테이블은 설명적 정보(컨텍스트)를 저장합니다.
차원의 예시
- 날짜
- 제품
- 고객
- 위치
차원 테이블의 특징
- 텍스트 또는 카테고리 데이터를 포함
- 사실 테이블보다 작음
- 필터링 및 그룹화에 사용
예시: Product_Dimension 테이블

스키마란 무엇인가?
스키마는 사실 테이블과 차원 테이블이 어떻게 연결되는지를 정의하는 구조입니다.
Power BI에서 가장 일반적인 두 가지 스키마는 다음과 같습니다:
- 스타 스키마 ⭐ (권장)
- 스노우플레이크 스키마 ❄️
스타 스키마 (강력히 권장)
스타 스키마란?
스타 스키마는 다음을 가집니다:
- 하나의 중앙 사실 테이블
- 여러 차원 테이블이 직접 연결됨
별 모양처럼 보입니다.

왜 스타 스키마가 Power BI에서 최적인가
- ✔ 더 빠른 성능
- ✔ 더 간단한 DAX 수식
- ✔ 정확한 집계
- ✔ 이해하기 쉬움
Power BI 엔진(VertiPaq)은 스타 스키마에 최적화되어 있습니다.
단계별: Power BI에서 스타 스키마 만들기
단계 1 – 데이터 로드
- Power BI Desktop을 엽니다.
- Home 탭 → Get Data를 클릭합니다.
- 데이터 소스(Excel, CSV, SQL 등)를 선택합니다.
- Load를 클릭합니다.
단계 2 – 데이터 보기에서 테이블 확인
- 왼쪽 패널의 Data 아이콘(테이블)을 클릭합니다.
- 각 테이블을 열어 다음을 식별합니다:
- 사실 테이블(숫자형 컬럼 포함)
- 차원 테이블(설명형 컬럼 포함)
단계 3 – 모델 보기로 이동
- 왼쪽의 Model 아이콘(다이어그램)을 클릭합니다.
- 각 테이블이 박스로 표시됩니다.
단계 4 – 관계 만들기
Product_Dim에서 ProductID를 끌어옵니다.Sales_Fact의 ProductID에 놓습니다.- Create Relationship 창에서 다음을 설정합니다:
- Cardinality: One to Many (1:)*
- Cross filter direction: Single
- 차원 테이블이 1쪽에 있는지 확인합니다.
- OK를 클릭합니다.
다른 차원(날짜, 고객, 위치)에도 동일한 과정을 반복합니다.
스노우플레이크 스키마
스노우플레이크 스키마란?
스노우플레이크 스키마는 차원 테이블이 정규화되고 다른 차원 테이블과 연결되어 “스노우플레이크” 형태의 패턴을 이루는 변형입니다.
왜 … (원본에서 섹션이 잘려 있음)
Note: 원본 내용이 “Why S”에서 갑자기 끝납니다. 이 섹션의 나머지 부분을 추가하여 스노우플레이크 스키마에 대한 논의를 완성해야 합니다.
Snowflake은 Power BI에서 덜 이상적입니다
- ❌ 느린 성능
- ❌ 더 복잡한 관계
- ❌ 더 어려운 DAX 수식
Power BI는 차원이 비정규화(플랫)될 때 더 잘 작동합니다.
모범 사례: 가능한 경우 스노우플레이크 스키마를 스타 스키마로 변환하십시오.
Power BI에서 관계 이해하기
카디널리티
- One‑to‑Many (1:*) – 가장 일반적이며 권장됨
- Many‑to‑Many – 절대 필요하지 않은 경우 피하십시오
필터 방향
- Single Direction – 권장됨
- Both Directions – 잘못된 합계가 발생할 수 있음
Rule: 필터는 Dimension → Fact 방향으로 흐르게 해야 합니다.
좋은 데이터 모델링이 중요한 이유
성능
| Bad model | Good model |
|---|---|
| • Slow visuals | • Fast reports |
| • High memory usage | • Efficient calculations |
정확성
Poor modelling can cause:
- Double counting
- Incorrect totals
- Misleading reports
Correct modelling ensures:
- Accurate aggregations
- Reliable business decisions
초보자 흔히 하는 실수 (피해야 할 것들)
- ❌ 여러 개의 사실 테이블을 직접 연결
- ❌ 모든 곳에 다대다 관계
- ❌ 필요 없는 스노우플레이크 스키마
- ❌ 사실 테이블을 필터로 사용
✔ 항상 스타 스키마 사고방식으로 설계하세요.
결론
Power BI에서 데이터 모델링은 선택 사항이 아니라 필수입니다.
요약:
- 숫자는 팩트 테이블을 사용
- 설명은 디멘션 테이블을 사용
- 스타 스키마 구축
- 일대다 관계 사용
- 필터 방향은 단일로 유지
데이터 모델이 깔끔하면 다른 모든 것이 더 쉬워집니다—DAX, 시각화, 성능 등.
