Power BI에서 스키마 및 데이터 모델링

발행: (2026년 2월 3일 오전 04:08 GMT+9)
18 min read
원문: Dev.to

Source: Dev.to

위에 제공된 Source 링크만으로는 번역할 본문이 없습니다. 번역을 원하는 텍스트(마크다운 형식 포함)를 제공해 주시면, 요청하신 대로 한국어로 번역해 드리겠습니다.

Source:

Power BI에서 데이터 모델링

Power BI를 떠올리면 대시보드—다채로운 차트, 큰 수치 카드, 클릭 가능한 슬라이서, 그리고 다듬어진 시각화—가 바로 눈에 들어옵니다. 사용자는 이러한 요소와 상호작용하기 때문에, 보고서가 “좋다”고 평가받는 기준이 바로 대시보드라고 생각하기 쉽습니다.

실제로 대시보드는 최종 단계에 불과합니다. 화면에 시각화가 나타나기 훨씬 전, 중요한 결정들이 이미 내려져 있습니다. 그 결정들은 보고서가 빠른지 느린지, 신뢰할 수 있는지 오해를 불러일으키는지, 직관적인지 답답한지를 좌우합니다. 바로 그 이전 단계—대부분 눈에 보이지 않는—가 데이터 모델링입니다.

데이터 모델링은 Power BI가 데이터가 무엇을 의미하는지, 그리고 서로 다른 데이터 조각들이 어떻게 연결되는지를 이해하도록 데이터를 조직하는 과정입니다. 여기에는 다음과 같은 결정을 포함합니다:

  • 어떤 테이블이 필요할까?
  • 각 테이블에 무엇을 담아야 할까?
  • 그 테이블들을 어떻게 연결할까?

구조가 잘 설계되면 Power BI는 논리적이고 예측 가능하게 동작합니다. 반대로 설계가 부실하면, 간단한 질문조차 혼란스럽거나 잘못된 결과를 반환할 수 있습니다. 즉, Power BI 보고서의 품질은 첫 번째 차트를 만들기 에 이미 결정되는 것입니다.

Power BI에서 “스키마”가 의미하는 것

Power BI에서 스키마는 데이터 모델의 전체 구조를 말합니다. 이것은 추상적인 개념이 아니라 모델 보기에서 실제로 보는 레이아웃이며, 테이블과 테이블 간의 관계를 포함합니다.

스키마는 다음과 같은 실용적인 질문에 답합니다:

  • 모델에 어떤 테이블이 존재하나요?
  • 어떤 테이블이 측정값을 저장하고, 어떤 테이블이 설명 데이터를 저장하나요?
  • 사용자가 슬라이서를 클릭하면 Power BI가 어떤 데이터를 포함해야 하는지 어떻게 알게 되나요?

Power BI는 인간처럼 데이터를 “추론”하지 않습니다. 사용자가 정의한 경로를 그대로 따릅니다. 스키마가 결정하는 내용은 다음과 같습니다:

  • 필터가 한 테이블에서 다른 테이블로 어떻게 이동하는지,
  • 총합 및 평균이 어떻게 계산되는지,
  • 사용자가 보고서와 상호작용할 때 시각화가 얼마나 빠르게 반응하는지.

Power BI 모델에서 가장 흔히 나타나는 두 가지 스키마 패턴은 다음과 같습니다:

  • 스타 스키마
  • 스노우플레이크 스키마

Star Schema vs Snowflake Schema

이 두 스키마의 차이를 이해하면 일부 Power BI 모델이 단순하고 신뢰할 수 있게 느껴지는 반면, 다른 모델은 취약하고 예측하기 어렵게 느껴지는 이유를 설명할 수 있습니다.

사실 테이블과 차원 테이블: 역할 이해

대부분의 Power BI 모델은 두 종류의 테이블을 사용하여 구축됩니다. 각 테이블이 수행하는 역할을 아는 것이 데이터 모델링의 기본입니다.

사실 테이블 – 발생한 일 기록

사실 테이블은 이벤트를 기록합니다. 각 행은 실제로 발생한 무언가를 나타냅니다.

Kenya crops data와 같은 데이터셋에서 사실 테이블의 한 행은 다음을 나타낼 수 있습니다:

  • 특정 작물,
  • 특정 카운티에서 재배된,
  • 특정 연도 또는 시즌에,
  • 킬로그램 단위 수확량과 같은 측정 가능한 결과를 포함합니다.

