적용 대상: SQL Server Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
이 문서에서는 테이블 형식 모델에서 사용할 수 있는 데이터 형식에 대해 설명하고 DAX(데이터 분석 식) 수식에서 데이터를 계산하거나 사용할 때 데이터 형식의 암시적 변환에 대해 설명합니다.
테이블 형식 모델에 사용되는 데이터 형식
데이터를 가져오거나 수식에서 값을 사용하는 경우 원래 데이터 원본에 다른 데이터 형식이 포함되어 있더라도 데이터는 다음 데이터 형식 중 하나로 변환됩니다. 수식에서 생성되는 값도 이러한 데이터 형식을 사용합니다.
일반적으로 이러한 데이터 형식은 계산 열에서 정확한 계산을 사용하도록 구현되며 일관성을 위해 모델의 나머지 데이터에 동일한 제한이 적용됩니다.
숫자, 통화, 날짜 및 시간에 사용되는 형식은 모델 데이터 작업에 사용되는 클라이언트에 지정된 로캘 형식을 따라야 합니다. 모델의 서식 옵션을 사용하여 값이 표시되는 방식을 제어할 수 있습니다.
모델의 데이터 형식 | DAX의 데이터 형식 | 설명 |
---|---|---|
정수 | 64비트(8바이트) 정수 값* 메모: DAX 수식은 설명에 나열된 최소값을 보유하기에는 너무 작은 데이터 형식을 지원하지 않습니다. |
소수 자릿수가 없는 숫자입니다. 정수는 양수 또는 음수일 수 있습니다. 하지만 -9,223,372,036,854,775,807(-2^63+1)과 9,223,372,036,854,775,806(2^63-2) 사이의 정수여야 합니다. |
10진수 | 64비트(8바이트) 실수 숫자* 메모: DAX 수식은 설명에 나열된 최소값을 보유하기에는 너무 작은 데이터 형식을 지원하지 않습니다. |
실수는 소수점을 가질 수 있는 숫자입니다. 실수는 광범위한 값을 포함합니다. -1.79E +308에서 -2.23E -308까지의 음수 값 제로 2.23E -308부터 1.79E+308까지의 양수 값 그러나 유효 자릿수는 15진수로 제한됩니다. |
불리언 (Boolean) | 불리언 (Boolean) | True 또는 False 중 하나의 값입니다. |
문자 메시지 | 문자열 | 유니코드 문자 데이터 문자열입니다. 텍스트 형식으로 표시되는 문자열, 숫자 또는 날짜일 수 있습니다. 문자열의 유효 최대 크기는 32767 바이트 제한이 적용됩니다. |
바이너리 | 문자열 | 구조화되지 않은 이진 데이터(예: 이미지) 이 데이터 형식의 열에는 DAX의 기능이 제한됩니다. 이진 데이터 값의 유효 최대 크기는 67108864 바이트 제한이 적용됩니다. |
날짜 | 날짜/시간 | 허용되는 날짜-시간 표현 형식에 따른 날짜와 시간입니다. 유효한 날짜는 1900년 3월 1일 이후의 모든 날짜입니다. |
통화 | 통화 | 통화 데이터 형식은 -922,337,203,685,477.5807에서 922,337,203,685,477.5806 사이의 값을 고정 정밀도의 소수 자릿수로 허용합니다. |
변종 | 변종 | 다른 데이터 형식을 반환할 수 있는 DAX 측정값과 같은 식에 사용됩니다. 예를 들어 정수 또는 문자열을 반환하는 DAX 측정값은 형식 변형입니다. |
해당 없음(N/A) | 빈 | 공백은 SQL null을 나타내고 대체하는 DAX의 데이터 형식입니다. BLANK 함수를 사용하여 공백을 만들고 논리 함수 ISBLANK를 사용하여 공백을 테스트할 수 있습니다. |
* 숫자 값이 큰 데이터를 가져오려고 하면 다음 오류로 인해 가져오기가 실패할 수 있습니다.
메모리 내 데이터베이스 오류: '테이블 이름' 테이블의 '<>열 이름<>' 열에는 지원되지 않는 '1.7976931348623157e+308' 값이 포함되어 있습니다. 작업이 취소되었습니다.
이 오류는 모델 디자이너가 해당 값을 사용하여 null을 나타내기 때문에 발생합니다. 다음 목록의 값은 앞에서 언급한 null 값과 동의어입니다.
가치 |
---|
9223372036854775807 |
-9223372036854775808 |
1.7976931348623158e+308 |
-1.7976931348623158e+308 |
데이터에서 값을 제거하고 다시 가져오기를 시도하세요.
비고
문자열 길이가 131,072자를 초과하는 varchar(max) 열에서는 가져올 수 없습니다.
테이블 데이터 형식
또한 DAX는 테이블 데이터 형식을 사용합니다. 이 데이터 형식은 집계 및 시간 인텔리전스 계산과 같은 많은 함수에서 DAX에서 사용됩니다. 일부 함수에는 테이블에 대한 참조가 필요합니다. 다른 함수는 다른 함수에 대한 입력으로 사용할 수 있는 테이블을 반환합니다. 테이블을 입력으로 필요로 하는 일부 함수에서는 테이블로 계산되는 식을 지정할 수 있습니다. 일부 함수의 경우 기본 테이블에 대한 참조가 필요합니다. 특정 함수의 요구 사항에 대한 자세한 내용은 DAX 함수 참조를 참조하세요.
DAX 수식의 암시적 및 명시적 데이터 형식 변환
각 DAX 함수에는 입력 및 출력으로 사용되는 데이터 형식에 대한 특정 요구 사항이 있습니다. 예를 들어 일부 함수에는 일부 인수 및 다른 인수의 날짜에 정수가 필요합니다. 다른 함수에는 텍스트 또는 테이블이 필요합니다.
인수로 지정한 열의 데이터가 함수에 필요한 데이터 형식과 호환되지 않는 경우 대부분의 경우 DAX는 오류를 반환합니다. 그러나 가능한 경우 DAX는 데이터를 필요한 데이터 형식으로 암시적으로 변환하려고 시도합니다. 다음은 그 예입니다.
숫자(예: "123")를 문자열로 입력할 수 있습니다. DAX는 문자열을 구문 분석하고 숫자 데이터 형식으로 지정하려고 시도합니다.
TRUE는 암시적으로 숫자 1로 변환되고 1+1 연산이 수행되므로 TRUE + 1을 추가하고 결과 2를 가져올 수 있습니다.
두 열에 값을 추가하면 한 값이 텍스트("12")로 표시되고 다른 값은 숫자(12)로 표현되는 경우 DAX는 문자열을 숫자로 암시적으로 변환한 다음 숫자 결과에 대한 추가를 수행합니다. 다음 식은 44를 반환합니다. = "22" + 22
두 숫자를 연결하려고 하면 문자열로 표시되고 연결됩니다. 다음 식은 "1234"를 반환합니다. = 12 및 34
다음 표에는 수식에서 수행되는 암시적 데이터 형식 변환이 요약되어 있습니다. 일반적으로 의미 체계 모델 디자이너는 Microsoft Excel처럼 동작하며 지정된 작업에 필요할 때마다 암시적 변환을 수행합니다.
암시적 데이터 변환 표
수행되는 변환 유형은 요청된 작업을 수행하기 전에 필요한 값을 캐스팅하는 연산자에 의해 결정됩니다. 이러한 테이블은 연산자를 나열하고, 교차하는 행의 데이터 형식과 쌍을 이루는 경우 열의 각 데이터 형식에서 수행되는 변환을 나타냅니다.
비고
텍스트 데이터 형식은 이러한 테이블에 포함되지 않습니다. 숫자가 텍스트 형식으로 표현되는 경우 모델 디자이너는 숫자 형식을 확인하고 숫자로 나타내려고 시도합니다.
더하기(+)
정수 | 통화 | 진짜 | 날짜/시간 | |
---|---|---|---|---|
정수 | 정수 | 통화 | 진짜 | 날짜/시간 |
통화 | 통화 | 통화 | 진짜 | 날짜/시간 |
레알 | 진짜 | 진짜 | 진짜 | 날짜/시간 |
날짜/시간 | 날짜/시간 | 날짜/시간 | 날짜/시간 | 날짜/시간 |
예를 들어 실수가 통화 데이터와 함께 덧셈 연산에 사용될 때, 두 값은 모두 REAL로 변환되며, 결과는 REAL로 반환됩니다.
빼기(-)
다음 표에서 행 머리글은 minuend(왼쪽)이고 열 머리글은 하위 컨트롤(오른쪽)입니다.
정수 | 통화 | 진짜 | 날짜/시간 | |
---|---|---|---|---|
정수 | 정수 | 통화 | 진짜 | 진짜 |
통화 | 통화 | 통화 | 진짜 | 진짜 |
레알 | 진짜 | 진짜 | 진짜 | 진짜 |
날짜/시간 | 날짜/시간 | 날짜/시간 | 날짜/시간 | 날짜/시간 |
예를 들어 다른 데이터 형식의 빼기 작업에 날짜가 사용되는 경우 두 값이 모두 날짜로 변환되고 반환 값도 날짜입니다.
비고
테이블 형식 모델은 단항 연산자(음수)도 지원하지만 이 연산자는 피연산자의 데이터 형식을 변경하지 않습니다.
곱하기(*)
정수 | 통화 | 진짜 | 날짜/시간 | |
---|---|---|---|---|
정수 | 정수 | 통화 | 진짜 | 정수 |
통화 | 통화 | 진짜 | 통화 | 통화 |
레알 | 진짜 | 통화 | 진짜 | 진짜 |
예를 들어 정수를 곱하기 연산에서 실수와 결합하면 두 숫자가 모두 실수로 변환되고 반환 값도 REAL입니다.
나누기(/)
다음 표에서 행 머리글은 숫자이고 열 머리글은 분모입니다. (행/열)
정수 | 통화 | 진짜 | 날짜/시간 | |
---|---|---|---|---|
정수 | 진짜 | 통화 | 진짜 | 진짜 |
통화 | 통화 | 진짜 | 통화 | 진짜 |
레알 | 진짜 | 진짜 | 진짜 | 진짜 |
날짜/시간 | 진짜 | 진짜 | 진짜 | 진짜 |
예를 들어 정수를 나누기 연산의 통화 값과 결합하면 두 값이 모두 실수로 변환되고 결과도 실수입니다.
비교 연산자
비교 작업을 위한 제한된 혼합 데이터 형식 조합 집합만 지원됩니다. 자세한 내용은 DAX 연산자 참조를 참조하세요.
공백, 빈 문자열 및 0 값 처리
다음 표에서는 공백이 처리되는 방식으로 DAX와 Microsoft Excel의 차이점을 요약합니다.
표현 | DAX (독일 주식 지수) | 엑셀 |
---|---|---|
공백 + 공백 | 공백 | 0(0) |
BLANK +5 | 5 | 5 |
BLANK * 5 | 공백 | 0(0) |
5/공백 | 무한대 | 오류 |
0/BLANK | NaN | 오류 |
빈 상태/빈 상태 | 공백 | 오류 |
FALSE 또는 BLANK | 거짓 | 거짓 |
거짓 및 빈칸 | 거짓 | 거짓 |
참 또는 빈칸 | 진실 | 진실 |
참 및 빈칸 | 거짓 | 진실 |
빈칸 또는 빈칸 | 공백 | 오류 |
빈칸 및 빈칸 | 공백 | 오류 |
특정 함수 또는 연산자가 공백을 처리하는 방법에 대한 자세한 내용은 DAX 함수 참조 섹션의 각 DAX 함수에 대한 개별 항목을 참조하세요.