Power BI에서 스키마와 데이터 모델링 이해하기
Source: Dev.to
Power BI 개요
Power BI는 다양한 소스의 데이터 세트를 연결하고, 해당 데이터를 변환하며, 인터랙티브한 시각 보고서와 대시보드를 만드는 데 필수적인 도구입니다.
많은 초보자들이 schemas와 data models의 차이점에 대해 궁금해합니다.
- Schemas는 분석을 위해 데이터를 어떻게 구조화할지 개념화하는 구체적인 설계입니다.
- Data models는 선택된 스키마를 구현한 것입니다.
따라서 Power BI에서의 데이터 모델링은 여러분이 만든 스키마에 따라 달라집니다.
일반 용어
사실 테이블
핵심 비즈니스 데이터(예: 매출 또는 거래 데이터)를 저장하며 정기적으로 변경됩니다. 사실 테이블은 일반적으로 다음을 포함합니다:
- 차원 테이블과 연결되는 차원 키 열.
- 요약을 가능하게 하는 수치 측정 열.
차원 테이블
거래 데이터와 관련된 추가 정보(조회/설명 데이터)를 저장하며 대부분 일정합니다. 차원 테이블은 다음을 포함합니다:
- 고유 식별자로 작동하는 키 열(또는 열들).
- 필터링 및 그룹화를 지원하는 기타 열들.
정규화된 데이터
중복 정보를 줄이는 방식으로 저장된 데이터.

비정규화된 데이터
행에 중복 정보가 포함된 방식으로 저장된 데이터.
1. 스키마 설계 (계획 단계)
Power BI에 데이터를 가져오기 전에 분석을 위해 어떻게 구조화할지 결정합니다. 스타 스키마가 가장 선호되는 접근 방식입니다: 중앙에 사실 테이블이 있고 차원 테이블이 그 주위를 둘러싸고 있습니다.
잘 설계된 스키마는 다음을 보장합니다:
- 성능 향상
- 보다 쉬운 DAX 개발
- 보다 정확한 보고서
실행할 작업: 사실 테이블과 차원 테이블을 결정하고, 그 사이의 관계 식별을 수행합니다 (Microsoft Docs – Create and manage relationships).
스키마 유형
1. 스타 스키마
사실 테이블이 중앙에 위치하고, 여러 차원 테이블이 그 주위를 둘러싸고 있습니다. Power BI의 엔진은 이 레이아웃에서 가장 잘 작동합니다.

2. 스노우플레이크 스키마
스타 스키마와 유사하지만, 하나 이상의 차원 테이블이 추가로 정규화되어 하위 차원 테이블이 됩니다.

2. 데이터 모델링 (구현 단계)
데이터 모델링은 Power BI에서 스키마 설계를 실제로 적용하는 실무 과정입니다. 여기에는 다음이 포함됩니다:
- 데이터 가져오기.
- Power Query에서 데이터 정제.
- 테이블 생성.
- Modeling 보기에서 관계(예: 일대다) 설정.
즉, Power Query와 관계 보기(Relationship view)를 사용해 스타 스키마를 구현하는 것입니다.
의미 모델(Semantic Models)
의미 모델은 연결된 모든 데이터, 변환, 관계 및 계산으로 구성됩니다. 일반적인 Power BI 흐름은 다음과 같습니다:
- 데이터에 연결.
- 데이터 변환.
- 관계와 계산 생성 → 의미 모델.
Power BI의 관계
관계는 공통 열을 기준으로 테이블 간에 연결을 설정합니다. 이를 통해 여러 소스의 데이터를 하나의 정확한 보고서에서 사용할 수 있으며, 슬라이서와 시각화가 올바르게 상호 작용하도록 보장합니다.
일반적인 관계 유형
-
일대다 (1:M) / 다대일 (M:1) – 가장 일반적인 관계; 하나의 차원 테이블이 사실 테이블의 여러 행에 연결됩니다(예: 제품 → 매출).
-
일대일 (1:1) – 테이블 A의 각 레코드가 테이블 B의 정확히 하나의 레코드와 일치합니다; 드물며 보통 테이블을 병합할 수 있음을 시사합니다.

-
다대다 (M:M) – 한 테이블의 여러 행이 다른 테이블의 여러 행과 일치합니다; 일반적으로 브리지(연결) 테이블이 필요합니다.
Power BI에서 관계 만들기
자동 감지 기능 – 여러 테이블을 로드하면 Power BI가 자동으로 관계를 찾아 생성하려고 시도합니다. 이러한 자동 감지된 관계는 Model 보기에서 검토하고 편집할 수 있습니다.
Power BI 관계
자동 감지
Power BI는 데이터 테이블 내 열 이름을 기반으로 관계를 자동으로 감지할 수 있습니다.
이 기능을 사용하려면:
- Modeling 탭으로 이동합니다.
- Manage relationships ► Autodetect를 선택합니다.
관계 수동 만들기
Power BI가 관계를 자동으로 감지하지 못할 때(예: 열 이름이 다를 경우) 이 방법을 사용합니다.
- Modeling 탭에서 Manage relationships ► New를 선택합니다.
- Create relationship 대화 상자에서:
- 첫 번째 테이블과 사용할 열을 선택합니다.
- 두 번째 테이블과 사용할 열을 선택합니다.
- OK를 클릭합니다.
Power BI 관계의 핵심 요소
-
Cardinality – 테이블 간에 몇 개의 행이 연결되는지를 정의합니다. 옵션은:
- One‑to‑many (가장 일반적이며, 예: 한 고객에 여러 주문)
- One‑to‑one
- Many‑to‑many
-
Cross‑filter direction – 필터가 테이블 간에 흐르는 방향을 결정합니다:
- Single (기본값 – “one” 쪽에서 “many” 쪽으로 필터가 흐름)
- Both (양방향 – 필터가 양쪽으로 흐름; 주의해서 사용)
-
Active vs. Inactive – 두 테이블 사이에 직접 필터링을 위해 하나의 활성 관계만 존재할 수 있습니다. 추가적인 비활성 관계를 정의하고
USERELATIONSHIP같은 DAX 함수로 사용할 수 있습니다. -
Autodetect – Power BI는 데이터 로드 시 일치하는 열 이름을 기반으로 관계를 자동으로 찾고 생성할 수 있지만, 최적의 모델링을 위해 수동 설정이 종종 필요합니다.