이 빠른 시작은 Excel 또는 SQL Server Data Tools에서 작성된 테이블 형식 모델 프로젝트에서 파워 피벗 새로운 사용자를 위한 것입니다. DAX(데이터 분석 식)를 사용하여 다양한 기본 데이터 모델링 및 분석 문제를 해결하는 방법을 빠르고 쉽게 소개할 수 있습니다. 이 항목에는 개념 정보, 완료할 수 있는 일련의 작업 및 배운 내용을 테스트하기 위한 몇 가지 퀴즈가 포함되어 있습니다. 이 항목을 완료한 후에는 DAX의 가장 기본적인 기본 개념을 잘 이해해야 합니다.
DAX란?
DAX는 하나 이상의 값을 계산하고 반환하기 위해 수식 또는 식에 사용할 수 있는 함수, 연산자 및 상수의 컬렉션입니다. DAX는 모델에 이미 있는 데이터에서 새 정보를 만드는 데 도움이 됩니다.
DAX가 중요한 이유는 무엇인가요?
통합 문서를 만들고 일부 데이터를 쉽게 가져올 수 있습니다. DAX 수식을 사용하지 않고 중요한 정보를 표시하는 피벗 테이블 또는 피벗 차트를 만들 수도 있습니다. 그러나 여러 제품 범주 및 다른 날짜 범위에 대해 중요한 판매 데이터를 분석해야 하는 경우 어떻게 해야 할까요? 또는 여러 데이터 원본에 있는 여러 테이블의 중요한 인벤토리 데이터를 결합해야 하나요? DAX 수식은 이 기능과 다른 많은 중요한 기능도 제공합니다. 효과적인 DAX 수식을 만드는 방법을 배우면 데이터를 최대한 활용할 수 있습니다. 필요한 정보를 얻을 때 수익에 영향을 주는 실제 비즈니스 문제를 해결하기 시작할 수 있습니다. 이것은 비즈니스 인텔리전스이며 DAX는 사용자가 비즈니스 인텔리전스에 도착하는 데 도움이 됩니다.
필수 구성 요소
Microsoft Excel에서 수식을 만드는 데 이미 익숙할 수 있습니다. 이러한 지식은 DAX를 이해하는 데 도움이 될 수 있지만 Excel 수식에 대한 경험이 없더라도 여기에 설명된 개념은 DAX 수식을 만들고 실제 BI 문제를 즉시 해결하는 데 도움이 됩니다.
특히 계산에 사용되는 DAX 수식을 이해하는 데 집중하겠습니다. 파워 피벗 도움말에 설명된 계산 열 과 측정값 (계산 필드라고도 함)의 기본 개념에 이미 익숙해야 합니다. 또한 Excel 작성 환경 및 도구의 파워 피벗 잘 알고 있어야 합니다.
통합 문서 예제
DAX를 배우는 가장 좋은 방법은 몇 가지 기본 수식을 만들고, 실제 데이터와 함께 사용하고, 결과를 직접 확인하는 것입니다. 여기서 예제 및 작업은 Contoso 샘플 DAX Formulas.xlsx 통합 문서를 사용합니다. http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409 통합 문서를 다운로드할 수 있습니다. 통합 문서를 컴퓨터에 다운로드한 후 열고 파워 피벗 창을 엽니다.
시작해 봅시다!
구문, 함수 및 컨텍스트라는 세 가지 매우 중요한 기본 개념을 중심으로 DAX를 구성합니다. 물론 DAX에는 다른 중요한 개념이 있지만 이러한 세 가지 개념을 이해하면 DAX 기술을 구축할 수 있는 최상의 기반이 됩니다.
구문
고유한 수식을 만들기 전에 DAX 수식 구문을 살펴보겠습니다. 구문에는 수식을 구성하는 다양한 요소 또는 더 간단하게 수식 작성 방법이 포함됩니다. 예를 들어 FactSales 테이블에서 Margin이라는 계산 열의 각 행에 대한 새 데이터(값)를 만드는 데 사용되는 간단한 DAX 수식을 살펴보겠습니다( 수식 텍스트 색은 설명 용도로만 사용됨).
이 수식의 구문에는 다음 요소가 포함됩니다.
-
등호 연산자(=)는 수식의 시작을 나타내며, 이 수식을 계산하면 결과 또는 값이 반환됩니다. 값을 계산하는 모든 수식은 등호로 시작합니다.
-
참조된 열 [SalesAmount]에는 빼려는 값이 포함되어 있습니다. 수식의 열 참조는 항상 대괄호 []로 묶입니다. 셀을 참조하는 Excel 수식과 달리 DAX 수식은 항상 열을 참조합니다.
-
빼기(-) 수학 연산자입니다.
-
참조된 열 [TotalCost]에는 [SalesAmount] 열의 값에서 빼려는 값이 포함되어 있습니다.
DAX 수식을 읽는 방법을 이해하려고 할 때 각 요소를 매일 생각하고 말하는 언어로 분해하는 것이 도움이 되는 경우가 많습니다. 예를 들어 다음 수식을 읽을 수 있습니다.
FactSales 테이블에서 Margin 계산 열의 각 행에 대해 [ SalesAmount ] 열의 값에서 [TotalCost] 열의 값을 빼서 (=) 값을 계산합니다.
측정값에 사용되는 수식의 다른 형식을 살펴보겠습니다.
이 수식에는 다음 구문 요소가 포함됩니다.
-
측정값 이름 Sales Amount의 합계입니다. 측정값에 대한 수식에는 측정값 이름, 콜론, 계산 수식이 포함될 수 있습니다.
-
등호 연산자(=)는 계산 수식의 시작을 나타냅니다. 계산되면 결과가 반환됩니다.
-
SUM 함수는 [SalesAmount] 열의 모든 숫자를 추가합니다. 나중에 함수에 대해 자세히 알아봅니다.
-
괄호()는 하나 이상의 인수를 둘러싸고 있습니다. 모든 함수에는 하나 이상의 인수가 필요합니다. 인수는 함수에 값을 전달합니다.
-
참조된 테이블 FactSales입니다.
-
FactSales 테이블의 참조된 열 [SalesAmount]입니다. 이 인수를 사용하면 SUM 함수는 SUM을 집계할 열을 알 수 있습니다.
이 수식은 다음과 같이 읽을 수 있습니다.
Sales Amount의 Sum이라는 측정값의 경우 FactSales 테이블의 [SalesAmount] 열에 있는 값의 SUM을 계산합니다(=).
피벗 테이블 필드 목록의 값 드롭 영역에 배치하면 이 측정값은 피벗 테이블의 각 셀(예: 미국의 휴대폰)에 정의된 값을 계산하고 반환합니다.
이 수식에는 Margin 계산 열에 사용한 수식과는 몇 가지 다른 점이 있습니다. 특히 SUM 함수를 도입했습니다. 함수는 숫자, 날짜, 시간, 텍스트 등을 사용하여 복잡한 계산 및 조작을 더 쉽게 수행할 수 있도록 미리 작성된 수식입니다. 나중에 함수에 대해 자세히 알아봅니다.
앞의 Margin 계산 열과 달리 열이 속한 FactSales 테이블 앞에 [SalesAmount] 열이 표시되었습니다. 테이블 이름 앞에 열 이름이 포함되어 있으므로 정규화된 열 이름이라고 합니다. 동일한 테이블에서 참조되는 열은 수식에 테이블 이름을 포함할 필요가 없습니다. 이렇게 하면 많은 열을 참조하는 긴 수식을 더 짧고 읽기 쉽게 만들 수 있습니다. 그러나 동일한 테이블에 있더라도 항상 측정값 수식에 테이블 이름을 포함하는 것이 좋습니다.
참고: 테이블 이름에 공백, 예약 키워드 또는 허용되지 않는 문자가 포함된 경우 테이블 이름을 작은따옴표로 묶어야 합니다. 또한 로캘이 문자 집합을 지원하는지 여부에 관계없이 이름에 ANSI 영숫자 범위 외부의 문자가 포함된 경우 테이블 이름을 따옴표로 묶어야 합니다.
수식에 올바른 구문이 있는 것이 매우 중요합니다. 대부분의 경우 구문이 올바르지 않으면 구문 오류가 반환됩니다. 다른 경우에는 구문이 올바르지만 반환된 값이 예상과 다를 수 있습니다. 파워 피벗 (및 SQL Server Data Tools)에는 IntelliSense가 포함됩니다. 올바른 요소를 선택하는 데 도움을 줌으로써 구문적으로 올바른 수식을 만드는 데 사용되는 기능입니다.
간단한 수식을 만들어 보겠습니다. 이 작업은 수식 구문과 수식 입력줄의 IntelliSense 기능이 어떻게 도움이 되는지 자세히 이해하는 데 도움이 됩니다.
작업: 계산 열에 대한 간단한 수식 만들기
-
아직 파워 피벗 창에 없는 경우 Excel의 파워 피벗 리본에서 파워 피벗 창을 클릭합니다.
-
파워 피벗 창에서 FactSales 테이블(탭)을 클릭합니다.
-
오른쪽 열로 스크롤한 다음 열 머리글에서 열 추가를 클릭합니다.
-
모델 디자이너 창의 위쪽에 있는 수식 입력줄을 클릭합니다.
이제 수식 입력줄에 커서가 나타납니다. 수식 입력줄에서는 계산 열 또는 계산 필드에 대한 수식을 입력할 수 있습니다.
잠시 수식 입력줄 왼쪽에 있는 세 개의 단추를 살펴보겠습니다.
수식 입력줄에서 커서가 활성화되면 세 개의 단추가 활성화됩니다. 맨 왼쪽 단추인 X는 단순히 취소 단추입니다. 계속 진행하여 클릭합니다. 수식 입력줄에 커서가 더 이상 나타나지 않고 취소 단추와 확인 표시 단추가 더 이상 표시되지 않습니다. 계속 진행하여 수식 입력줄을 다시 클릭합니다. 이제 취소 단추와 확인 표시 단추가 다시 나타납니다. 즉, 수식 입력을 시작할 준비가 된 것입니다.
확인 표시 단추는 수식 확인 단추입니다. 수식을 입력할 때까지는 많은 작업을 수행하지 않습니다. 우리는 조금 다시 올 것이다.
Fx 단추를 클릭합니다. 새 대화 상자가 나타납니다. 함수 삽입 대화 상자 함수 삽입 대화 상자는 DAX 수식 입력을 시작하는 가장 쉬운 방법입니다. 잠시 후에 측정값을 만들 때 수식에 함수를 추가하지만 지금은 계산 열 수식에 함수를 추가할 필요가 없습니다. 계속 진행하여 함수 삽입 대화 상자를 닫습니다.
-
수식 입력줄에 등호 =를 입력한 다음 여는 대괄호 [를 입력합니다. FactSales 테이블의 모든 열과 함께 작은 창이 나타납니다. 이는 작동하는 IntelliSense입니다.
계산 열은 항상 현재 테이블에 만들어지므로 테이블 이름을 사용하여 열 이름 앞에 설 필요가 없습니다. 계속 진행하여 아래로 스크롤한 다음 [SalesQuantity]를 두 번 클릭합니다. 원하는 열 이름으로 스크롤한 다음 Tab 키를 누를 수도 있습니다.
이제 커서가 [SalesQuantity]의 오른쪽에 활성화되었습니다.
-
공백을 입력한 다음 빼기 연산자(빼기 기호)를 입력한 다음 다른 공백을 입력합니다.
-
이제 다른 여는 대괄호[를 입력합니다. 이번에는 [ReturnQuantity] 열을 선택한 다음 Enter 키를 누릅니다.
오류가 발생하면 구문을 주의 깊게 살펴보세요. 필요한 경우 앞에서 설명한 Margin 계산 열의 수식과 비교합니다.
Enter 키를 눌러 수식을 완료하면 파워 피벗 창 아래쪽의 상태 표시줄에 계산 이라는 단어가 나타납니다. 300만 개 이상의 행에 대한 새 값을 계산했음에도 불구하고 빠르게 진행됩니다.
-
열 머리글을 마우스 오른쪽 단추로 클릭하고 열 이름을 NetSales로 바꿉니다.
여기까지입니다! 간단하면서도 매우 강력한 DAX 수식을 만들었습니다. FactSales 테이블의 각 행에 대해 NetSales 수식은 [SalesQuantity] 열의 값에서 [ReturnQuantity] 열의 값을 빼서 값을 계산합니다. "각 행에 대해"라고 말한 방법을 알아차립니다. DAX에서 매우 중요한 또 다른 개념을 엿볼 수 있습니다. 행 컨텍스트입니다. 나중에 행 컨텍스트에 대해 자세히 알아봅니다.
DAX 수식에 연산자를 입력할 때 이해해야 할 중요한 것은 사용 중인 인수의 데이터 형식입니다. 예를 들어 다음 수식 = 1 & 2를 입력하는 경우 반환되는 값은 텍스트 값 "12"입니다. 앰퍼샌드(&) 연산자가 텍스트 연결용이기 때문입니다. DAX는 이 수식을 해석하여 읽습니다. 값 1을 텍스트로 사용하여 결과를 계산하고 값 2를 텍스트로 추가합니다. 이제 = 1 + 2를 입력하는 경우 DAX는 숫자 값 1을 가져와서 숫자 값 2를 추가하여 결과 계산으로 이 수식을 읽습니다. 결과는 물론 숫자 값인 "3"입니다. DAX는 인수에 사용된 열의 데이터 형식을 기반으로 하지 않고 수식의 연산자에 따라 결과 값을 계산합니다. DAX의 데이터 형식은 매우 중요하지만 이 빠른 시작의 범위를 벗어났습니다. DAX 수식의 데이터 형식 및 연산자에 대한 자세한 내용은 온라인 설명서의 DAX 참조(http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409)를 참조하세요.
다른 방법을 시도해 보겠습니다. 이번에는 수식을 입력하고 IntelliSense를 사용하여 측정값을 만듭니다. 수식을 완전히 이해하지 못하면 너무 걱정하지 마세요. 여기서 중요한 점은 올바른 구문에서 여러 요소를 함께 사용하여 수식을 만드는 방법을 배우는 것입니다.
작업: 측정값 수식 만들기
-
FactSales 테이블에서 계산 영역의 빈 셀을 클릭합니다. 이 영역은 파워 피벗 창의 표 바로 아래에 있는 빈 셀 영역입니다.
-
수식 입력줄에 이전 분기 판매액:이라는 이름을 입력합니다.
-
등호 = 를 입력하여 계산 수식을 시작합니다.
-
처음 몇 글자 CAL을 입력한 다음 사용할 함수를 두 번 클릭합니다. 이 수식에서는 CALCULATE 함수를 사용하려고 합니다.
-
여는 괄호()를 입력하여 CALCULATE 함수에 전달할 인수를 시작합니다.
여는 괄호를 입력한 후 IntelliSense는 CALCULATE 함수에 필요한 인수를 표시합니다. 인수에 대해 조금씩 알아봅니다.
-
FactSales 테이블의 처음 몇 글자를 입력한 다음 드롭다운 목록에서 FactSales[Sales]를 두 번 클릭합니다.
-
쉼표(,)를 입력하여 첫 번째 필터를 지정한 다음, PRE을 입력한 다음 PREVIOUSQUARTER 함수를 두 번 클릭합니다.
PREVIOUSQUARTER 함수를 선택하면 다른 인수가 필요함을 나타내는 다른 여는 괄호가 나타납니다. 이번에는 PREVIOUSQUARTER 함수에 대한 입니다.
-
처음 몇 글자를 Dim으로 입력한 다음 DimDate[DateKey]를 두 번 클릭합니다.
-
두 개의 닫는 괄호 )를 입력하여 PREVIOUSQUARTER 함수와 CALCULATE 함수에 전달되는 인수를 모두 닫습니다.
이제 수식이 다음과 같이 표시됩니다.
이전 분기 판매액:=CALCULATE(FactSales[Sales], PREVIOUSQUARTER(DimDate[DateKey]))
-
수식 입력줄에서 수식 확인 단추를 클릭하여 수식의 유효성을 검사합니다. 오류가 발생하면 구문의 각 요소를 확인합니다.
잘 했어요! DAX를 사용하여 측정값을 만들었기 때문에 쉬운 측정값이 아닙니다. 이 수식은 피벗 테이블 또는 피벗 차트에 적용된 필터에 따라 이전 분기의 총 판매량을 계산합니다.
DAX 수식의 몇 가지 중요한 측면을 소개했습니다. 먼저 이 수식에는 두 개의 함수가 포함되어 있습니다. PREVIOUSQUARTER 함수는 CALCULATE 함수에 전달된 인수로 중첩됩니다. DAX 수식에는 최대 64개의 중첩 함수가 포함될 수 있습니다. 수식에 중첩된 함수가 너무 많이 포함될 가능성은 거의 없습니다. 사실, 이러한 수식은 만들고 디버그하기가 매우 어렵고 매우 빠르지 않을 것입니다.
이 수식에서는 필터도 사용했습니다. 필터는 계산할 범위를 좁혀줍니다. 이 경우 하나의 필터를 인수로 선택했는데, 이는 실제로 다른 함수입니다. 나중에 필터에 대해 자세히 알아봅니다.
마지막으로 CALCULATE 함수를 사용했습니다. 이는 DAX에서 가장 강력한 함수 중 하나입니다. 데이터 모델을 작성하고 더 복잡한 수식을 만들 때 이 함수를 여러 번 사용할 수 있습니다. CALCULATE 함수에 대해 논의하는 것은 이 빠른 시작의 범위를 벗어나지만 DAX에 대한 지식이 커짐에 따라 이 함수에 특히 주의해야 합니다.
참고: 일반적으로 DAX 수식에서 Time Intelligence 함수를 사용하려면 날짜 테이블로 표시 대화 상자를 사용하여 고유한 날짜 열을 지정해야 합니다. Contoso DAX 수식 Samples.xlsx 통합 문서에서 DimDate 테이블의 DateKey 열이 고유한 날짜 열로 선택됩니다.
추가 크레딧
'내가 만들 수 있는 가장 간단한 DAX 수식은 무엇인가?' 하고 물어볼 수 있습니다. 글쎄, 그에 대한 대답은 '당신이 할 필요가 없는 수식'입니다. 그리고 이것이 바로 측정값에서 표준 집계 함수를 사용하여 수행할 수 있는 작업입니다. 거의 모든 데이터 모델은 집계된 데이터를 필터링하고 계산해야 합니다. 예를 들어 앞에서 본 판매액 합계 측정값의 SUM 함수는 특정 열의 모든 숫자를 합산하는 데 사용됩니다. DAX에는 값을 집계하는 다른 여러 함수도 포함되어 있습니다. 자동 합계 기능을 사용하여 표준 집계를 사용하여 수식을 자동으로 만들 수 있습니다.
추가 크레딧 작업: 자동 합계 기능을 사용하여 측정값 수식 만들기
-
FactSales 테이블에서 ReturnQuantity 열로 스크롤한 다음 열 머리글을 클릭하여 전체 열을 선택합니다.
-
홈 탭의 리본 메뉴에 있는 계산 그룹에서 자동 합계 단추를 클릭합니다.
AutoSum 옆의 아래쪽 화살표를 클릭한 다음 평균을 클릭합니다(사용할 수 있는 다른 표준 집계 함수도 확인).
즉시 이름이 Average of ReturnQuantity: 뒤에 =AVERAGE([ReturnQuantity]) 수식으로 새 측정값이 만들어집니다.
지금은 그렇게 쉽지 않았습니까? 물론 만드는 모든 수식이 그렇게 간단하지는 않습니다. 그러나 AutoSum 기능을 사용하면 표준 집계 계산을 사용하여 빠르고 쉬운 수식을 만들 수 있습니다.
이렇게 하면 DAX 수식에 사용되는 구문을 상당히 잘 이해할 수 있습니다. 또한 빠르고 쉽고 정확한 수식을 만드는 데 도움이 되는 IntelliSense 및 AutoSum과 같은 멋진 기능도 소개되었습니다. 물론 구문에 대해 더 많이 배울 수 있습니다. 자세한 내용은 DAX 참조 또는 SQL 온라인 설명서입니다.
구문 QuickQuiz
-
수식 입력줄의 이 단추는 어떤 작업을 수행하나요?
-
DAX 수식에서 항상 열 이름을 둘러싸는 것은 무엇인가요?
-
DimProduct
테이블에서 UnitMargin 계산 열 의 각 행에 대해 UnitCost 열의 값을 UnitPrice 열의 값에서 빼서 값을 계산하려면 어떻게 할까요?
답변은 이 항목의 끝에 제공됩니다.
함수
함수는 특정 순서 또는 구조에서 인수라는 특정 값을 사용하여 계산을 수행하는 미리 정의된 수식입니다. 인수는 다른 함수, 다른 수식, 열 참조, 숫자, 텍스트, TRUE 또는 FALSE와 같은 논리 값 또는 상수일 수 있습니다.
DAX에는 날짜 및 시간, 정보, 논리, 수학, 통계, 텍스트 및 시간 인텔리전스 함수 범주가 포함됩니다. Excel 수식의 함수에 익숙한 경우 DAX의 많은 함수가 사용자와 유사하게 표시됩니다. 그러나 DAX 함수는 다음과 같은 방법으로 고유합니다.
-
DAX 함수는 항상 전체 열 또는 테이블을 참조합니다. 테이블 또는 열의 특정 값만 사용하려는 경우 수식에 필터를 추가할 수 있습니다.
-
행별로 계산을 사용자 지정해야 하는 경우 DAX는 현재 행 값 또는 관련 값을 인수의 종류로 사용하여 컨텍스트에 따라 달라지는 계산을 수행할 수 있는 함수를 제공합니다. 나중에 컨텍스트에 대해 자세히 알아봅니다.
-
DAX에는 값이 아닌 테이블을 반환하는 많은 함수가 포함되어 있습니다. 테이블은 표시되지 않지만 다른 함수에 입력을 제공하는 데 사용됩니다. 예를 들어 테이블을 검색한 다음 테이블의 고유 값을 계산하거나 필터링된 테이블 또는 열에서 동적 합계를 계산할 수 있습니다.
-
DAX에는 다양한 시간 인텔리전스 함수가 포함되어 있습니다. 이러한 함수를 사용하면 날짜 범위를 정의하거나 선택하고 이를 기반으로 동적 계산을 수행할 수 있습니다. 예를 들어 병렬 기간의 합계를 비교할 수 있습니다.
수식에 사용해야 할 함수를 알기 어려운 경우도 있습니다. 파워 피벗 및 SQL Server Data Tools의 테이블 형식 모델 디자이너에는 범주별로 함수를 선택하고 각 함수에 대한 간단한 설명을 제공하는 대화 상자인 함수 삽입 기능이 포함되어 있습니다.
함수 삽입 기능을 사용하여 선택할 함수를 포함하는 새 수식을 만들어 보겠습니다.
작업: 함수 삽입을 사용하여 수식에 함수 추가
-
FactSales 테이블에서 가장 오른쪽 열로 스크롤한 다음 열 머리글에서 열 추가를 클릭합니다.
-
수식 입력줄에 등호 =를 입력합니다.
-
함수 삽입 단추를 클릭합니다. 함수 삽입 대화 상자가 열립니다.
-
함수 삽입 대화 상자에서 범주 선택 목록 상자를 클릭합니다. 기본적으로 모두 가 선택되고 모든 범주의 모든 함수가 아래에 나열됩니다. 이는 많은 함수이므로 원하는 함수 형식을 더 쉽게 찾을 수 있도록 함수를 필터링하려고 합니다.
-
이 수식의 경우 다른 테이블에 이미 있는 일부 데이터를 반환하려고 합니다. 이를 위해 필터 범주에서 함수를 사용합니다. 계속 진행하여 필터 범주를 클릭한 다음 함수 선택에서 아래로 스크롤하여 RELATED 함수를 두 번 클릭합니다. 확인을 클릭하여 함수 삽입 대화 상자를 닫습니다.
-
IntelliSense를 사용하여 DimChannel[ChannelName] 열을 찾아 선택할 수 있습니다.
-
수식을 닫은 다음 Enter 키를 누릅니다.
-
Enter 키를 눌러 수식을 완료하면 파워 피벗 창 아래쪽의 상태 표시줄에 계산이라는 단어가 나타납니다. 이제 DimChannel 테이블의 채널 정보를 사용하여 FactSales 테이블에 새 열을 만든 것을 볼 수 있습니다.
-
열의 이름을 채널로 바꿉니다.
수식은 다음과 같습니다. =RELATED(DimChannel[ChannelName])
방금 RELATED 함수인 DAX에서 매우 중요한 또 다른 함수를 소개했습니다. RELATED 함수는 다른 테이블의 값을 반환합니다. 현재 있는 테이블과 가져올 값이 포함된 테이블 간에 관계가 있는 경우 RELATED을 사용할 수 있습니다. 물론 RELATED 함수에는 엄청난 가능성이 있습니다. 이 경우 이제 FactSales 테이블에 각 판매에 대한 판매 채널을 포함할 수 있습니다. 이제 피벗 테이블 필드 목록에서 DimChannel 테이블을 숨길 수 있으므로 더 쉽게 탐색하고 실제로 필요한 가장 중요한 정보만 볼 수 있습니다. 앞에서 설명한 CALCULATE 함수와 마찬가지로 RELATED 함수는 매우 중요하며 여러 번 사용할 수 있습니다.
보듯이 DAX의 함수는 매우 강력한 수식을 만드는 데 도움이 될 수 있습니다. 함수의 기본 사항만 다루었습니다. DAX 기술이 향상되면 다양한 함수를 사용하여 수식을 만듭니다. 모든 DAX 함수에 대한 세부 정보를 알아보는 가장 좋은 위치 중 하나는 DAX(데이터 분석 식) 참조입니다.
Functions QuickQuiz
-
함수는 항상 무엇을 참조하나요?
-
수식에 둘 이상의 함수가 포함될 수 있나요?
-
두 개의 텍스트 문자열을 하나의 문자열에 연결하기 위해 사용할 함수 범주는 무엇인가요?
답변은 이 항목의 끝에 제공됩니다.
컨텍스트
컨텍스트는 이해해야 할 가장 중요한 DAX 개념 중 하나입니다. DAX에는 두 가지 유형의 컨텍스트가 있습니다. 행 컨텍스트 및 필터 컨텍스트입니다. 먼저 행 컨텍스트를 살펴보겠습니다.
행 컨텍스트
행 컨텍스트는 현재 행으로 가장 쉽게 간주합니다. 예를 들어 구문에 대해 학습할 때 앞에서 본 Margin 계산 열을 기억하시나요? =[SalesAmount] - [TotalCost] 수식은 테이블의 각 행에 대한 Margin 열의 값을 계산합니다. 각 행의 값은 동일한 행의 [SalesAmount] 및 [TotalCost]의 다른 두 열 값에서 계산됩니다. DAX는 컨텍스트가 있으므로 Margin 열의 각 행에 대한 값을 계산할 수 있습니다. 각 행에 대해 [TotalCost] 열의 값을 가져와 [SalesAmount] 열의 값에서 뺍니다.
아래에 표시된 선택한 셀에서 현재 행의 $49.54 값은 [SalesAmount] 열의 값 $101.08에서 [TotalCost] 열의 $51.54 값을 빼서 계산되었습니다.
행 컨텍스트는 계산 열에만 적용되는 것이 아닙니다. 행 컨텍스트는 수식에 테이블의 단일 행을 식별하는 필터를 적용하는 함수가 있을 때마다 적용됩니다. 함수는 기본적으로 필터링하는 테이블의 각 행에 대한 행 컨텍스트를 적용합니다. 이 유형의 행 컨텍스트는 측정값에 가장 자주 적용됩니다.
필터 컨텍스트
필터 컨텍스트는 행 컨텍스트보다 이해하기가 조금 더 어렵습니다. 필터 컨텍스트를 결과 또는 값을 결정하는 계산에 적용된 하나 이상의 필터로 가장 쉽게 생각할 수 있습니다.
행 컨텍스트 대신 필터 컨텍스트가 없습니다. 오히려 행 컨텍스트 외에 적용됩니다. 예를 들어 계산에 포함할 값의 범위를 더 좁히려면 행 컨텍스트를 지정할 뿐만 아니라 해당 행 컨텍스트에서 특정 값(필터)만 지정하는 필터 컨텍스트를 적용할 수 있습니다.
필터 컨텍스트는 피벗 테이블에서 쉽게 볼 수 있습니다. 예를 들어 값 영역에 TotalCost를 추가한 다음 행 또는 열에 Year 및 Region을 추가하는 경우 지정된 연도 및 지역에 따라 데이터의 하위 집합을 선택하는 필터 컨텍스트를 정의합니다.
필터 컨텍스트가 DAX에 중요한 이유는 무엇인가요? 필터 컨텍스트는 피벗 테이블에 열 및 행 레이블 및 슬라이서를 추가하여 가장 쉽게 적용할 수 있지만 ALL, RELATED, FILTER, CALCULATE, 관계 및 기타 측정값 및 열과 같은 함수를 사용하여 필터를 정의하여 DAX 수식에도 필터 컨텍스트를 적용할 수 있습니다. 예를 들어 StoreSales라는 측정값에서 다음 수식을 살펴보겠습니다.
분명히 이 수식은 본 다른 수식보다 더 복잡합니다. 그러나 이 수식을 더 잘 이해하기 위해 다른 수식과 마찬가지로 세분화할 수 있습니다.
이 수식에는 다음 구문 요소가 포함됩니다.
-
측정값 이름 StoreSales 뒤에 콜론 :이 잇습니다.
-
등호 연산자(=)는 수식의 시작을 나타냅니다.
-
CALCULATE 함수는 지정된 필터에 의해 수정된 컨텍스트에서 식을 인수로 평가합니다.
-
괄호()는 하나 이상의 인수를 둘러싸고 있습니다.
-
식과 동일한 테이블의 측정값 [Sales]입니다. Sales 측정값에는 =SUM(FactSales[SalesAmount]) 수식이 있습니다.
-
쉼표(,)는 각 필터를 구분합니다.
-
참조된 열 및 특정 값 DimChannel[ChannelName] ="Store"를 필터로 사용합니다.
이 수식은 Sales 측정값에 정의된 판매 값만 필터로 "Store" 값이 있는 DimChannel[ChannelName] 열의 행에 대해서만 계산되도록 합니다.
상상할 수 있듯이 수식 내에서 필터 컨텍스트를 정의할 수 있다는 것은 매우 강력한 기능입니다. 관련 테이블의 특정 값만 참조할 수 있는 것은 이러한 예 중 하나일 뿐입니다. 컨텍스트를 즉시 완전히 이해하지 못하면 걱정하지 마세요. 고유한 수식을 만들면 컨텍스트와 DAX에서 왜 그렇게 중요한지 더 잘 이해할 수 있습니다.
Context QuickQuiz
-
두 가지 유형의 컨텍스트는 무엇인가요?
-
필터 컨텍스트란?
-
행 컨텍스트란?
답변은 이 항목의 끝에 제공됩니다.
요약
DAX에서 가장 중요한 개념을 기본적으로 이해했으므로 계산 열 및 측정값에 대한 DAX 수식을 직접 만들 수 있습니다. DAX는 실제로 학습하기 조금 까다로울 수 있지만 많은 리소스를 사용할 수 있습니다. 이 항목을 몇 번 읽고 몇 가지 고유한 수식을 실험한 후에는 고유한 비즈니스 문제를 해결하는 데 도움이 될 수 있는 다른 DAX 개념 및 수식에 대해 자세히 알아볼 수 있습니다. Microsoft 및 주요 BI 전문가의 파워 피벗 도움말, SQL Server 온라인 설명서, 백서 및 블로그에서 다양한 DAX 리소스를 사용할 수 있습니다. DAX 리소스 센터 Wiki(http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx)는 시작하기에 좋은 장소입니다. DAX(데이터 분석 식) 참조도 유용한 리소스입니다. 즐겨찾기에 저장해야 합니다.
다운로드(http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409)에 제공되는 BI 테이블 형식 모델 백서의 DAX는 여기에 도입된 개념과 다른 많은 고급 개념 및 수식을 보다 자세히 살펴봅니다. 또한 이 백서는 이미 있는 동일한 Contoso DAX 샘플 Formulas.xlsx 통합 문서를 사용합니다.
QuickQuiz 답변
구문:
-
함수 삽입 기능을 엽니다.
-
대괄호 [].
-
=[UnitPrice] - [UnitCost]
함수:
-
테이블 및 열입니다.
-
예. 수식에는 최대 64개의 중첩 함수가 포함될 수 있습니다.
문맥:
-
행 컨텍스트 및 필터 컨텍스트.
-
단일 값을 결정하는 계산에서 하나 이상의 필터입니다.
-
현재 행입니다.