이러한 이벤트가 시간에 따라 반복적으로 기록되기 때문에 사실 테이블은 일반적으로:

  • 매우 크게 성장하고,
  • 동일한 작물이나 카운티가 여러 번 반복되며,
  • 합계, 평균, 또는 개수를 구할 수 있는 숫자 값에 초점을 맞춥니다.

사실 테이블은 작물이 무엇인지, 카운티가 어디에 위치하는지를 설명하지 않으며; 단순히 무언가가 발생했음을 기록합니다.

차원 테이블 – 이벤트에 의미 부여

차원 테이블은 사실을 설명하고 맥락을 제공합니다. 사실 테이블의 각 행에 이름과 설명을 반복하는 대신, 해당 정보는 다음과 같은 별도 테이블에 한 번만 저장됩니다:

  • 작물 이름과 유형을 저장하는 Crop 테이블,
  • 카운티 이름을 포함하는 County 테이블,
  • 연도 또는 시즌을 포함하는 Date 테이블.

차원 테이블은 일반적으로:

  • 사실 테이블에 비해 천천히 변하고,
  • 숫자 데이터보다 서술적 데이터를 포함하며,
  • 보고서에서 결과를 필터링, 그룹화 및 라벨링하는 데 사용됩니다.

슬라이서에서 카운티나 작물을 선택하면 Power BI는 차원 테이블을 사용하여 사실 테이블의 어떤 행을 포함할지 결정합니다. 이러한 분리가 분석을 효율적이고 정확하게 만드는 이유입니다.

The Star Schema: A Structure That Matches How Power BI Thinks

Star schema는 Power BI 모델에 가장 효과적이고 널리 권장되는 구조입니다.

Star schema에서는:

  • 하나의 fact table이 중앙에 위치합니다(예: 작물 수확량 기록).
  • dimension table이 해당 fact table에 직접 연결됩니다(작물, 군, 날짜).
  • Dimension table들은 서로 연결되지 않습니다.

Star Schema

How Filtering Works in a Star Schema

슬라이서에서 군을 선택하면 Power BI는 다음과 같이 동작합니다:

  1. County 테이블을 확인합니다.
  2. 선택된 군의 고유 키를 식별합니다.
  3. 관계를 따라 직접 fact table로 이동합니다.
  4. 일치하는 행만 남깁니다.
  5. 해당 행들을 사용해 계산을 수행합니다.

각 차원이 fact table에 바로 연결되어 있기 때문에, 필터가 분석 중인 데이터로 직접 전달됩니다. Power BI는 중간 테이블을 거칠 필요가 없으므로 계산이 일관되게 동작합니다. 이는 구조 자체가 많은 분석 로직을 처리하게 하여, 이후 복잡한 DAX 수식의 필요성을 크게 줄여줍니다.

Why the Star Schema Performs Better in Power BI

Power BI는 데이터를 columns에 저장하고 빠른 집계에 최적화되어 있습니다. 관계가 simple and unambiguous할 때 가장 좋은 성능을 발휘합니다.

Star schema에서는 다음과 같은 점을 확인할 수 있습니다:

  • Power BI는 모든 필터에 대해 하나의 명확한 관계 경로를 따릅니다.
  • 쿼리를 처리하기 위해 필요한 조인 수가 줄어들어 계산 속도가 빨라집니다.
  • 모호함과 순환 관계가 방지되어 결과가 보다 신뢰할 수 있습니다.
  • 모델을 이해하고, 유지 보수하며, 확장하기가 더 쉽습니다.

핵심 요약

대시보드의 시각적 다듬기는 빙산의 일각에 불과합니다. 고성능이며 신뢰할 수 있는 Power BI 보고서의 진정한 기반은 잘 설계된 데이터 모델이며—가능하면 명확히 정의된 사실 테이블과 차원 테이블로 구성된 스타 스키마가 이상적입니다. 그 보이지 않는 레이어에 시간을 투자하면, 시각화는 자동으로 아름답고 그리고 신뢰할 수 있게 됩니다.

스노우플레이크 스키마: 조금 더 복잡함

스노우플레이크 스키마는 스타 스키마와 동일한 아이디어에서 시작하지만, 설명 정보를 여러 관련 테이블에 나눕니다.

예를 들어, 모든 위치 세부 정보를 단일 County 테이블에 저장하는 대신, 데이터는 다음과 같이 구성될 수 있습니다:

  • 카운티 정보를 저장하는 County 테이블,
  • 지역 정보를 저장하는 Region 테이블,
  • 국가 정보를 저장하는 Country 테이블.

