다음을 통해 공유


DAX 연산자

DAX(데이터 분석 식) 언어는 연산자를 사용하여 값을 비교하거나 산술 계산을 수행하거나 문자열을 사용하는 식을 만듭니다.

연산자 유형

산술, 비교, 텍스트 연결 및 논리의 네 가지 계산 연산자 유형이 있습니다.

산술 연산자

더하기, 빼기 또는 곱하기와 같은 기본 수학 연산을 수행하려면 숫자 결합; 숫자 결과를 생성하고 다음 산술 연산자를 사용합니다.

산술 연산자 의미 예시
+ (더하기 기호) 더하기 3+3
– (빼기 기호) 빼기 또는 기호 3–1–1
*(별표) 곱하기 3*3
/(슬래시) 나누기 3/3
^ (caret) 지수 16^4

참고 항목

더하기 기호는 이진 연산자 및 단항 연산자로 모두 작동할 수 있습니다. 이진 연산자는 연산자의 양쪽에 숫자가 필요하며 더하기 작업을 수행합니다. 이진 연산자의 양쪽에 있는 DAX 수식에서 값을 사용하는 경우 DAX는 값이 숫자가 아닌 경우 숫자 데이터 형식으로 캐스팅하려고 시도합니다. 반면 단항 연산자는 모든 형식의 인수에 적용할 수 있습니다. 더하기 기호는 형식이나 값에 영향을 주지 않으며 단순히 무시되는 반면, 빼기 연산자는 숫자 값에 적용되는 경우 음수 값을 만듭니다.

비교 연산자

다음 연산자를 사용하여 두 값을 비교할 수 있습니다. 이러한 연산자를 사용하여 두 값을 비교하면 결과는 TRUE 또는 FALSE의 논리적 값입니다.

비교 연산자 의미 예시
= 다음과 같음 [지역] = "USA"
== 엄격한 같음 [Region] == "USA"
> 보다 큼 [판매 날짜] > "2009년 1월"
< 보다 작음 [판매 날짜] < "2009년 1월 1일"
>= 크거나 같음 [금액] >= 20000
<= 보다 작거나 같음 [금액] <= 100
<> 같지 않음 [지역] <> "USA"

==를 제외한 모든 비교 연산자는 BLANK를 숫자 0, 빈 문자열 "", DATE(1899, 12, 30) 또는 FALSE로 처리합니다. 따라서 [Column] 값이 0이거나 BLANK이면 [Column] = 0이 true입니다. 반면 [Column] == 0은 [Column] 값이 0인 경우에만 true입니다.

텍스트 연결 연산자

앰퍼샌드(>)를 사용하여 두 개 이상의 텍스트 문자열을 조인하거나 연결하여 단일 텍스트를 생성합니다.

텍스트 연산자 의미 예시
& (앰퍼샌드) 연속 텍스트 값을 생성하기 위한 두 값 커넥트 또는 연결 [지역] &", " & [도시]

논리 연산자

논리 연산자(&> 및 (||)를 사용하여 식을 결합하여 단일 결과를 생성합니다.

텍스트 연산자 의미 예제
(이중 앰퍼샌드) 각각 부울 결과가 있는 두 식 사이에 AND 조건을 만듭니다. 두 식이 모두 TRUE를 반환할 경우 식 조합에서도 TRUE가 반환되고 그렇지 않으면 조합이 FALSE를 반환합니다. ([Region] = "France") &&([BikeBuyer] = "yes"))
|| (이중 파이프 기호) 두 논리 식 사이에 OR 조건을 만듭니다. 두 식이 모두 TRUE를 반환하면 결과는 TRUE입니다. 두 식이 모두 FALSE인 경우에만 결과가 FALSE입니다. (([Region] = "France") || ([BikeBuyer] = "yes"))
IN 테이블과 비교되는 각 행 사이에 논리적 OR 조건을 만듭니다. 참고: 테이블 생성자 구문은 중괄호를 사용합니다. 'Product'[Color] IN { "Red", "Blue", "Black" }

연산자 및 우선 순위

경우에 따라 계산이 수행되는 순서가 반환 값에 영향을 줄 수 있습니다. 따라서 순서를 결정하는 방법과 순서를 변경하여 원하는 결과를 얻는 방법을 이해하는 것이 중요합니다.

계산 순서

식은 연산자와 값을 특정 순서로 평가합니다. 모든 식은 항상 등호(=)로 시작합니다. 등호는 성공한 문자가 식을 구성한다는 것을 나타냅니다.

등호 다음에 계산할 요소(피연산자)는 계산 연산자로 구분됩니다. 식은 항상 왼쪽에서 오른쪽으로 읽지만 요소가 그룹화되는 순서는 괄호를 사용하여 어느 정도 제어할 수 있습니다.

연산자 우선 순위

여러 연산자를 단일 수식으로 결합하면 다음 표에 따라 연산이 정렬됩니다. 연산자의 우선 순위 값이 같으면 왼쪽에서 오른쪽으로 정렬됩니다. 예를 들어 식에 곱하기 연산자와 나누기 연산자가 모두 포함된 경우 식에 나타나는 순서대로 왼쪽에서 오른쪽으로 계산됩니다.

