DAX 평가 컨텍스트 마스터하기: Power BI는 Excel이 아닌 이유
By Mirko Peters ·
기존 스프레드시트 애플리케이션에서 비즈니스 인텔리전스 도구로 옮겨 가는 과정에서 많은 분석가가 편안한 함정에 빠집니다. 데이터 분석 식(Data Analysis Expressions)이 일반 스프레드시트 수식과 똑같이 동작한다고 생각하는 것입니다. 그러나 Power BI를 거대한 통합 문서처럼 다루면 리포트가 깨지고, 예상과 다른 숫자가 나오며, 큰 좌절로 이어지기 쉽습니다. 최신 분석의 잠재력을 제대로 끌어내려면 평가 컨텍스트 뒤에 있는 메커니즘을 익혀야 합니다. 이 종합 가이드에서는 시맨틱 모델에 사고방식의 전환이 필요한 이유를 살펴보고, 행 컨텍스트와 필터 컨텍스트를 해설하며, 데이터 모델링 역량을 한 단계 끌어올리는 방법을 보여 드리겠습니다.
Automatically translated with AI from the original post. Read the English original
![Cover: Power BI DAX and Semantic Models with Bernat Agulló Roselló [MVP]](https://d3wo5wojvuv7l.cloudfront.net/t_rss_itunes_square_1400/images.spreaker.com/original/2efb1e72ffe98f8a3cc8d3a507928870.jpg)
기존 스프레드시트 애플리케이션에서 비즈니스 인텔리전스 도구로 옮겨 가는 과정에서 많은 분석가가 편안한 함정에 빠집니다. 데이터 분석 식이 일반 스프레드시트 수식과 똑같이 동작한다고 생각하는 것입니다. 그러나 Power BI를 거대한 통합 문서처럼 다루면 리포트가 깨지고, 예상과 다른 숫자가 나오며, 큰 좌절로 이어지기 쉽습니다. 최신 분석의 잠재력을 제대로 끌어내려면 평가 컨텍스트 뒤에 있는 메커니즘을 익혀야 합니다. 이 종합 가이드에서는 시맨틱 모델에 사고방식의 전환이 필요한 이유를 살펴보고, 행 컨텍스트와 필터 컨텍스트를 해설하며, 데이터 모델링 역량을 한 단계 끌어올리는 방법을 보여 드리겠습니다.
Power BI의 평가 컨텍스트 소개
기본적으로 Power BI는 셀 기반 소프트웨어와 다르게 데이터를 처리하는 강력한 관계형 엔진 위에 구축되어 있습니다. Data Analysis Expressions로 식을 작성하면, 수식은 고정된 셀이나 위아래의 특정 행만 보는 것이 아닙니다. 대신 평가 컨텍스트라고 불리는 보이지 않는 환경 안에서 동작합니다. 이 환경을 이해하는 것은 모든 리포트 개발자에게 가장 중요한 이정표입니다. 이를 모르면 시각 개체에 필드를 끌어다 놓을 때 숫자가 왜 바뀌는지 사실상 추측할 수밖에 없습니다. 평가 컨텍스트를 마스터하면 기본적인 리포팅과 엔터프라이즈급 고급 비즈니스 인텔리전스 사이의 간극을 메울 수 있습니다.
DAX를 Excel처럼 다루면 리포트가 깨지는 이유
신입 개발자들이 가장 흔하게 품는 오해는 수식이 스프레드시트 그리드처럼 위에서 아래로 순차적으로 계산된다는 것입니다. 스프레드시트에서는 셀 C2에 수식을 쓰면 그 위치를 직접 지정했기 때문에 2행을 계산합니다. 스프레드시트 계산은 정적이고 명시적입니다.
반면 Power BI 계산은 동적이며 컨텍스트에 따라 달라집니다. 측정값은 어떤 행에 있는지를 본질적으로 알지 못합니다. 명시적으로 지시하거나 주변 시각 개체가 그렇게 정하지 않는 한 그렇습니다. 측정값을 매트릭스, 카드, 또는 막대형 차트에 놓으면, 소프트웨어가 이 수식을 보이지 않는 경계로 감쌉니다. 이 경계가 어떻게 작동하는지 무시하면, 행 합계와 맞지 않는 총계나 슬라이서 선택에 따라 계산 결과가 완전히 사라지는 전형적인 문제에 부딪히게 됩니다. 셀 참조 중심의 사고에서 벗어나는 것이 견고한 시맨틱 모델을 작성하는 첫걸음입니다.
| 오해 | 설명 |
|---|---|
| DAX는 Excel과 같다 | DAX는 Excel의 행 단위 계산과 달리, 동적이고 보이지 않는 평가 컨텍스트 안에서 동작합니다. |
| 측정값은 모든 시각 개체에서 항상 올바른 값을 반환한다 | 측정값은 필터 컨텍스트 때문에 시각 개체마다 다른 결과를 낼 수 있어 혼란을 일으킬 수 있습니다. |
| ALL() 함수는 모든 필터를 제거한다 | ALL()을 무분별하게 사용하면 필요한 필터를 무시하게 되어 리포트에서 잘못된 결과가 나올 수 있습니다. |
행 컨텍스트 해설: 레코드 단위 계산
평가 컨텍스트를 마스터하려면 먼저 그 두 가지 주요 구성 요소인 행 컨텍스트와 필터 컨텍스트를 이해해야 합니다. 먼저 행 컨텍스트부터 살펴보겠습니다. 간단히 말해, 행 컨텍스트는 한 번에 하나의 특정 레코드에 대해 식을 평가할 때마다 활성화됩니다.
행 컨텍스트는 언제 경험하게 될까요? 주로 두 가지 상황입니다. 계산 열을 만들 때, 그리고 반복 함수(흔히 SUMX, AVERAGEX, FILTER 같은 "X 함수"라고 부릅니다)를 사용할 때입니다. 예를 들어 Quantity에 Unit Price를 곱해 "Total Line Cost"라는 계산 열을 만든다면, Power BI는 해당 테이블의 모든 레코드마다 행 컨텍스트를 만듭니다. 테이블을 한 번에 한 행씩 내려가며 그 행에 대해 곱셈을 평가하고, 결과를 모델에 실제로 저장합니다.
하지만 계산 열은 메모리를 사용하고 파일 크기를 늘립니다. 그래서 고급 개발자들은 측정값을 선호합니다. SUMX 같은 반복 함수를 사용하면, 프로그램적으로 일시적인 행 컨텍스트를 만드는 셈입니다. SUMX는 테이블을 행 단위로 순회하며 각 행에 대해 식을 평가한 다음, 그 중간 결과를 합산합니다. 행 컨텍스트를 이해하면 계산을 적절한 시점에 적용할 수 있습니다. 즉, 정적인 행 단위 속성에는 열을, 동적인 집계에는 측정값을 사용하는 것입니다.
필터 컨텍스트 해설: 시각 개체와 슬라이서가 결과를 만드는 방식
행 컨텍스트가 한 번에 한 레코드만 보는 반면, 필터 컨텍스트는 더 넓은 범위를 봅니다. 필터 컨텍스트란 수식이 평가되는 시점에 데이터 모델에 적용된 모든 활성 필터의 집합을 말합니다. 이러한 필터는 보고서 슬라이서, 페이지 수준 필터, 시각적 개체 상호 작용, 행 머리글, 그리고 메저 내부의 명시적 필터 함수에서 올 수 있습니다.
전체 판매액을 계산하는 간단한 메저가 있다고 가정해 보겠습니다. 이 메저를 빈 카드 시각적 개체에 표시하면 필터 컨텍스트에는 전체 데이터 모델이 포함되어 전체 기간의 총 판매액이 반환됩니다. 그런데 이 메저와 함께 "지역" 열을 막대형 차트에 끌어다 놓는 순간 필터 컨텍스트가 크게 달라집니다. Power BI는 차트의 각 막대마다 해당 지역에 대한 숨겨진 필터를 자동으로 적용합니다. 엔진은 판매 메저를 먼저 북미 행에만 대해 평가하고, 다음으로 유럽 행에만 대해 평가하는 식으로 계속 진행합니다.
필터 컨텍스트는 대시보드를 상호 작용적이고 동적으로 만드는 핵심 요소입니다. 슬라이서를 사용하면 사용자가 이 컨텍스트를 즉시 변경하여 날짜 범위, 제품 범주, 고객 세그먼트별로 데이터를 나누어 볼 수 있습니다. CALCULATE와 같은 강력한 함수를 사용해 필터 컨텍스트를 조작하는 방법을 익히는 것이, 초보 보고서 작성자와 진정한 시맨틱 모델 전문가를 구분하는 기준이 됩니다.
간극 메우기: 고급 분석을 위한 평가 컨텍스트 마스터하기
행 컨텍스트와 필터 컨텍스트가 어떻게 상호 작용하는지 이해하고 나면 정교한 비즈니스 로직을 구현하기 시작할 수 있습니다. 대표적인 고급 패턴 중 하나가 컨텍스트 전환입니다. 컨텍스트 전환은 행 컨텍스트(계산 열 또는 반복 함수 내부)에서 CALCULATE 함수를 호출할 때 발생합니다. CALCULATE가 실행되면 현재 행 컨텍스트를 이와 동등한 필터 컨텍스트로 자동 변환합니다.
이를 통해 "이 테이블의 제품 범주별로, 특정 가격 기준을 초과하는 제품의 총 판매액은 얼마인가?"와 같은 복잡한 질문을 던질 수 있습니다. KEEPFILTERS, ALLEXCEPT 또는 변수와 같은 함수를 사용해 필터가 전파되는 방식을 관리하면 정확성과 속도 모두를 위해 계산을 최적화할 수 있습니다.
나아가 깔끔한 스타 스키마로 모델을 적절히 구성하면 필터 컨텍스트가 차원 테이블에서 팩트 테이블로 원활하게 흐르게 됩니다. 관계와 평가 컨텍스트가 조화를 이루면 보고서가 빠르게 로드되고, 유지 관리하기 쉬우며, 일관되게 신뢰할 수 있는 비즈니스 인사이트를 제공합니다.
Power BI 개발자를 위한 결론 및 다음 단계
평가 컨텍스트를 숙달하려면 시간과 연습, 그리고 스프레드시트 습관을 버리려는 의지가 필요합니다. 행 컨텍스트가 개별 레코드를 평가하는 방식과 필터 컨텍스트가 시각적 개체를 형성하는 방식을 이해하면 시맨틱 모델을 완전히 제어할 수 있게 됩니다. 이 주제를 더 깊이 알아보고 비즈니스 인텔리전스 아키텍처에 관한 전문가의 관점을 듣고 싶다면, 관련 팟캐스트 에피소드 Power BI DAX and Semantic Models with Bernat Agulló Roselló [MVP]를 꼭 확인해 보시기 바랍니다. 계속 연습하시고, DAX Studio와 같은 도구로 수식을 테스트하며, 전 세계 커뮤니티와 교류하여 분석 여정을 가속화하시기 바랍니다!