본문 바로가기
● Data Visualization

Power BI에서 DAX와 Power Query 비교 분석

by DataFolio.lab 2025. 11. 10.
반응형

Power BI로 BI 솔루션을 구축할 때, Power Query(데이터 전처리 단계)DAX(Data Analysis Expressions, 모델링·계산 단계)는 서로 다른 역할을 수행하며, 상황에 따라 적절히 활용해야 최적의 성능과 유지보수성을 확보할 수 있다.

Power BI에서 DAX와 Power Query 비교 분석


1. 기본 개념 및 역할

Power Query (M 언어)

Power Query는 데이터 수집·정제·변환을 담당하는 단계로, 사용자는 ‘쿼리 편집기’를 통해 다양한 원천 데이터를 불러오고, 조인·필터링·집계·피벗 등의 변환 작업을 수행한다. 변환 로직은 M 언어로 작성되며, 데이터 로드 시점에 한 번 실행되어 모델 테이블을 생성한다.

DAX

DAX는 모델이 로드된 이후 계산 열(Calculated Column), 측정값(Measures), 테이블 함수 등을 정의해 실시간 집계·분석·동적 필터링을 구현하는 언어다. 사용자의 보고서 상호작용(Filter, Slicer 등)에 따라 즉시 실행되어 결과를 반환하며, VertiPaq 엔진이 메모리 내 컬럼 단위 압축 구조로 처리한다.

반응형

2. 처리 시점과 실행 로직

구분 Power Query DAX
실행 시점 데이터 모델 최종 로드 전 보고서 조회·상호작용 시
언어 M DAX
엔진 Mashup(ETL) 엔진 VertiPaq(인메모리 컬럼스토어)
메모리 사용 디스크 기반 임시 캐시 후 모델에 로드 인메모리 압축 컬럼스토어에 상주
로직 변경 빈도 모델 업데이트 시 사용자 조회 시
처리 대상 전체 소스 데이터 모델 내 컬럼·테이블

3. 장단점 비교

Power Query

  • 장점
    • 복잡한 ETL 로직 구현에 강점 (다중 소스 병합, 정규화·비정규화 등)
    • 데이터 로드 시 단 한 번만 실행되어 보고서 성능에 영향이 적음
    • 코드 단계별로 ‘단계 미리 보기’ 제공으로 디버깅 편리
  • 단점
    • 대화형 분석(동적 필터·측정값) 기능이 없고, 변경 시 매번 전체 로드 필요
    • M 언어 학습 곡선이 존재

DAX

  • 장점
    • 동적 집계·비교(시간 인텔리전스, 누계 등) 구현에 최적
    • 사용자 상호작용에 실시간 반응 가능
    • 강력한 테이블 함수와 컨텍스트 관리 기능
  • 단점
    • 복잡한 관계형 로직이나 ETL에는 부적합
    • 비효율적 작성 시 메모리 사용량 증가 및 성능 저하 가능
    • 디버깅 및 코드 가독성에 제약

4. 사용 권장 시나리오

Power Query를 사용하면 좋은 경우

  • 원천 데이터 통합·정제: 여러 시스템∙파일 결합, 컬럼 타입 변환, 중복 제거
  • 정적 테이블 생성: 변환 후 고정된 참조 테이블, 예를 들어 품목 마스터, 환율 테이블
  • 대규모 데이터 필터링: 모델에 불필요한 데이터 로드 방지

DAX를 사용하면 좋은 경우

  • 동적 계산·집계: 기간 비교(YoY), 멀티티어 누적 합계, 사용자 선택 기반 KPI
  • 측정값 활용 보고서: 슬라이서 선택에 따라 실시간으로 변하는 시각화
  • 행(row) 단위 비지니스 규칙: 계산 열을 통해 새로운 속성 생성

5. 메모리 사용 및 최적화 포인트

  1. VertiPaq 압축: DAX 계산 결과와 모델 테이블은 컬럼별 압축 방식으로 메모리에 상주시켜 빠른 조회를 지원.
  2. 불필요 계산 방지: 가능한 계산 열 대신 측정값 활용, 반복 계산을 최소화.
  3. 단계별 접기(Folding): Power Query에서 가능한 한 소스 측 쿼리 접기(Folding)를 통해 변환 작업을 데이터베이스에서 수행.
  4. 인메모리 용량 관리: 큰 테이블은 Power Query 단계에서 사전 필터링, 불필요 컬럼 제거로 메모리 사용량 최적화.

BI 프로젝트 초기 단계에서는 Power Query로 데이터 모델의 골격을 구축하고, 원천 데이터를 최대한 정제·최적화한 뒤 DAX를 활용해 동적 분석·보고서 요소를 구현하는 방식이 바람직하다. 이렇게 역할을 분리하면 로드 성능, 메모리 효율, 유지보수성을 모두 확보할 수 있다.

반응형

놓치면 아쉬운 추천 글, 함께 읽어보세요!

  • 추천 글을 불러오는 중입니다...