PowerPivot의 DAX 구문 사양
DAX(Data Analysis Expressions)는 PowerPivot for Excel에서 수식 및 식을 작성하기 위해 조합할 수 있는 함수, 연산자 및 상수의 라이브러리입니다. 이 섹션에서는 DAX 언어의 구문 및 요구 사항에 대해 자세히 설명합니다.
작성할 수 있는 수식 종류에 대한 예와 테이블 필터링 및 컨텍스트 변경을 위한 식 사용 방법에 대해서는 DAX(Data Analysis Expressions) 개요을 참조하십시오. 이 항목에는 다음과 같은 섹션이 포함되어 있습니다.
구문 요구 사항
명명 요구 사항
함수
연산자 및 상수
데이터 형식
구문 요구 사항
DAX 수식은 Excel 테이블에서 사용하는 수식과 매우 비슷하지만 몇 가지 주요 차이점이 있습니다.
Microsoft Excel에서는 개별 셀 또는 배열을 참조할 수 있지만, PowerPivot에서는 전체 테이블 또는 전체 데이터 열만 참조할 수 있습니다. 그러나 열의 일부만 사용하거나 열의 고유한 값만 사용해야 하는 경우 열을 필터링하거나 고유한 값을 반환하는 DAX 함수를 사용하여 비슷한 동작을 얻을 수 있습니다.
DAX 수식은 Microsoft Excel과 동일한 데이터 형식을 지원하지 않습니다. 일반적으로 DAX에서는 Excel보다 많은 데이터 형식을 제공하며 데이터를 가져올 때 일부 데이터에 대해 암시적인 형식 변환을 수행합니다. 자세한 내용은 Data Types in DAX을 참조하십시오.
DAX 수식은 항상 등호(=)로 시작합니다. 등호 뒤에 스칼라 또는 스칼라로 변환할 수 있는 식으로 계산되는 모든 식을 제공할 수 있습니다. 다음과 같은 방법이 있습니다.
스칼라 상수 또는 스칼라 연산자(+,-,*,/,>=,...,&&, ...)를 사용하는 식
열 또는 테이블에 대한 참조. DAX 언어는 항상 함수에 대한 입력으로 테이블 및 열을 사용하고, 값의 배열 또는 임의 집합은 사용하지 않습니다.
식의 일부로 제공된 연산자, 상수 및 값.
함수 결과 및 필수 인수. 일부 DAX 함수는 스칼라 대신 테이블을 반환하므로 테이블을 평가하고 스칼라를 반환하는 함수에 래핑되어야 합니다. 단일 열과 단일 행으로 이루어진 테이블이 아닌 경우 테이블은 스칼라 값으로 처리됩니다.
PowerPivot 함수는 대부분 인수가 하나 이상 필요하며 인수에는 테이블, 열, 식, 값 등이 포함될 수 있습니다. 그러나 PI와 같은 일부 함수는 인수가 필요 없고 Null 인수를 나타내기 위해 항상 괄호가 필요합니다. 예를 들어 항상 PI가 아닌 PI()로 입력해야 합니다. 또한 다른 함수 내에 함수를 중첩할 수도 있습니다.
식. 식은 연산자, 상수 또는 열에 대한 참조 중 일부 또는 모두를 포함할 수 있습니다.
예를 들어 다음은 모두 유효한 수식입니다.
수식 |
결과 |
---|---|
=3 |
3 |
="Sales" |
Sales |
='Sales'[Amount] |
Sales 테이블에서 이 수식을 사용하는 경우 현재 행에 대한 Sales 테이블의 Amount 열 값을 가져옵니다. |
=(0.03 *[Amount]) =0.03 * [Amount] |
현재 테이블의 Amount 열에 있는 값의 3%입니다. 이 수식은 백분율을 계산하기 위해 사용할 수 있지만 테이블에서 서식 지정을 적용하지 않는 한 결과가 백분율로 표시되지 않습니다. |
=PI() |
pi 상수의 값입니다. |
[!참고]
수식은 계산 열에서 사용되는지 또는 피벗 테이블 내의 측정값에서 사용되는지에 따라 다르게 동작할 수 있습니다. 항상 컨텍스트 및 수식에 사용하는 데이터와 계산에서 사용될 수 있는 다른 데이터와의 관계에 주의해야 합니다. 자세한 내용은 DAX 수식의 컨텍스트를 참조하십시오.
명명 요구 사항
PowerPivot 창은 각각의 고유 탭에 여러 테이블을 포함할 수 있습니다. 테이블과 해당 열은 PowerPivotxVelocity 메모리 내 분석 엔진(VertiPaq)에 저장되는 하나의 데이터베이스를 구성합니다. 이 데이터베이스 내에서 모든 테이블은 이름이 고유해야 합니다. 또한 각 테이블 내에서 열 이름은 고유해야 합니다. 모든 개체 이름은 대/소문자를 구분하지 않습니다. 예를 들어 SALES와 Sales는 동일한 테이블을 나타냅니다.
기존 PowerPivot 데이터베이스에 추가하는 각 열과 측정값은 특정 테이블에 속해야 합니다. 열이 포함된 테이블을 지정할 때, 테이블 내에 계산 열을 만들 경우에는 암시적인 방식으로, 측정값을 만들고 측정값 정의를 저장할 테이블 이름을 지정할 경우에는 명시적인 방식으로 지정합니다.
테이블 및 열을 함수에 대한 입력으로 사용할 때는 일반적으로 열 이름을 한정해야 합니다. 정규화된 열 이름은 테이블 이름 뒤에 대괄호로 묶인 열 이름이 오는 형태입니다. 예를 들면 'U.S. Sales'[Products]와 같습니다. 다음 컨텍스트에서 열을 참조할 경우 반드시 정규화된 이름이 필요합니다.
VALUES 함수의 인수로 사용할 경우
ALL 또는 ALLEXCEPT 함수의 인수로 사용할 경우
CALCULATE 또는 CALCULATETABLE 함수에 대한 필터 인수에서
RELATEDTABLE 함수의 인수로 사용할 경우
모든 시간 인텔리전스 함수의 인수로 사용할 경우
정규화되지 않은 열 이름은 괄호로 묶인 열 이름만 표시됩니다. 예를 들어 [Sales Amount]과 같이 뒤에 숫자가 붙습니다. 예를 들어 현재 테이블의 같은 행에서 스칼라 값을 참조할 때는 정규화되지 않은 열 이름을 사용할 수 있습니다.
테이블의 이름에 공백, 예약 키워드 또는 허용되지 않는 문자가 포함된 경우 작은따옴표로 테이블 이름을 묶어야 합니다. 로캘에서 문자 집합을 지원하는지 여부에 관계 없이 테이블 이름에 ANSI 영숫자 문자 범위를 벗어나는 문자가 있는 경우에는 테이블 이름을 따옴표로 묶어야 합니다. 예를 들어 ‘Таблица’처럼 키릴 자모 문자로 작성된 테이블 이름이 포함된 통합 문서를 여는 경우에는 공백이 없더라도 테이블 이름을 따옴표로 묶어야 합니다.
[!참고]
정규화된 열 이름을 쉽게 입력하려면 클라이언트의 수식 자동 완성 기능을 사용하는 것이 좋습니다.
테이블
테이블 이름은 현재 테이블이 아닌 다른 테이블의 열인 경우 필수입니다. 테이블 이름은 반드시 데이터베이스 내에서 고유해야 합니다.
테이블 이름에 공백, 기타 특수 문자 또는 영숫자가 아닌 문자가 포함될 경우 작은따옴표로 묶어야 합니다.
측정값
측정값 이름은 항상 대괄호로 묶습니다.
측정값 이름은 공백을 포함할 수 있습니다.
각 측정값 이름은 데이터베이스 내에서 고유해야 합니다. 따라서 기존 측정값을 참조할 때 측정값 이름 앞에 테이블 이름을 지정할지는 선택적입니다. 하지만 측정값을 만들 때는 항상 측정값 정의가 저장될 테이블을 지정해야 합니다.
열
열 이름은 테이블 컨텍스트에서 고유해야 합니다. 하지만 여러 테이블에 동일한 이름의 열이 있을 수는 있으며 테이블 이름만 모호함이 없으면 됩니다.
일반적으로 열이 속한 기준 테이블을 참조하지 않고 열을 참조할 수 있습니다. 단, 해결할 이름 충돌이 발생할 수 있을 경우 또는 정규화된 열 이름을 사용해야 하는 특정 함수의 경우에는 예외입니다.
예약된 키워드
테이블에 사용하는 이름이 Analysis Services 예약 키워드와 동일한 경우 오류가 발생하고 테이블 이름을 바꿔야 합니다. 하지만 개체 이름을 괄호로 묶거나(열) 따옴표로 묶는 경우(테이블) 개체 이름에 키워드를 사용할 수 있습니다.
[!참고]
응용 프로그램에 따라 따옴표는 몇 가지 다른 문자로 표현될 수 있습니다. 외부 문서나 웹 페이지에서 수식을 붙여 넣을 때는 여는 따옴표와 닫는 따옴표에 사용되는 문자의 ASCII 코드를 검사하여 동일한지 확인해야 합니다. 그렇지 않으면 DAX에서 기호를 따옴표로 인식하지 못하여 참조가 잘못될 수 있습니다.
특수 문자
다음 문자 및 문자 유형은 테이블, 열 또는 측정값 이름으로 사용할 수 없습니다.
선행 또는 후행 공백(공백을 이름 구분 기호, 대괄호 또는 단일 아포스트로피로 구분할 경우는 예외)
제어 문자
PowerPivot 개체 이름에 적합하지 않은 문자:
.,;':/\*|?&%$!+=()[]{}<>
개체 이름의 예
다음 표에서는 일부 개체 이름의 예를 보여 줍니다.
개체 유형 |
예 |
설명 |
테이블 이름 |
Sales |
테이블 이름에 공백 또는 기타 특수 문자가 포함되지 않은 경우 이름을 따옴표로 묶어야 합니다. |
테이블 이름 |
‘Canada Sales’ |
이름에 공백, 탭 또는 기타 특수 문자가 있는 경우 이름을 작은따옴표로 묶습니다. |
정규화된 열 이름 |
Sales[Amount] |
열 이름 앞에 테이블 이름이 오고 열 이름을 대괄호로 묶습니다. |
정규화된 측정값 이름 |
Sales[Profit] |
측정값 이름 앞에 테이블 이름이 오고 측정값 이름을 대괄호로 묶습니다. 특정 컨텍스트에서는 정규화된 이름이 필요합니다. |
정규화되지 않은 열 이름 |
[Amount] |
정규화되지 않은 이름은 대괄호 내의 열 이름에만 사용합니다. 정규화되지 않은 이름을 사용할 수 있는 컨텍스트에는 동일한 테이블의 계산 열 수식 또는 동일한 테이블을 검색하는 집계 함수의 수식이 포함됩니다. |
테이블의 공백이 있는 정규화된 열 |
‘Canada Sales’[Qty] |
테이블 이름에는 공백이 포함되므로 작은따옴표로 묶어야 합니다. |
[!참고]
정규화된 열 이름을 쉽게 입력하려면 수식을 작성할 때 자동 완성 기능을 사용하는 것이 좋습니다. 자세한 내용은 계산 수식 작성을 참조하십시오.
기타 제한 사항
각 함수에 필요한 구문 및 함수가 수행할 수 있는 작업 유형은 함수에 따라 크게 다릅니다. 하지만 일반적으로는 다음과 같은 규칙이 모든 수식 및 식에 적용됩니다.
DAX 수식 및 식으로는 테이블의 개별 값을 수정하거나 삽입할 수 없습니다.
DAX에서는 계산 행을 만들 수 없습니다. 계산 열 및 측정값만 만들 수 있습니다.
계산 열을 정의할 때는 함수를 원하는 대로 중첩할 수 있습니다.
DAX는 테이블을 반환하는 여러 함수를 제공합니다. 일반적으로 이러한 함수로부터 반환되는 값은 다른 함수에 대한 입력으로 사용되며, 이를 위해서는 테이블을 입력으로 사용해야 합니다.
DAX 함수
DAX에서는 다음과 같은 유형의 함수들을 제공합니다.
DAX 연산자 및 상수
다음 표에서는 DAX에서 지원하는 연산자를 설명합니다. 일반적으로 DAX의 연산자는 몇 가지 사소한 예외는 있지만 Microsoft Excel과 동일한 방식으로 작동합니다. 개별 연산자의 구문에 대한 자세한 내용은 PowerPivot의 DAX 연산자 참조를 참조하십시오.
연산자 유형 |
기호 및 사용법 |
---|---|
괄호 연산자 |
() 선행 순서 지정 및 인수 그룹화 |
산술 연산자 |
+(더하기) -(빼기/ 부호) *(곱하기) /(나누기) ^(지수) |
비교 연산자 |
=(같음) > (보다 큼) < (보다 작음) >= (크거나 같음) <= (작거나 같음) <> (같지 않음) |
텍스트 연결 연산자 |
&(연결) |
논리 연산자 |
&&(및) ||(또는) |
DAX의 데이터 형식
DAX 수식에서 사용하는 열 또는 값은 데이터 형식을 캐스팅, 변환 또는 지정할 필요가 없습니다. DAX 수식에서 데이터를 사용할 때는 DAX가 참조되는 열 또는 사용자가 입력한 값에서 데이터 형식을 식별하고 지정된 연산을 완료하기 위해 필요한 경우 데이터 형식을 암시적으로 변환합니다.
예를 들어 날짜 값에 숫자를 더하려는 경우, PowerPivot에서도 Excel의 경우와 같이 함수 컨텍스트에서 연산을 해석하고, 숫자들을 하나의 공통된 데이터 형식으로 변환한 후 의도된 형식인 날짜 형식으로 결과를 반환합니다.
하지만 성공적으로 변환될 수 있는 값들에는 약간의 제한이 있습니다. 값 또는 열에 현재 연산과 호환되지 않는 데이터 형식이 포함된 경우 DAX는 오류를 반환합니다. 또한 DAX는 PowerPivot 통합 문서로 가져온 기존 데이터의 데이터 형식을 명시적으로 변경, 변환 또는 캐스팅할 수 있는 함수를 제공하지 않습니다.
![]() |
---|
PowerPivot에서는 Excel에서 사용되는 Variant 데이터 형식을 사용할 수 없습니다. 따라서 데이터를 로드하거나 가져올 때는 각 열의 데이터가 일반적으로 일관적인 데이터 유형인 것으로 예상됩니다. |
일부 함수에서는 문자열을 포함하여 스칼라 값을 반환하지만 다른 함수에서는 정수 및 실수를 모두 포함하는 숫자 또는 날짜와 시간이 사용됩니다. 각 함수에 필요한 데이터 형식은 DAX 함수 참조 섹션에서 자세히 설명됩니다.
테이블은 PowerPivot에서 새로운 데이터 형식입니다. 여러 개의 데이터 열과 데이터 행을 포함하는 테이블을 함수에 대한 인수로 사용할 수 있습니다. 일부 함수에서는 메모리에 저장되어 다른 함수에 대한 인수로 사용할 수 있는 테이블을 반환합니다.
여러 숫자 및 날짜/시간 데이터 형식에 대한 자세한 내용과 Null 및 빈 문자열 처리에 대한 자세한 내용은 Data Types Supported in PowerPivot Workbooks을 참조하십시오.