Power Query 마스터하기: 평면 데이터를 스타 스키마로 변환하기
By Mirko Peters · · Updated
팟캐스트 컴패니언 블로그에 다시 오신 것을 환영합니다! 오늘 포스팅에서는 데이터 모델링의 기술적 메커니즘을 깊이 있게 살펴보겠습니다. 엔터프라이즈 시스템에서 나온 거대한 평면형 데이터 덤프를 물려받아 본 적이 있다면, 즉 모든 거래 행마다 고객 이름, 제품 범주, 지리적 위치가 백만 번씩 반복되는 데이터를 다뤄 보셨다면, 그것이 보고서에 얼마나 큰 고통을 주는지 잘 아실 것입니다. 성능 저하, 복잡한 DAX 수식, 비대해진 파일 크기는 빙산의 일각에 불과합니다. 다행히도 전문 BI 개발자들이 바로 이 문제를 해결하기 위해 의존하는 검증된 아키텍처 패턴이 있습니다. 바로 스타 스키마입니다.
Automatically translated with AI from the original post. Read the English original
팟캐스트 컴패니언 블로그에 다시 오신 것을 환영합니다! 오늘 포스팅에서는 데이터 모델링의 기술적 메커니즘을 깊이 있게 살펴보겠습니다. 엔터프라이즈 시스템에서 나온 거대한 평면형 데이터 덤프를 물려받아 본 적이 있다면, 즉 모든 거래 행마다 고객 이름, 제품 범주, 지리적 위치가 백만 번씩 반복되는 데이터를 다뤄 보셨다면, 그것이 보고서에 얼마나 큰 고통을 주는지 잘 아실 것입니다. 성능 저하, 복잡한 DAX 수식, 비대해진 파일 크기는 빙산의 일각에 불과합니다. 다행히도 전문 BI 개발자들이 바로 이 문제를 해결하기 위해 의존하는 검증된 아키텍처 패턴이 있습니다. 바로 스타 스키마입니다.
이 종합 가이드에서는 복잡하게 얽힌 단일 테이블 데이터 내보내기를 Power Query로 가져와, 깔끔한 중앙 팩트 테이블과 효율적이고 고성능인 차원 테이블로 분리하는 방법을 단계별로 살펴보겠습니다. 그 과정에서 전략적 계획, 데이터 정리 모범 사례, 서로게이트 키 생성, 그리고 Power BI 보고서를 매우 빠르게 만들어 줄 모델 최적화 기법까지 다룰 예정입니다.
Power Query 소개와 스타 스키마 기초
Microsoft Power BI로 솔루션을 구축할 때는 기반이 되는 데이터 구조가 이후의 모든 것을 결정합니다. 스타 스키마는 성숙하고 고도로 최적화된 데이터 모델링 기법으로, 비즈니스 지표는 중앙 팩트 테이블에 담고 비즈니스 엔터티를 설명하는 속성은 주변의 차원 테이블에 둡니다. 이 구조를 다이어그램으로 시각화하면 별 모양을 닮아 있어 이런 이름이 붙었습니다. 대부분의 BI 개발자가 이 방법을 선택하는 이유는 유지 관리와 확장이 매우 쉬운 비즈니스 인텔리전스 솔루션을 제공하기 때문입니다.
여러 연구에 따르면 이 설계 패턴을 도입하면 상당한 이점을 얻을 수 있습니다. 실제로 스타 스키마 모델을 구축하는 Power BI 사용자의 약 80%가 평면 테이블 방식에 비해 성능과 분석 효율이 향상되었다고 보고합니다. 반대로 스타 스키마를 생략하면 개발 수명 주기 전반에 걸쳐 심각한 마찰이 생깁니다.
- 대량의 데이터 중복과 반복으로 인한 느린 쿼리 성능
- 모호하거나 누락된 테이블 관계에서 비롯된 복잡한 DAX 수식
- 새로운 비즈니스 데이터가 들어올 때의 유지 관리 어려움과 확장 병목
데이터를 재구성하는 방법을 제대로 이해하려면, 변환 코드를 한 줄이라도 작성하기 전에 필요한 기초 단계를 살펴보겠습니다.
스타 스키마 계획하기
Power BI에서 변환 단계를 작성하기 전에, 스타 스키마에 대한 명확하고 의도적인 계획이 필요합니다. 신중한 계획은 혼선을 줄이고, 보고서 속도를 높이며, 모델을 훨씬 쉽게 유지 관리할 수 있도록 도와줍니다. BI 개발자라면 구조화되지 않은 원본 데이터 덤프를 Power BI Desktop으로 가져오기 전에 항상 데이터 원본을 점검하고 스키마를 설계해야 합니다.
데이터 원본 분석과 핵심 테이블 식별하기
원본 데이터 원본을 꼼꼼히 검토하는 것으로 아키텍처 설계를 시작하십시오. 판매 거래, 웹 클릭, 재고 이동처럼 수치형 비즈니스 이벤트를 담고 있는 테이블이나 평면 파일을 찾으십시오. 이들이 결국 중앙 팩트 테이블이 됩니다. 다음으로 고객 이름, 제품 설명, 직원 명부, 달력 날짜처럼 비즈니스 엔터티를 설명하는 열을 찾으십시오. 이들이 차원 테이블의 기반이 됩니다.
팁: 테이블 조인에는 항상 숫자형 정수 키를 사용하십시오. 숫자 키는 VertiPaq 엔진의 쿼리 속도를 높이고, 텍스트 기반 매칭보다 관계를 훨씬 안정적으로 만들어 줍니다.
테이블을 식별했다면 엔터티 관계 다이어그램을 시각적으로 그려 보십시오. 중앙 팩트 테이블이 각 차원 테이블과 직접 연결되도록 하고, 두 개의 팩트 테이블을 서로 직접 연결하는 것은 반드시 피하십시오. 팩트와 차원 사이를 단일 홉으로 유지하면 필터 모호성을 방지하고 시맨틱 모델을 깔끔하게 유지할 수 있습니다.
Power Query로 데이터 가져오기와 정리하기
Power BI로 데이터를 가져오는 일은 신뢰할 수 있는 스타 스키마의 절대적인 기반을 마련합니다. 데이터 원본에 연결하고, 들어오는 데이터를 정리 및 변환한 뒤, 신중하게 테이블을 로드해야 합니다. Power Query는 데이터가 데이터 모델에 들어가기 전에 정보를 가공하고 다듬을 수 있게 해 주는 주요 데이터 준비 작업대 역할을 합니다.
Power Query에서 데이터를 가져올 때는 'Enable Load' 설정을 신중하게 활용하십시오. 스테이징 쿼리와 중간 작업용 도우미 테이블은 로드되지 않도록 설정해야 합니다. 그래야 최종적으로 최적화된 팩트 테이블과 차원 테이블만 모델 메모리를 차지합니다. 또한 필터링과 변환 단계는 가능한 한 데이터 원본에 가까운 곳에서 수행하십시오. 이를 쿼리 폴딩(query folding)이라고 하며, 데이터 새로 고침 시간을 크게 줄여 줍니다.
데이터 정리란 오류를 체계적으로 제거하고, 서식의 불일치를 수정하며, 텍스트 문자열을 표준화하는 작업입니다. 중요한 외래 키 열에 누락된 값이 있는지 확인하고, 즉시 바로잡으십시오. 관계를 성공적으로 매핑하려면 테이블 간 키의 데이터 형식이 동일해야 하며, 이는 타협할 수 없는 필수 조건입니다.
차원 테이블과 대리 키 만들기
잘 설계된 차원 테이블은 스타 스키마의 핵심 토대입니다. 차원 테이블은 비즈니스 운영에 대한 풍부한 맥락 정보를 제공하는 데 사용합니다. 평면 형태의 데이터 내보내기 파일에서 차원을 추출하려면 엔터티의 고유 특성을 분리하고 중복 행을 제거해야 합니다.
특성 추출 및 중복 제거
평면 형태의 데이터 덤프에서 차원 테이블을 만들 때는 필터링과 그룹화에 관련된 열만 선택하십시오. 예를 들어 제품 차원에는 제품 ID, 제품 이름, 범주, 하위 범주, 단가만 포함하면 됩니다. 이러한 열을 분리한 후에는 모든 엔터티가 정확히 한 번만 존재하도록 중복 레코드를 제거해야 합니다. 고유한 행은 일대다 관계가 예기치 않은 교차 필터링 부작용 없이 작동하도록 보장합니다.
원본 시스템의 변경에 대비해 차원 테이블을 견고하게 만들려면 대리 키 생성을 고려하십시오. 대리 키는 Power Query 변환 단계에서 만들어지는, 인위적이고 자동 증가하는 정수 인덱스 열입니다. 고객의 집 주소나 제품 이름처럼 원본 설명 값이 시간이 지나며 바뀌더라도, 변동성이 큰 자연 텍스트 키 대신 대리 키를 사용하면 과거의 팩트 데이터가 보호됩니다.
팩트 테이블 구축 및 집계
정리된 차원 테이블이 안정적으로 준비되었다면, 이제 핵심 팩트 테이블을 만드는 데 집중할 수 있습니다. 팩트 테이블은 측정 가능한 정량적 비즈니스 이벤트를 저장합니다. 각 행은 이해관계자가 요구하는 가장 낮은 세분성에서의 특정 거래나 발생 사건을 나타냅니다.
대용량 데이터 세트를 관리하려면 쿼리 수준이나 데이터 웨어하우스 수준에서 집계 테이블을 만드는 것을 고려하십시오. 월, 지역, 제품 범주별로 미리 집계하면 행 수가 크게 줄고 시각적 개체 렌더링 속도가 빨라집니다. 팩트 테이블을 만들 때는 세분성이 일관적인지 확인하십시오. 일별 집계 행과 초 단위의 개별 거래를 같은 팩트 테이블에 섞으면 측정값 집계가 손상되고 이중 계산이 발생합니다.
관계 구성 및 모델 최적화
테이블을 Power BI에 로드했다면 모델 보기에서 모델 관계를 구성해야 합니다. 차원 테이블의 "일" 쪽에서 중앙 팩트 테이블의 "다" 쪽을 가리키는 깔끔한 일대다 관계를 설정하십시오.
기본적으로 단일 방향 교차 필터링을 유지하십시오. 정말 필요한 경우가 아니라면 양방향 필터링은 피하십시오. 양방향 필터링은 복잡한 필터 경로를 만들고, VertiPaq 엔진의 성능을 저하시키며, 예기치 않은 분석 결과를 자주 초래합니다. 또한 정기적으로 모델을 점검하여 사용하지 않는 열을 제거하고, 관계에 사용되는 고카디널리티 텍스트 필드를 최소화하며, 연속된 달력 테이블이 날짜 테이블로 명시적으로 표시되어 있는지 확인하십시오. 그래야 시간 인텔리전스 계산이 원활하게 동작합니다.
스타 스키마로 보고 및 분석하기
결국 모든 데이터 모델링 작업은 보고 계층에서 결실을 맺습니다. 의미 체계 모델이 깔끔한 스타 스키마로 구성되어 있으면 대화형 대시보드를 만드는 일이 매우 즐거워집니다. 슬라이서와 필터가 즉시 제자리에 맞물리고, DAX 측정값은 읽고 디버그하기 쉬우며, 자연어 Q&A 기능도 놀라운 정확도를 보입니다.
이 아키텍처 패턴을 더 자세히 살펴보고 흔한 모델링 함정을 피하는 방법에 대한 전문가의 의견을 듣고 싶다면 관련 팟캐스트 에피소드를 꼭 확인해 보십시오: Build a Power BI Star Schema for Faster Reports.
결론
Power Query를 사용해 평평하고 복잡한 데이터 덤프를 최적화된 스타 스키마로 바꾸는 작업은 Power BI 개발자가 익혀야 할 가장 효과가 큰 기술 중 하나입니다. 스키마를 신중하게 계획하고, 차원을 정리하고, 안정적인 대리 키를 생성하고, 엄격한 일대다 관계를 구성하면 빠른 쿼리 성능, 단순해진 DAX 계산, 견고한 엔터프라이즈 보고를 얻을 수 있습니다.
모델링 체크리스트를 활용하고, 원본 시스템과 행 수를 검증하고, 조직의 요구가 변함에 따라 모델을 지속적으로 점검하십시오. 이러한 전략과 Microsoft 생태계 모범 사례에 대한 실무적인 논의를 더 깊이 알고 싶다면 Build a Power BI Star Schema for Faster Reports 전체 에피소드를 꼭 들어 보십시오. 즐거운 모델링 되세요!