Power BI Desktop을 접하는 사용자는 이 문서를 DAX(데이터 분석 식)를 사용하여 많은 기본 계산 및 데이터 분석 문제를 해결하는 방법을 빠르고 쉽게 소개할 수 있습니다. 몇 가지 개념 정보, 완료할 수 있는 일련의 작업 및 학습한 내용을 테스트하기 위한 지식 점검을 살펴보겠습니다. 이 문서를 완료한 후에는 DAX에서 가장 중요한 기본 개념을 잘 이해해야 합니다.
DAX란?
DAX는 하나 이상의 값을 계산하고 반환하기 위해 수식 또는 식에 사용할 수 있는 함수, 연산자 및 상수의 컬렉션입니다. DAX를 사용하면 모델에 이미 있는 데이터에서 새 정보를 만들 수 있습니다.
DAX가 중요한 이유는 무엇인가요?
새 Power BI Desktop 파일을 쉽게 만들고 일부 데이터를 가져올 수 있습니다. DAX 수식을 전혀 사용하지 않고 중요한 인사이트를 표시하는 보고서를 만들 수도 있습니다. 그러나 제품 범주 및 다양한 날짜 범위에 대한 증가율을 분석해야 하는 경우 어떻게 해야 할까요? 또는 시장 동향에 비해 전년 대비 성장을 계산해야 합니까? DAX 수식은 이 기능과 다른 많은 중요한 기능도 제공합니다. 효과적인 DAX 수식을 만드는 방법을 배우면 데이터를 최대한 활용할 수 있습니다. 필요한 정보를 받으면 수익에 영향을 주는 실제 비즈니스 문제를 해결할 수 있습니다.
필수 조건
Microsoft Excel에서 수식을 만드는 데 이미 익숙할 수 있으며 이 지식은 DAX를 이해하는 데 도움이 될 것입니다. 그러나 Excel 수식에 대한 경험이 없더라도 여기에 설명된 개념은 DAX 수식을 만들고 실제 BI 문제를 바로 해결하는 데 도움이 됩니다.
특히 측정값 및 계산 열에서 계산에 사용되는 DAX 수식을 이해하는 데 집중하겠습니다. Power BI Desktop을 사용하여 데이터를 가져오고 보고서에 필드를 추가하는 데 이미 익숙해야 하며 측정 값 및 계산 열의 기본 개념도 잘 알고 있어야 합니다.
예제 통합 문서
DAX를 배우는 가장 좋은 방법은 몇 가지 기본 수식을 만들고 실제 데이터와 함께 사용하며 결과를 직접 확인하는 것입니다. 여기서 예제 및 태스크는 Power BI Desktop용 Contoso Sales Sample 파일을 사용합니다. 이 샘플 파일은 자습서: Power BI Desktop 문서에서 고유한 측정값 만들기에 사용된 것과 동일합니다.
시작해 보겠습니다.
우리는 DAX에 대한 이해를 문법, 함수, 그리고 컨텍스트라는 세 가지 기본 개념을 중심으로 구체화할 것입니다. DAX에는 다른 중요한 개념이 있지만 이러한 세 가지 개념을 이해하면 DAX 기술을 빌드할 수 있는 최상의 기반이 됩니다.
문법
고유한 수식을 만들기 전에 DAX 수식 구문을 살펴보겠습니다. 구문에는 수식을 작성하는 방법 또는 더 간단하게 수식을 구성하는 다양한 요소가 포함됩니다. 예를 들어 측정값에 대한 간단한 DAX 수식은 다음과 같습니다.
이 수식에는 다음 구문 요소가 포함됩니다.
A. 측정값 이름인 Total Sales입니다.
B. 수식의 시작을 나타내는 등호 연산자(=)입니다. 계산되면 결과가 반환됩니다.
C. SALES[SalesAmount] 열의 모든 숫자를 추가하는 DAX 함수 SUM입니다. 나중에 함수에 대해 자세히 알아봅니다.
D. 하나 이상의 인수를 포함하는 식을 둘러싸는 괄호 ()입니다. 대부분의 함수에는 하나 이상의 인수가 필요합니다. 인수는 함수에 값을 전달합니다.
E. 참조된 테이블인 Sales입니다.
F. Sales 테이블의 참조된 열 [SalesAmount]입니다. 이 인수를 사용하면 SUM 함수는 SUM을 집계할 열을 파악합니다.
DAX 수식을 이해하려고 할 때 각 요소를 매일 생각하고 말하는 언어로 분해하는 것이 도움이 되는 경우가 많습니다. 예를 들어 다음 수식을 읽을 수 있습니다.
Total Sales라는 측정값의 경우 Sales 테이블의 [SalesAmount] 열에 있는 값의 SUM을 계산합니다(=).
보고서에 추가된 경우 이 측정값은 미국의 휴대폰과 같이 포함하는 다른 각 필드의 판매액을 합산하여 값을 계산하고 반환합니다.
"이 측정값이 내 보고서에 SalesAmount 필드를 추가하는 것과 같은 일을 하고 있지 않습니까?" 하고 생각할 수 있습니다. 네. 그러나 SalesAmount 필드의 값을 합산하는 자체 측정값을 만드는 데는 좋은 이유가 있습니다. 다른 수식에서 인수로 사용할 수 있습니다. 이 솔루션은 이제 약간 혼란스러울 수 있지만 DAX 수식 기술이 커짐에 따라 이 측정값을 알고 있으면 수식과 모델의 효율성이 향상됩니다. 실제로 Total Sales 측정값이 나중에 다른 수식에서 인수로 표시되는 것을 볼 수 있습니다.
이 수식에 대해 몇 가지 더 살펴보겠습니다. 특히 SUM 함수를 도입했습니다. 함수는 숫자, 날짜, 시간, 텍스트 등을 사용하여 복잡한 계산 및 조작을 더 쉽게 수행할 수 있도록 미리 작성된 수식입니다. 나중에 함수에 대해 자세히 알아봅니다.
열 이름 [SalesAmount]의 앞에 열이 속한 Sales 테이블이 표시되기도 합니다. 이 이름은 테이블 이름 앞에 열 이름을 포함한다는 측면에서 정규화된 열 이름이라고 합니다. 동일한 테이블에서 참조되는 열은 수식에 테이블 이름을 포함할 필요가 없으므로 많은 열을 참조하는 긴 수식을 더 짧고 읽기 쉽게 만들 수 있습니다. 그러나 동일한 테이블에 있는 경우에도 측정값 수식에 테이블 이름을 포함하는 것이 좋습니다.
비고
테이블 이름에 공백, 예약된 키워드 또는 허용되지 않는 문자가 포함된 경우 테이블 이름을 작은따옴표로 묶어야 합니다. 또한 로캘에서 문자 집합을 지원하는지 여부에 관계없이 이름에 ANSI 영숫자 문자 범위를 벗어난 문자가 포함된 경우 테이블 이름을 따옴표로 묶어야 합니다.
수식에 올바른 구문이 있어야 합니다. 대부분의 경우 구문이 올바르지 않으면 구문 오류가 반환됩니다. 다른 경우에는 구문이 올바르지만 반환되는 값이 예상과 다를 수 있습니다. Power BI Desktop의 DAX 편집기에는 올바른 요소를 선택하는 데 도움을 줌으로써 구문적으로 올바른 수식을 만드는 데 사용되는 제안 기능이 포함되어 있습니다.
예제 수식을 만들어 보겠습니다. 이 작업은 수식 구문과 수식 입력줄의 제안 기능이 도움이 되는 방법을 더 잘 이해하는 데 도움이 됩니다.
작업: 측정값 수식 만들기
Contoso Sales 샘플 Power BI Desktop 파일을 다운로드하여 엽니다.
보고서 보기의 필드 목록에서 Sales 테이블을 마우스 오른쪽 단추로 클릭한 다음 새 측정값을 선택합니다.
수식 입력줄에서 새 측정값 이름인 Previous Quarter Sales를 입력하여 측정값을 바꿉다.
등호 기호 다음에 처음 몇 글자 CAL을 입력한 다음 사용할 함수를 두 번 클릭합니다. 이 수식에서는 CALCULATE 함수를 사용하려고 합니다.
CALCULATE 함수를 사용하여 CALCULATE 함수에 전달하는 인수로 합계를 계산할 금액을 필터링합니다. 이 형식의 함수를 중첩 함수라고 합니다. CALCULATE 함수에는 두 개 이상의 인수가 있습니다. 첫 번째는 평가할 식이고 두 번째는 필터입니다.
여는 괄호 뒤에 (CALCULATE 함수의 경우 SUM을 입력한 다음 다른 여는 괄호()를 입력합니다.
다음으로 SUM 함수에 인수를 전달합니다.
Sal 입력을 시작한 다음 Sales[SalesAmount]를 선택한 다음 닫는 괄호)를 선택합니다.
이 단계에서는 CALCULATE 함수에 대한 첫 번째 식 인수를 만듭니다.
쉼표(,) 뒤에 공백을 입력하여 첫 번째 필터를 지정한 다음 PREVIOUSQUARTER를 입력합니다.
PREVIOUSQUARTER 시간 인텔리전스 함수를 사용하여 이전 분기의 SUM 결과를 필터링합니다.
여는 괄호 ( PREVIOUSQUARTER 함수의 경우 Calendar[DateKey]를 입력합니다.
PREVIOUSQUARTER 함수에는 연속된 날짜 범위가 포함된 열인 인수가 하나 있습니다. 저희의 경우, 그 열은 달력 테이블의 DateKey입니다.
두 개의 닫는 괄호 )를 입력하여 PREVIOUSQUARTER 함수와 CALCULATE 함수에 전달되는 인수를 모두 닫습니다.
이제 수식이 다음과 같이 표시됩니다.
이전 분기 판매액 = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))
수식 입력줄에서
을 선택하거나 Enter 키를 눌러 수식의 유효성을 검사하고 Sales 테이블에 추가합니다.
잘하셨습니다! DAX를 사용하여 복잡한 측정값을 만들었습니다. 이 수식은 보고서에 적용된 필터에 따라 이전 분기의 총 판매량을 계산합니다. 예를 들어, Sales 테이블의 SalesAmount와 새로운 전 분기 매출 측정값을 클러스터형 막대 차트에 배치할 수 있습니다. 그런 다음 일정 테이블에서 Year를 슬라이서로 추가하고 2011을 선택합니다. 그런 다음 QuarterOfYear를 다른 슬라이서로 추가하고 4를 선택하면 다음과 같은 차트가 표시됩니다.
샘플 모델에는 2011년 1월 1일부터 2013년 1월 19일까지의 소량의 판매 데이터만 포함됩니다. SalesAmount를 합산할 수 없는 연도 또는 분기를 선택하거나 새 측정값이 현재 또는 이전 분기의 판매 데이터를 계산할 수 없는 경우 해당 기간의 데이터가 표시되지 않습니다. 예를 들어 Year에 2011을 선택하고 QuarterOfYear에 1을 선택하는 경우 2010년 4분기 데이터가 없기 때문에 이전 분기 매출에 대한 데이터가 표시되지 않습니다.
DAX 수식의 몇 가지 중요한 측면을 소개했습니다.
이 수식에는 두 개의 함수가 포함되어 있습니다. 시간 인텔리전스 함수인 PREVIOUSQUARTER는 필터 함수인 CALCULATE에 전달된 인수로 중첩됩니다.
DAX 수식에는 최대 64개의 중첩 함수가 포함될 수 있습니다. 수식에 중첩된 함수가 너무 많이 포함될 가능성은 거의 없습니다. 실제로 이러한 수식은 만들고 디버그하기 어려우며 빠르지 않을 수도 있습니다.
이 수식에서는 필터도 사용했습니다. 필터는 계산할 범위를 좁혀줍니다. 이 경우 하나의 필터를 인수로 선택했는데, 이는 실제로 다른 함수의 결과입니다. 나중에 필터에 대해 자세히 알아봅니다.
CALCULATE 함수를 사용했습니다. 이 함수는 DAX에서 가장 강력한 함수 중 하나입니다. 모델을 작성하고 더 복잡한 수식을 만들 때 이 함수를 여러 번 사용할 수 있습니다. CALCULATE 함수에 대한 자세한 내용은 이 문서의 범위를 벗어나지만 DAX에 대한 지식이 커짐에 따라 특별히 주의해야 합니다.
구문 QuickQuiz
수식 입력줄의 이 단추는 어떤 작업을 수행하나요?
DAX 수식에서 항상 열 이름을 둘러싸는 것은 무엇인가요?
답변은 이 문서의 끝에 제공됩니다.
기능
함수는 특정 순서 또는 구조에서 인수라는 특정 값을 사용하여 계산을 수행하는 미리 정의된 수식입니다. 인수는 다른 함수, 다른 수식, 식, 열 참조, 숫자, 텍스트, TRUE 또는 FALSE와 같은 논리 값 또는 상수일 수 있습니다.
DAX에는 날짜 및 시간, 시간 인텔리전스, 정보, 논리, 수학, 통계, 텍스트, 부모/자식 및 기타 함수 범주가 포함됩니다. Excel 수식의 함수에 익숙한 경우 DAX의 많은 함수가 사용자와 유사하게 표시됩니다. 그러나 DAX 함수는 다음과 같은 방식으로 고유합니다.
DAX 함수는 항상 전체 열 또는 테이블을 참조합니다. 테이블 또는 열의 특정 값만 사용하려는 경우 수식에 필터를 추가할 수 있습니다.
행 단위로 계산을 사용자 지정해야 하는 경우 DAX는 컨텍스트에 따라 계산을 수행하기 위해 현재 행 값 또는 관련 값을 인수의 일종으로 사용할 수 있는 함수를 제공합니다. 나중에 컨텍스트에 대해 자세히 알아봅니다.
DAX에는 값이 아닌 테이블을 반환하는 많은 함수가 포함되어 있습니다. 테이블은 표시되지 않지만 다른 함수에 대한 입력을 제공하는 데 사용됩니다. 예를 들어 테이블을 검색한 다음 테이블의 고유 값을 계산하거나 필터링된 테이블 또는 열에서 동적 합계를 계산할 수 있습니다.
DAX에는 다양한 시간 인텔리전스 함수가 포함되어 있습니다. 이러한 함수를 사용하면 날짜 범위를 정의하거나 선택하고 이를 기반으로 동적 계산을 수행할 수 있습니다. 예를 들어 병렬 기간의 합계를 비교할 수 있습니다.
Excel에는 인기 있는 VLOOKUP 함수가 있습니다. DAX 함수는 Excel에서 VLOOKUP과 같은 참조로 셀 또는 셀 범위를 사용하지 않습니다. DAX 함수는 열 또는 테이블을 참조로 사용합니다. Power BI Desktop에서는 관계형 데이터 모델로 작업하고 있습니다. 다른 테이블에서 값을 조회하는 것은 쉽으며 대부분의 경우 수식을 전혀 만들 필요가 없습니다.
볼 수 있듯이 DAX의 함수는 강력한 수식을 만드는 데 도움이 될 수 있습니다. 함수의 기본 사항만 다루었습니다. DAX 기술이 커짐에 따라 다양한 함수를 사용하여 수식을 만듭니다. 각 DAX 함수에 대한 세부 정보를 알아볼 수 있는 가장 좋은 위치 중 하나는 DAX 함수 참조입니다.
Functions QuickQuiz
- 함수는 항상 무엇을 참조하나요?
- 수식에 둘 이상의 함수가 포함될 수 있나요?
- 두 텍스트 문자열을 하나의 문자열에 연결하기 위해 사용할 함수 범주는 무엇인가요?
답변은 이 문서의 끝에 제공됩니다.
컨텍스트
컨텍스트는 이해해야 할 가장 중요한 DAX 개념 중 하나입니다. DAX에는 행 컨텍스트와 필터 컨텍스트의 두 가지 컨텍스트 유형이 있습니다. 먼저 행 컨텍스트를 살펴보겠습니다.
행 컨텍스트
행 컨텍스트는 현재 행으로 가장 쉽게 생각할 수 있습니다. 수식에 테이블의 단일 행을 식별하는 필터를 적용하는 함수가 있을 때마다 적용됩니다. 함수는 기본적으로 필터링하는 테이블의 각 행에 대해 행 컨텍스트를 적용합니다. 이 유형의 행 컨텍스트는 측정값에 가장 자주 적용됩니다.
필터 맥락
필터 컨텍스트는 행 컨텍스트보다 이해하기가 조금 더 어렵습니다. 필터 컨텍스트를 가장 쉽게 생각할 수 있습니다. 결과 또는 값을 결정하는 계산에 적용된 하나 이상의 필터입니다.
필터 컨텍스트는 행 컨텍스트 대신 존재하지 않습니다. 오히려 행 컨텍스트 외에 적용됩니다. 예를 들어 계산에 포함할 값의 범위를 더 좁히려면 행 컨텍스트를 지정할 뿐만 아니라 해당 행 컨텍스트에서 특정 값(필터)을 지정하는 필터 컨텍스트를 적용할 수 있습니다.
필터 컨텍스트는 보고서에서 쉽게 볼 수 있습니다. 예를 들어 시각화에 TotalCost를 추가한 다음 Year 및 Region을 추가하는 경우 지정된 연도 및 지역에 따라 데이터의 하위 집합을 선택하는 필터 컨텍스트를 정의합니다.
필터 컨텍스트가 DAX에 중요한 이유는 무엇인가요? 시각화에 필드를 추가하여 필터 컨텍스트를 적용할 수 있음을 살펴보았습니다. DAX 수식에서 필터 컨텍스트를 설정하려면 ALL, RELATED, FILTER, CALCULATE와 같은 함수, 관계, 기타 측정값 및 열을 사용하여 필터를 정의할 수도 있습니다. 예를 들어 Store Sales라는 측정값에서 다음 수식을 살펴보겠습니다.
이 수식을 더 잘 이해하기 위해 다른 수식과 마찬가지로 수식을 분해할 수 있습니다.
이 수식에는 다음 구문 요소가 포함됩니다.
A. 측정값 이름인 Store Sales입니다.
B. 수식의 시작을 나타내는 등호 연산자(=)입니다.
C. 지정한 필터에 의해 수정된 컨텍스트에서 식을 인수로 평가하는 CALCULATE 함수입니다.
D. 하나 이상의 인수를 포함하는 식을 둘러싸는 괄호 ()입니다.
E. 식과 동일한 테이블의 측정값 [Total Sales] 입니다. Total Sales 측정값에는 =SUM(Sales[SalesAmount]) 수식이 있습니다.
F. 첫 번째 식 인수를 필터 인수와 구분하는 쉼표(,)입니다.
G. 정규화된 참조 열인 Channel[ChannelName]입니다. 이것이 행 컨텍스트입니다. 이 열의 각 행은 Store 또는 Online과 같은 채널을 지정합니다.
H. 특정 값인 Store를 필터로 사용합니다. 필터 컨텍스트입니다.
이 수식은 Total Sales 측정값에 정의된 판매 값만 Channel[ChannelName] 열의 행에 대해서만 계산되고 Store 값은 필터로 사용됩니다.
상상할 수 있듯이 수식 내에서 필터 컨텍스트를 정의할 수 있는 기능은 매우 강력합니다. 관련 테이블의 특정 값만 참조하는 기능은 이러한 예 중 하나일 뿐입니다. 컨텍스트를 즉시 완전히 이해하지 못하면 걱정하지 마세요. 고유한 수식을 만들면 컨텍스트와 DAX에서 왜 그렇게 중요한지 더 잘 이해할 수 있습니다.
Context QuickQuiz
- 두 가지 유형의 컨텍스트는 무엇인가요?
- 필터 컨텍스트란?
- 행 컨텍스트란 무엇인가요?
답변은 이 문서의 끝에 제공됩니다.
요약
DAX에서 가장 중요한 개념을 기본적으로 이해했으므로 측정값에 대한 DAX 수식을 직접 만들 수 있습니다. DAX는 실제로 배우기 어려울 수 있지만 많은 리소스를 사용할 수 있습니다. 이 문서를 읽고 몇 가지 고유한 수식을 실험한 후에는 고유한 비즈니스 문제를 해결하는 데 도움이 되는 다른 DAX 개념 및 수식에 대해 자세히 알아볼 수 있습니다. 여러 DAX 리소스를 사용할 수 있습니다. 가장 중요한 것은 DAX(데이터 분석 식) 참조입니다.
DAX는 파워 피벗 및 Analysis Services 테이블 형식 모델과 같은 다른 Microsoft BI 도구에서 몇 년 동안 사용되어 왔으므로 많은 훌륭한 원본 정보가 있습니다. Microsoft 및 주요 BI 전문가의 책, 백서 및 블로그에서 자세한 정보를 찾을 수 있습니다. DAX 리소스 센터는 시작하기에 좋은 장소이기도 합니다.
QuickQuiz 답변
구문:
- 모델의 유효성을 검사하고 측정값을 입력합니다.
- 대괄호 [].
함수:
- 테이블 및 열입니다.
- 예. 수식에는 최대 64개의 중첩 함수가 포함될 수 있습니다.
- 텍스트 함수입니다.
컨텍스트:
- 행 컨텍스트 및 필터 컨텍스트입니다.
- 계산에서 단일 값을 산출하는 하나 이상의 필터입니다.
- 현재 행입니다.