DAX 연산자 사용

완료됨

DAX 수식은 연산자를 사용하여 산술 계산을 수행하거나, 값을 비교하거나, 문자열을 처리하거나, 조건을 테스트하는 식을 만들 수 있습니다.

많은 DAX 연산자 및 우선 순위가 Excel과 동일합니다.

산술 연산자

다음 표에는 산술 연산자가 나와 있습니다.

연산자 Description
+ 더하기
- 빼기
* 곱하기
/ 나누기
^ 지수화

두 식을 나눌 때 분모가 0 또는 BLANK를 반환할 수 있는 경우 DIVIDE DAX 함수를 사용하는 것이 더 효율적이고 안전합니다.

비교 연산자

다음 표에는 두 값을 비교하는 데 사용되는 비교 연산자가 나와 있습니다. 결과는 TRUE 또는 FALSE입니다.

연산자 Description
= 같음
== 엄격한 같음
> 보다 큼
< 보다 작음
>= 크거나 같음
<= 작거나 같음
<> 같지 않음

엄격한 같음(==)을 제외한 모든 비교 연산자는 BLANK를 숫자 0, 빈 문자열(""), 날짜 1899년 12월 30일 또는 FALSE와 동일한 것으로 처리합니다. 즉, 식 [Revenue] = 0[Revenue]의 값이 0 또는 BLANK일 경우 TRUE가 됩니다. 이와 달리, [Revenue] == 0[Revenue]의 값이 0인 경우에만 TRUE입니다.

텍스트 연결 연산자

앰퍼샌드(&) 문자를 사용하여 두 텍스트 값을 연결하여 하나의 연속한 텍스트 값을 생성합니다. 예를 들어 다음 계산 열 정의를 살펴보세요.

Model Color = 'Product'[Model] & "-" & 'Product'[Color]

논리 연산자

논리 연산자를 사용하여 단일 결과를 생성하도록 식을 조합합니다. 다음 표에는 모든 논리 연산자가 나와 있습니다.

연산자 Description
&& 각각 부울 결과를 갖는 두 식 사이에 AND 조건을 만듭니다. 두 식이 모두 TRUE를 반환할 경우 식 조합에서도 TRUE가 반환되고 그렇지 않으면 조합이 FALSE를 반환합니다.
||(이중 파이프) 두 논리 식 사이에 OR 조건을 만듭니다. 두 식이 모두 TRUE를 반환하면 결과는 TRUE입니다. 두 식이 모두 FALSE인 경우에만 결과가 FALSE입니다.
IN 테이블과 비교할 각 행 사이에 논리적 OR 조건을 만듭니다. 참고: 테이블 생성자 구문은 중괄호를 사용합니다.
NOT 부울 식의 상태를 반전시킵니다(FALSE에서 TRUE로 또는 그 반대로).

IN 논리 연산자를 사용하는 예는 CALCULATE DAX 함수를 사용하여 오스트레일리아 및 뉴질랜드의 특정 필터를 적용하는 ANZ Revenue 측정값 정의입니다.

참고

필터 컨텍스트를 수정하는 방법을 배울 때 강력한 CALCULATE 함수에 대해 설명합니다.

ANZ Revenue =
CALCULATE(
    [Revenue],
    Customer[Country-Region] IN {
        "Australia",
        "New Zealand"
    }
)

연산자 우선 순위

DAX 수식에 여러 개의 연산자가 포함된 경우 DAX는 규칙을 사용하여 평가 순서를 결정합니다. 이를 연산자 우선 순위라고 합니다. 연산은 다음 표에 따라 정렬됩니다.

연산자 설명
^ 지수
- 부호(예: -1)
* 및 / 곱하기 및 나누기
NOT NOT
+ 및 - 더하기 및 빼기
& 두 텍스트 문자열의 연결
=,==,<,>,<=,>=,<> 비교

연산자의 우선 순위 값이 동일할 경우 왼쪽에서 오른쪽의 순서를 따릅니다.

일반적으로 연산자 우선 순위는 Excel과 동일합니다. 평가 순서를 재정의해야 하는 경우 괄호를 사용하여 연산을 그룹화합니다.

예를 들어 다음 계산 열 정의를 살펴보세요.

Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * 1 - [Unit Price Discount Pct]

이 샘플 계산 열 정의는 곱하기가 빼기보다 먼저 발생하기 때문에 잘못된 결과를 생성합니다. 다음의 올바른 계산 열 정의는 괄호를 사용하여 빼기가 곱하기보다 먼저 발생하도록 합니다.

Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * (1 - [Unit Price Discount Pct])

연산자 우선 순위 규칙을 기억하는 것은 특히 DAX 초보자에게는 어려울 수 있습니다. 따라서 수식을 철저히 테스트하는 것이 좋습니다. 잘못된 평가 순서로 인해 수식이 올바른 결과를 생성하지 않는 경우에는 괄호를 추가하여 평가 순서를 조정하며 시험해 볼 수 있습니다. 괄호를 추가하여 수식의 가독성을 향상시킬 수도 있습니다.

DAX 연산자 및 우선 순위 순서에 대한 자세한 내용은 DAX 연산자를 참조하세요.

암시적 변환

연산자를 사용하여 서로 다른 데이터 형식을 결합하는 DAX 수식을 작성할 때 형식을 명시적으로 변환할 필요가 없습니다. 일반적으로 DAX는 참조된 모델 개체의 데이터 형식을 자동으로 식별하고 지정된 작업을 완료하는 데 필요한 경우 암시적 변환을 수행합니다.

그러나 성공적으로 변환될 수 있는 값에는 몇 가지 제한 사항이 있습니다. 값 또는 열에 현재 연산과 호환되지 않는 데이터 형식이 포함된 경우 DAX는 오류를 반환합니다. 예를 들어 날짜 값을 곱하는 시도는 논리적이 아니기 때문에 오류가 생성됩니다.

사용되는 연산자에 따라 BLANK가 다르게 처리됩니다. Excel에서 BLANK를 처리하는 방법과 비슷하지만 데이터베이스(SQL)에서 NULL을 처리하는 방법과는 다르게 처리됩니다. BLANK는 산술 연산자에서 사용할 때는 0으로 처리되고 문자열에 연결될 때는 빈 문자열로 처리됩니다.

BLANK 처리 방식을 기억하는 것은 특히 DAX 초보자에게는 어려울 수 있습니다. 따라서 수식을 철저히 테스트하는 것이 좋습니다. BLANK가 예기치 않은 결과를 만들 경우 IFISBLANK DAX 함수를 사용하여 BLANK 여부를 테스트한 다음 적절한 방법으로 대응하세요.