Operator 설명
^ 지수
로그인(-1에서와 같이)
* 및 / 곱하기 및 나누기
+ 및 – 더하기 및 빼기
& 두 개의 텍스트 문자열을 커넥트(연결)
=,==,<,>,<=,>=,<>,IN 비교
NOT NOT(단항 연산자)

괄호를 사용하여 계산 순서 제어

계산 순서를 변경하려면 먼저 계산해야 하는 수식의 해당 부분을 괄호로 묶어야 합니다. 예를 들어 다음 수식은 곱하기 전에 곱하기 전에 계산되므로 11을 생성합니다. 수식은 2를 3으로 곱한 다음 결과에 5를 추가합니다.

=5+2*3  

반면 괄호를 사용하여 구문을 변경하는 경우 순서가 변경되어 5와 2가 함께 추가되고 결과는 3을 곱하여 21을 생성합니다.

=(5+2)*3  

다음 예제에서는 수식의 첫 번째 부분 주위에 괄호를 적용하여 계산에서 식을 (3 + 0.25) 먼저 계산한 다음 결과를 식의 결과로 나눕니다()3 - 0.25).

=(3 + 0.25)/(3 - 0.25)  

다음 예제에서는 연산자의 우선 순위 규칙에 따라 지수 연산자가 먼저 적용된 다음 기호 연산자가 적용됩니다. 이 식의 결과는 -4입니다.

=-2^2  

기호 연산자가 숫자 값에 먼저 적용되도록 하려면 다음 예제와 같이 괄호를 사용하여 연산자를 제어할 수 있습니다. 이 식의 결과는 4입니다.

= (-2)^2  

호환성

DAX는 Microsoft Excel과 마찬가지로 다양한 데이터 형식을 쉽게 처리하고 비교합니다. 그러나 기본 계산 엔진은 SQL Server Analysis Services를 기반으로 하며 날짜 및 시간 유형에 대한 다양한 지원을 포함하여 관계형 데이터 저장소의 추가 고급 기능을 제공합니다. 따라서 경우에 따라 계산 결과 또는 함수 동작이 Excel에서와 동일하지 않을 수 있습니다. 또한 DAX는 Excel보다 더 많은 데이터 형식을 지원합니다. 이 섹션에서는 주요 차이점에 대해 설명합니다.

피연산자의 데이터 형식 강제 변환

일반적으로 연산자의 왼쪽과 오른쪽에 있는 두 피연산자는 동일한 데이터 형식이어야 합니다. 그러나 데이터 형식이 다른 경우 DAX는 이를 공통 데이터 형식으로 변환하여 경우에 따라 연산자를 적용합니다.

  1. 두 피연산자는 가능한 가장 큰 공통 데이터 형식으로 변환됩니다.
  2. 가능한 경우 연산자가 적용됩니다.

예를 들어 결합하려는 두 개의 숫자가 있다고 가정해 보겠습니다. =[Price] * .20와 같은 수식의 숫자 하나와 결과에는 소수 자릿수가 많이 포함될 수 있습니다. 다른 숫자는 문자열 값으로 제공된 정수입니다.

이 경우 DAX는 두 종류의 숫자를 모두 저장할 수 있는 가장 큰 숫자 형식을 사용하여 두 숫자를 숫자 형식으로 실제 숫자로 변환합니다. 그런 다음 DAX는 곱셈을 적용합니다.

데이터 형식 조합에 따라 비교 작업에 형식 강제 변환을 적용할 수 없습니다. DAX에서 지원하는 데이터 형식의 전체 목록은 Power BI Desktop의 테이블 형식 모델데이터 형식에서 지원되는 데이터 형식을 참조하세요.

정수, 실수, 통화, 날짜/시간 및 공백은 비교를 위해 숫자로 간주됩니다. 비교를 수행할 때 빈 값이 0으로 계산됩니다. 비교 작업에는 다음과 같은 데이터 형식 조합이 지원됩니다.

왼쪽 데이터 형식 오른쪽 데이터 형식
숫자 숫자
부울 부울
문자열 문자열

다른 혼합 데이터 형식 비교는 오류를 반환합니다. 예를 들어 =“1” > 0과 같은 수식은 DAX 비교 연산은 텍스트 형식 값과 정수 형식 값의 비교를 지원하지 않는다는 오류를 반환합니다.

DAX에 사용되는 데이터 형식 Excel에서 사용되는 데이터 형식
숫자(I8, R8) 숫자(R8)
문자열 문자열
부울 부울
DateTime 변형
통화 통화

우선 순위 차이

DAX 수식에서 작업의 우선 순위는 기본적으로 Microsoft Excel에서 사용하는 것과 동일하지만 백분율과 같은 일부 Excel 연산자는 지원되지 않습니다. 또한 범위는 지원되지 않습니다.

따라서 Excel에서 수식을 복사하여 붙여 넣을 때마다 수식의 일부 연산자 또는 요소가 유효하지 않을 수 있으므로 수식을 신중하게 검토해야 합니다. 작업이 수행되는 순서에 대해 의심의 여지가 있는 경우 괄호를 사용하여 작업 순서를 제어하고 결과에 대한 모호성을 제거하는 것이 좋습니다.

DAX 구문
DAX 매개 변수 이름 지정