사용자가 국가를 선택하면 Power BI는 데이터를 도달하기 전에 더 긴 경로를 따라야 합니다:

  1. Country 테이블에서 시작합니다.
  2. Region 테이블로 이동합니다.
  3. County 테이블로 이동합니다.
  4. 마지막으로 Fact 테이블에 도달합니다.

Snowflake Schema

각 추가 단계는 Power BI의 처리 작업을 증가시키고, 관계가 잘못될 경우 오류 발생 가능성을 높입니다.

스노우플레이크 스키마는 중복 데이터를 줄이지만, 필터가 여러 테이블을 거쳐야 하고 더 많은 관계를 관리해야 하기 때문에 Power BI에서 도전 과제를 만듭니다. 결과적으로 계산이 어떻게 동작할지 예측하기 어려워집니다.

이러한 이유로 스노우플레이크 스키마는 소스 시스템에서는 일반적이지만, 보고를 위해 종종 스타 스키마로 재구성됩니다.

관계: 테이블이 실제로 함께 작동하는 방식

관계는 테이블이 어떻게 통신하고 필터가 어떻게 흐르는지를 정의합니다.

슬라이서에서 카운티, 작물 또는 연도를 선택하면 Power BI는 사실 테이블을 직접 검색하지 않습니다. 대신:

  1. 차원 테이블을 확인하고,
  2. 일치하는 키를 식별하고,
  3. 관계를 따라 사실 테이블로 이동하며,
  4. 그에 따라 사실 테이블의 행을 필터링합니다.

잘‑설계된 모델에서는:

  • 각 차원 테이블은 고유 값을 포함합니다(각 작물이나 카운티가 한 번씩 나타남),
  • 사실 테이블은 해당 값에 연결된 다수의 관련 레코드를 포함합니다,
  • 필터는 차원 테이블에서 사실 테이블로 흐릅니다.

이는 실제 논리를 반영합니다: 하나의 카운티는 다수의 작물 레코드를 가질 수 있고, 하나의 작물은 여러 연도에 걸쳐 나타날 수 있습니다.

카디널리티: “One”과 “Many” 이해

Cardinality는 한 테이블의 행이 다른 테이블의 행과 몇 개씩 연결되는지를 설명합니다.

유형설명
One‑to‑Many차원 테이블의 한 행이 사실 테이블의 여러 행과 연결됩니다.
One‑to‑One한 행이 다른 테이블의 정확히 한 행과 일치합니다 (보고서에서는 드물게 사용됨).
Many‑to‑Many여러 행이 여러 행과 연결됩니다 (신중히 처리하지 않으면 중복된 합계가 발생할 수 있음)

Note: 잘못된 카디널리티라도 결과가 나올 수 있지만, 그 결과는 현실을 반영하지 않을 수 있습니다.

Source:

좋은 데이터 모델링이 중요한 이유

데이터 모델링은 세 가지 핵심 방식으로 모든 Power BI 보고서에 영향을 미칩니다.

성능

단순한 구조는 처리 작업을 줄여 시각화가 더 빠르고 상호 작용이 원활해집니다.

정확성

올바른 관계는 각 사실이 한 번만 계산되도록 보장하여 과도한 합계와 오해의 소지가 있는 평균을 방지합니다.

단순성

명확한 모델은 보고서를 만들고, 이해하고, 유지 관리하기 쉽게 합니다. 복잡한 DAX는 종종 개선이 필요한 모델의 신호입니다.

효과적인 모델은 일반적으로 다음을 따릅니다:

  • 측정값을 설명과 분리하고,
  • 가능한 경우 스타 스키마를 사용하고,
  • 관계를 명확히 정의하고,
  • 시각화가 보완하도록 강요하기보다 모델이 논리를 처리하도록 합니다.

이러한 기반이 견고하면 Power BI를 더 쉽게 사용하고 신뢰할 수 있게 됩니다. 스키마와 데이터 모델링은 Power BI가 신뢰할 수 있는 인사이트를 제공할지 혼란스러운 결과를 내놓을지를 직접 결정합니다. 사실 테이블과 차원 테이블을 이해하고, 적절한 스키마를 선택하며, 관계를 신중히 정의함으로써 분석가는 빠르고, 정확하며, 이해하기 쉬운 보고서를 만들 수 있습니다.

자세한 내용은 Microsoft 공식 Power BI 가이드를 참고하세요.

Power BI 프로젝트에서 데이터 모델링을 어떻게 접근하는지 댓글로 자유롭게 공유해 주세요. 다양한 의견과 토론을 언제나 환영합니다.

Back to Blog

관련 글

더 보기 »