Power BI의 스키마 및 데이터 모델링
Source: Dev.to
위 링크에 포함된 전체 텍스트를 제공해 주시면, 해당 내용을 한국어로 번역해 드리겠습니다. (코드 블록, URL 및 마크다운 형식은 그대로 유지됩니다.)
Introduction
데이터 모델링은 Power BI에서 가장 중요한 단계 중 하나입니다. 잘 설계된 데이터 모델은 성능, 정확성 및 분석 용이성을 향상시키는 반면, 부실한 모델은 보고서가 느려지고 잘못된 인사이트를 초래할 수 있습니다. 이 문서는 Power BI의 스키마와 데이터 모델링 개념을 설명합니다.
스키마란 무엇인가?
스키마는 Power BI 보고서에서 사용되는 테이블들의 논리적 배열을 의미합니다. 스키마는 다음을 결정하는 데 도움을 줍니다:
- 데이터가 어떻게 연결되는지
- 필터가 테이블 간에 어떻게 흐르는지
- 쿼리가 얼마나 효율적으로 실행되는지
Power BI의 스키마 유형
갤럭시 스키마
차원은 하위 차원으로 분할되며, 이는 다시 더 작은 테이블로 나눌 수 있습니다.
스타 스키마
Power BI(및 Excel)에서 가장 일반적인 스키마입니다. 구성 요소는 다음과 같습니다:
- 하나의 사실 테이블
- 여러 차원 테이블
장점
- 빠른 쿼리 성능
- 간단한 DAX 수식
- 예측 가능한 필터 동작
- 이해하기 쉬움
스노우플레이크 스키마
차원 테이블이 추가 차원 테이블로 정규화되어 보다 복잡한 관계 네트워크를 형성합니다.
시사점
- 쿼리 시 조인이 더 많이 발생하여 성능이 저하될 수 있습니다.
- 필터 동작이 더 복잡해집니다.
- DAX 수식 작성 및 유지 관리가 어려워집니다.
사실 및 차원 테이블
사실 테이블
- 분석을 위한 정량적 데이터(측정값) 저장
- 수치값과 많은 행을 포함
- 키(예:
CustomerID)를 사용해 차원 테이블을 참조
차원 테이블
- 사실에 컨텍스트를 제공하는 설명 정보를 제공
- 텍스트 또는 범주형 데이터를 포함하며, 일반적으로 사실 테이블보다 행 수가 적음
- 필터링 및 그룹화에 사용 (예: 날짜, 제품, 고객, 위치)
관계
관계는 일반적으로 키를 통해 한 테이블의 열을 다른 테이블의 열에 연결합니다.
Example
Sales[ProductID] → Product[ProductID]
일대다 (권장)
- 차원 테이블의 한 레코드가 사실 테이블의 여러 일치 레코드와 연결됩니다
- 스타 스키마에서 사용됩니다
- 필터가 차원 테이블에서 사실 테이블로 흐릅니다 (단방향)
일대일 (드물게)
- 각 값이 두 테이블 모두에서 한 번씩 나타납니다
- 필터가 양방향으로 흐르며, 이는 혼란과 성능 문제를 일으킬 수 있습니다
- 필요할 때만 사용해야 합니다
다대다 (가능하면 피하세요)
- 두 테이블에 중복 값이 있을 때 발생합니다
- 모호한 결과를 초래할 수 있으므로 필요하지 않은 한 피해야 합니다
Best Practices for Relationships
- 관계를 가능한 한 일대다로 유지하세요
- 단방향 필터링 사용 (차원 → 사실)
- 단순성과 성능을 위해 스타 스키마를 선호하세요
- 관계를 올바르게 정의하여 잘못된 합계, 느린 시각화, 깨진 슬라이서 등을 방지하세요
스타와 스노우플레이크 스키마
| 항목 | 스타 스키마 | 스노우플레이크 스키마 |
|---|---|---|
| 구조 | 모든 차원 테이블이 사실 테이블에 직접 연결됩니다 | 차원 테이블이 다른 차원 테이블에 연결됩니다 |
| 관계 유형 | 일대다 | 일대다 (추가 관계 포함) |
| 필터 방향 | 단일 (차원 → 사실) | 여러 방향을 포함할 수 있음 |
| 성능 | 조인 수가 적어 더 빠름 | 추가 조인으로 인해 잠재적으로 느림 |
| 복잡성 | DAX와 유지보수가 더 간단함 | DAX와 유지보수가 더 복잡함 |
Conclusion
우수한 데이터 모델링은 효과적인 Power BI 보고의 기반입니다. 스타(또는 필요에 따라 스노우플레이크)와 같은 잘 구조화된 스키마를 사용하고 올바른 관계를 정의함으로써 성능을 향상시키고, 정확한 계산을 보장하며, 이해하고 유지 관리하기 쉬운 보고서를 만들 수 있습니다. 적절한 모델링에 시간을 투자하면 더 빠른 인사이트와 보다 신뢰할 수 있는 의사결정을 얻을 수 있습니다.