Power BI에서 데이터 모델링 이해하기: 조인, 관계 및 스키마 설명
Source: Dev.to
번역하려는 텍스트를 제공해 주시면, 원본 형식과 마크다운 구문을 유지하면서 한국어로 번역해 드리겠습니다.
Table of Contents
- 데이터 모델링이란?
- SQL 조인: 기본
- Power BI 관계
- 사실 테이블 vs 차원 테이블
- 스키마 설계: 스타, 스노우플레이크 & 플랫 테이블
- 일반적인 모델링 문제 및 해결 방법
- Power BI에서 모든 작업 수행 위치
- 요약 및 주요 포인트
데이터 모델링이란?
데이터 모델링은 테이블 간의 관계를 정의하는 구조화된 형식으로 데이터를 조직하는 과정입니다. 설계 도면을 만드는 것과 비슷하게 생각하면 됩니다:
- 데이터가 어떻게 연결되는지 정의합니다
- 효율적인 쿼리를 보장합니다
- 데이터 정확성과 보고 성능을 향상시킵니다
Power BI에서는 데이터가 로드된 이후에 데이터 모델링이 이루어지며, 다음과 같은 작업을 포함합니다:
- 관계 만들기
- 테이블 구조 정의하기
- 테이블 간 데이터 흐름 최적화하기
Power BI는 데이터를 연결하는 두 가지 강력한 방법을 제공합니다:
- 조인 (Power Query에서) – 테이블을 물리적으로 결합
- 관계 (모델 보기에서) – 데이터를 복제하지 않고 논리적으로 테이블을 연결
Power Query에서 SQL 조인
조인은 Power Query Editor에서 테이블을 병합할 때 사용됩니다. 아래는 Customers ↔ Orders 데이터셋을 예시로 한 가장 중요한 조인 유형들입니다.

1. Inner Join
- 결과: 두 테이블에 모두 존재하는 레코드만 반환합니다.
- 예시: 주문을 한 고객만 표시합니다.
2. Left Join (Left Outer)
- 결과: 왼쪽 테이블의 모든 레코드와 오른쪽 테이블에서 일치하는 레코드를 반환합니다.
- 예시: 아직 주문하지 않은 고객도 포함하여 모든 고객을 나열합니다(유지 관리 분석에 유용).
3. Right Join (Right Outer)
- 결과: 오른쪽 테이블의 모든 행과 왼쪽 테이블에서 일치하는 행을 반환합니다.
4. Full Outer Join
- 결과: 두 테이블의 모든 행을 반환하며, 일치하지 않는 경우
NULL이 표시됩니다. - 예시: 두 시스템에서 가져온 고객 데이터를 통합합니다.
5. Left Anti Join
- 결과: 오른쪽 테이블에 일치하는 레코드가 없는 왼쪽 테이블의 행을 반환합니다.
- 예시: “한 번도 주문하지 않은 고객” — 타깃 마케팅에 적합합니다.
6. Right Anti Join
- 결과: 왼쪽 테이블에 일치하는 레코드가 없는 오른쪽 테이블의 행을 반환합니다.
- 예시: 고객 레코드가 없는 주문(데이터 품질 검사에 유용).
Power BI에서 조인이 이루어지는 위치
- Transform data → Power Query Editor 클릭.
- 테이블을 선택 → Home → Merge Queries.
- 두 번째 테이블과 일치하는 열을 선택.
- 조인 유형(Inner, Left Outer, Left Anti 등)을 선택.
- OK를 클릭하고 필요한 열을 확장합니다.
Power BI Relationships
SQL 조인과 달리 Power BI는 일반적으로 관계—모델 뷰에서 만든 논리적 연결—를 사용합니다. 이는 모델을 가볍고 성능 좋게 유지합니다.
Types of Relationships
| Cardinality | Description |
|---|---|
| 1 : M (One‑to‑Many) | 가장 일반적 (예: 한 고객 → 여러 주문) |
| M : M (Many‑to‑Many) | 여러 레코드가 여러 레코드와 연결됨; 신중히 다뤄야 함 |
| 1 : 1 (One‑to‑One) | 드물며, 보통 테이블을 분할할 때 사용 |
Key Concepts
- Cardinality – Power BI에 테이블 간 관계 유형을 알려줍니다 (One‑to‑Many, Many‑to‑Many).
- Cross‑Filter Direction – 필터가 흐르는 방향을 제어합니다:
- Single (권장)
- Both (신중히 사용)
- Active vs. Inactive Relationships –
- Active: 시각화와 DAX에서 자동으로 사용됩니다.
- Inactive:
USERELATIONSHIP()DAX 함수를 사용해 활성화해야 합니다 (역할 기반 차원에 매우 유용).
Where to Create Relationships
- Model View – 테이블 간 필드를 끌어다 놓습니다.
- Manage Relationships – Manage Relationships → New를 클릭하고 정의합니다:
- Columns
- Cardinality
- Cross‑filter direction

