DAX 수식 작성
각 모델 계산 유형, 계산된 테이블, 계산 열 또는 측정값은 순서대로 이름, 등호(=), DAX 수식으로 정의됩니다. 모델 계산을 만들려면 다음 템플릿을 사용합니다.
<Calculation name> = <DAX formula>
예를 들어 Date 테이블 데이터를 복제하는 Ship Date 계산된 테이블의 정의는 다음과 같습니다.
Ship Date = 'Date'
DAX 수식은 결과를 반환하는 식으로 구성됩니다. 결과는 테이블 개체 또는 스칼라 값입니다. 계산된 테이블 수식은 테이블 개체를 반환해야 합니다. 계산 열 및 측정값 수식은 스칼라 값(단일 값)을 반환해야 합니다.
수식은 다음을 사용하여 어셈블됩니다.
- DAX 함수
- DAX 연산자
- 모델 개체에 대한 참조
- 상수 값, 예: 숫자 24 또는 리터럴 텍스트 “FY”(회계 연도의 약어)
- DAX 변수
- 공백
팁
Power BI Desktop에 DAX 수식을 입력하면 IntelliSense의 이점을 누릴 수 있습니다. IntelliSense는 함수 및 모델 리소스를 나열하는 코드 완성 도우미입니다. 사용자가 DAX 함수를 선택하면 정의 및 설명도 제공합니다. 정확한 수식을 신속하게 작성할 수 있도록 IntelliSense를 사용하는 것이 좋습니다.
DAX 함수
Microsoft Excel과 마찬가지로 DAX는 함수형 언어이므로 수식은 함수를 사용하여 특정 목표를 달성합니다. 일반적으로 DAX 함수에는 변수를 전달할 수 있도록 하는 인수가 있습니다. 수식은 여러 함수 호출을 사용할 수 있으며 다른 함수 안에 함수를 중첩하는 경우가 많습니다.
수식에서 함수 이름 뒤에는 괄호가 와야 합니다. 괄호 안에 변수가 전달됩니다.
참고
일부 함수는 인수를 사용하지 않으며, 인수는 선택 사항일 수 있습니다.
DAX 함수 작업에 대해서는 이 모듈의 뒷부분에서 설명합니다.
DAX 연산자
또한 수식은 산술 계산을 수행하거나, 값을 비교하거나, 문자열을 처리하거나, 조건을 테스트할 수 있는 연산자를 사용합니다.
DAX 연산자에 대해서는 이 모듈의 뒷부분에서 자세히 설명합니다.
모델 개체에 대한 참조
수식은 세 가지 유형의 모델 개체, 즉 테이블, 열, 측정값만 참조할 수 있습니다. 수식에서 계층 구조 또는 계층 구조 수준을 참조할 수 없습니다. (계층 구조 수준은 열을 기반으로 하므로 수식이 계층 구조 수준의 열을 참조할 수 있습니다.)
테이블 참조
수식에서 테이블을 참조할 때 공식적으로 테이블 이름은 작은따옴표로 묶여 있습니다. 다음 계산된 테이블 정의에서 Date 테이블이 작은따옴표로 묶여 있습니다.
Ship Date = 'Date'
그러나 다음 조건에 모두 해당하는 경우에는 작은따옴표를 생략할 수 있습니다.
- 테이블 이름에 포함된 공백이 없습니다.
- 테이블 이름이 DAX에서 사용되는 예약어가 아닙니다. 모든 DAX 함수 이름 및 연산자가 예약어입니다. Date는 DAX 함수 이름이기 때문에 Date라는 테이블을 참조할 때 작은따옴표로 묶어야 합니다.
다음 계산된 테이블 정의에서 Airport 테이블을 참조할 때 작은따옴표를 생략할 수 있습니다.
Arrival Airport = Airport
열 참조
수식의 열을 참조하는 경우에는 열 이름을 대괄호로 묶어야 합니다. 선택적으로 그 앞에 테이블 이름을 사용할 수 있습니다. 예를 들어 다음 측정값 정의는 Sales Amount 열을 참조합니다.
Revenue = SUM([Sales Amount])
열 이름은 테이블 내에서 고유하지만 모델 내에서 고유해야 하는 것은 아니므로 열 참조 앞에 테이블 이름을 사용하여 명확하게 구분할 수 있습니다. 이렇게 명확하게 구분된 열을 정규화된 열이라고 합니다. 일부 DAX 함수에서는 정규화된 열을 전달해야 합니다.
팁
수식의 가독성을 높이려면 항상 열 참조 앞에 테이블 이름을 사용하는 것이 좋습니다.
위의 측정값 정의 예제는 다음과 같이 다시 작성할 수 있습니다.
Revenue = SUM(Sales[Sales Amount])
측정값 참조
열 이름 참조와 같이 수식에서 측정값을 참조하는 경우에는 측정값 이름을 대괄호로 묶어야 합니다. 예를 들어 다음 측정값 정의는 Revenue 및 Cost 측정값을 참조합니다.
Profit = [Revenue] - [Cost]
DAX 초보자인 경우 열 및 측정값 참조가 항상 대괄호로 묶인다는 사실 때문에 수식을 읽을 때 혼동을 일으킬 수 있습니다. 그러나 DAX 수식, 열 및 측정값은 서로 다른 방식으로 사용되기 때문에 DAX 기본 사항에 대해 잘 알게 되면 개체 유형을 구분할 수 있을 것입니다.
팁
측정값 참조 앞에 테이블 이름을 사용할 수 있습니다. 그러나 측정값은 모델 수준 개체입니다. 홈 테이블에 할당되는 동안에는 필드 창에서 측정값을 논리적으로 구성하기 위한 외관상 관계만 있습니다.
따라서 항상 열 참조 앞에 테이블 이름을 사용하는 것이 좋지만 측정값에서는 그 반대입니다. 측정값 참조 앞에 해당 테이블 이름을 사용하지 않는 것이 좋습니다.
자세한 내용은 열 및 측정값 참조를 참조하세요.
DAX 변수
수식은 DAX 변수를 선언하여 결과를 저장할 수 있습니다.
DAX 변수 사용 방법과 시기는 이 모듈의 뒷부분에서 설명합니다.
공백
공백은 빠르고 간단하게 이해할 수 있는 방식으로 수식의 서식을 지정하는 데 사용할 수 있는 문자입니다. 공백 문자는 다음과 같습니다.
- 공백
- 탭
- 캐리지 리턴
공백은 선택 사항이며 수식 논리를 수정하거나 성능에 부정적인 영향을 주지 않습니다. 서식 스타일을 채택하여 일관되게 적용하고 다음 권장 사항을 고려하는 것이 좋습니다.
- 연산자 사이에 공백을 사용합니다.
- 탭을 사용하여 중첩된 함수 호출을 들여씁니다.
- 캐리지 리턴을 사용하여 함수 인수를 구분합니다(특히 매우 길어 한 줄에 맞지 않는 경우). 이러한 방식으로 서식을 지정하면 특히 수식에 괄호가 없는 경우 문제 해결이 더 간단해집니다.
- 공백이 너무 적은 것보다 많은 경우 오류가 발생하기 쉽습니다.
팁
수식 입력줄에서 캐리지 리턴을 입력하려면 Shift+Enter를 누릅니다. Enter만 누르면 수식이 커밋됩니다.
다음과 같이 한 줄로 작성되고 5개의 DAX 함수 호출을 포함하는 측정값 정의를 생각해 보겠습니다.
Revenue YoY % = DIVIDE([Revenue] - CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])), CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])))
다음 예제는 동일한 측정값 정의이지만 이제는 서식이 지정되어 보다 쉽게 읽고 이해할 수 있습니다.
Revenue YoY % =
DIVIDE(
[Revenue]
- CALCULATE(
[Revenue],
SAMEPERIODLASTYEAR('Date'[Date])
),
CALCULATE(
[Revenue],
SAMEPERIODLASTYEAR('Date'[Date])
)
)
측정값의 서식을 직접 지정해 보세요. Adventure Works DW 2020 M02.pbix Power BI Desktop 파일을 열고 필드 창에서 Sales 테이블을 확장하고 Revenue YoY % 측정값을 선택합니다. 수식 입력줄에서 탭 및 캐리지 리턴 문자를 사용하여 이전 예제와 동일한 결과를 생성합니다. 캐리지 리턴을 추가할 때 Shift+Enter를 눌러야 합니다.
이 측정값 정의는 가독성 및 성능에 대해 추가로 향상시킬 수 있습니다. 이에 대해서는 이 모듈의 뒷부분에서 설명합니다.
팁
계산의 서식을 지정하는 데 도움이 되는 또 하나의 도구는 DAX 포맷터입니다. 이 도구에 계산을 붙여넣고 서식을 지정할 수 있습니다. 그런 다음 서식이 지정된 계산을 클립보드에 복사하고 다시 Power BI Desktop에 붙여넣을 수 있습니다.