Source: …
Fact Tables vs Dimension Tables
Fact Tables
- 측정 가능한 데이터를 포함합니다 (예: 매출, 수익).
- 일반적으로 크고 트랜잭션 기반입니다.
- 차원 테이블과 연결되는 외래 키를 보유합니다.
Dimension Tables
- 설명적인 컨텍스트를 제공합니다 (예: 고객 이름, 제품 카테고리, 날짜, 지역).
- 규모가 작고 정적입니다.
- Fact 테이블에서 참조되는 기본 키를 보유합니다.
Golden Rule:
- Facts는 무슨 일이 일어났는지 알려줍니다.
- Dimensions는 누구, 무엇, 언제, 어디서를 알려줍니다.
스키마 설계: Star, Snowflake & Flat Table
(이 섹션의 내용은 여기 추가할 수 있습니다 – 원본 구절은 완성되기 전에 끝났습니다.)
일반적인 모델링 문제 및 해결 방법
(이 섹션의 내용은 여기에서 추가할 수 있습니다.)
Power BI에서 모든 작업을 수행하는 위치
(이 섹션에 대한 내용은 여기에서 추가할 수 있습니다.)
요약 및 주요 내용
(이 섹션에 대한 내용은 여기 추가할 수 있습니다.)
Fact vs Dimension 테이블에 대한 시각적 설명

데이터 스키마
1. 스타 스키마 (추천)
중앙에 하나의 사실 테이블이 있고 비정규화된 차원 테이블과 연결됩니다.
추천 대상: 대부분의 Power BI 프로젝트 – 뛰어난 성능과 간단한 DAX를 제공합니다.

Power BI 모델링 기본: 사실 테이블
2. 스노우플레이크 스키마
차원 테이블이 정규화되어 있습니다(여러 관련 테이블로 분할).
사용 사례: 대규모 기업 환경 또는 엄격한 정규화가 필요할 때.

스노우플레이크 스키마 구조
3. 플랫 테이블 (DLAT)
모든 데이터가 하나의 테이블에 있습니다.
사용 사례: 매우 작은 데이터셋이나 빠른 프로토타입(대규모 프로젝트에는 확장성이 없습니다).
역할 수행 차원 및 일반적인 문제
역할 수행 차원은 하나의 차원이 여러 용도로 사용될 때 발생합니다.
예시: 단일 Dim_Date 테이블이 주문 날짜, 배송 날짜, 그리고 납품 날짜에 사용되는 경우.
해결책: 여러 관계를 생성하고(대부분을 비활성으로 설정) DAX에서 USERELATIONSHIP()를 사용해 적절한 관계를 활성화합니다.
일반적인 모델링 문제
- 순환 종속성
- 모호한 관계(테이블 간 다중 경로)
- 다대다 혼란
- 너무 넓은 사실 테이블
해결 방법
- 단일 방향 관계를 선호합니다.
- 다대다 관계에는 브리지 테이블을 사용합니다.
- Model view에서 모델을 정기적으로 검토합니다.
Power BI 단계별 가이드
데이터 로드
- Power BI에 데이터 세트를 가져옵니다.
데이터 정리 (Power Query)
- 중복을 제거합니다.
- 필요에 따라 테이블을 병합(조인)합니다.
관계 만들기
- 모델 보기를 사용합니다.
- 카디널리티와 방향을 정의합니다.
스키마 최적화
- 가능한 경우 스타 스키마를 사용합니다.
모델 검증
- 필터와 시각화가 예상대로 작동하는지 테스트합니다.
최종 생각
데이터 모델링은 모든 강력한 Power BI 보고서의 기반입니다. 조인, 관계 및 스키마를 이해하면 다음과 같은 모델을 구축할 수 있습니다:
- 정확함
- 확장성
- 고성능
데이터 분석 역량이 성장함에 따라 데이터 모델링을 마스터하면 대시보드 제작자에 그치지 않고 데이터를 진정으로 이해하는 사람으로 차별화될 수 있습니다.
- 먼저 Star Schema부터 시작하세요.
- 데이터 정리를 위해 SQL joins를 숙지하세요.
- 분석을 위해 관계를 현명하게 활용하세요.
- 모델을 단순하고 성능 좋게 유지하세요.
이제 전문적인 Power BI 모델을 구축할 수 있는 완전한 툴킷을 갖추었습니다.
모델링을 즐기세요!