데이터 모델에서 각 열에는 열이 보유할 수 있는 데이터 형식(정수, 10진수, 텍스트, 통화 데이터, 날짜 및 시간 등)을 지정하는 관련 데이터 형식이 있습니다. 또한 데이터 형식에 따라 열에 수행할 수 있는 작업 종류와 열에 값을 저장하는 데 필요한 메모리의 양이 결정됩니다.
파워 피벗 추가 기능을 사용하는 경우 열의 데이터 형식을 변경할 수 있습니다. 날짜 열을 문자열로 가져왔지만 다른 항목이 필요한 경우 이 작업을 수행해야 할 수 있습니다. 자세한 내용은 Power Pivot에서 열의 데이터 형식 설정을 참조하세요.
이 문서의 내용
데이터 형식 요약
다음 표에는 데이터 모델에서 지원되는 데이터 형식이 나열됩니다. 데이터를 가져오거나 수식의 값을 사용하면 원래 데이터 원본에 다른 데이터 형식이 포함되어 있더라도 데이터가 이러한 데이터 형식 중 하나로 변환됩니다. 수식의 결과가 생성되는 값에도 이러한 데이터 형식이 사용됩니다.
| Excel의 데이터 형식 | DAX의 데이터 형식 | 설명 |
|---|---|---|
| 정수 | 64비트(8바이트) 정수 값 1, 2 | 소수 자릿수가 없는 숫자입니다. 정수는 양수 또는 음수일 수 있지만 -9,223,372,036,854,775,808(-2^63)에서 9,223,372,036,854,775,807(2^63-1) 사이의 정수여야 합니다. |
| 10진수 | 64비트(8바이트) 실수 1, 2 | 실수는 소수 자릿수를 가질 수 있는 숫자입니다. 실수는 광범위한 값을 포괄합니다. -1.79E, +308에서 -2.23E, -308까지의 음수 값 영 2.23E -308에서 1.79E + 308까지의 양수 값 그러나 유효 자릿수는 15자리 소수로 제한됩니다. |
| TRUE/FALSE | 부울 | True 또는 False 값입니다. |
| 텍스트 | String | 유니코드 문자 데이터 문자열입니다. 문자열, 숫자 또는 날짜가 텍스트 형식으로 표현될 수 있습니다. 최대 문자열 길이는 268,435,456 유니코드 문자(256메가문자) 또는 536,870,912바이트입니다. |
| 날짜 | 날짜/시간 | 허용되는 날짜/시간 표현의 날짜 및 시간입니다. 유효한 날짜는 1900년 1월 1일 이후의 모든 날짜입니다. |
| 통화 | 통화 | 통화 데이터 형식은 고정 정밀도의 소수점 이하 4자리로 -922,337,203,685,477.5808에서 922,337,203,685,477.5807 사이의 값을 허용합니다. |
| 해당 없음 | 빈 항목 | 공백은 SQL Null을 나타내고 바꾸는 DAX의 데이터 형식입니다. BLANK 함수를 사용하여 공백을 만들고 논리 함수 ISBLANK를 사용하여 공백을 테스트할 수 있습니다. |
1 DAX 수식은 표에 나열된 것보다 작은 데이터 형식을 지원하지 않습니다.
2 숫자 값이 매우 큰 데이터를 가져오려고 하면 다음 오류와 함께 가져오기가 실패할 수 있습니다.
메모리 내 데이터베이스 오류: '<테이블 이름>' 테이블의 '<열 이름>' 열에 지원되지 않는 값 '1.7976931348623157e+308'이 포함되어 있습니다. 작업이 취소되었습니다.
이 오류는 파워 피벗이 해당 값을 사용하여 null을 나타내기 때문에 발생합니다. 다음 목록의 값은 null 값의 동의어입니다.
| 값 |
|---|
| 9223372036854775807 |
| -9223372036854775808 |
| 1.7976931348623158e+308 |
| 2.2250738585072014e-308 |
데이터에서 값을 제거하고 가져오기를 다시 시도합니다.
테이블 데이터 형식
DAX는 집계 및 시간 인텔리전스 계산과 같은 많은 함수에서 테이블 데이터 형식을 사용합니다. 일부 함수는 테이블에 대한 참조가 필요합니다. 다른 함수는 테이블을 반환하며, 이 테이블은 다른 함수에 대한 입력으로 사용할 수 있습니다. 테이블을 입력으로 필요로 하는 일부 함수에서는 테이블로 계산되는 식을 지정할 수 있습니다. 일부 함수의 경우 기본 테이블에 대한 참조가 필요합니다. 특정 함수의 요구 사항에 대한 자세한 내용은 DAX 함수 참조를 참조하세요.
DAX 수식의 암시적 및 명시적 데이터 형식 변환
각 DAX 함수에는 입력 및 출력으로 사용되는 데이터 형식에 대한 특정 요구 사항이 있습니다. 예를 들어 일부 함수는 일부 인수에는 정수, 다른 인수에는 날짜가 필요합니다. 다른 함수에는 텍스트나 표가 필요합니다.
인수로 지정한 열의 데이터가 함수에서 요구하는 데이터 형식과 호환되지 않는 경우 DAX는 대부분 오류를 반환합니다. 그러나 가능한 경우 DAX는 암시적으로 데이터를 필요한 데이터 형식으로 변환하려고 시도합니다. 예를 들면 다음과 같습니다.
- 날짜를 문자열로 입력할 수 있으며 DAX는 문자열을 구문 분석하고 Windows 날짜 및 시간 형식 중 하나로 캐스팅하려고 시도합니다.
- TRUE는 암시적으로 숫자 1로 변환되고 1+1 연산이 수행되기 때문에 TRUE + 1을 더하여 결과 2를 얻을 수 있습니다.
- 두 열에 값을 추가할 때 한 값은 텍스트("12")로 표시되고 다른 값은 숫자(12)로 표시되는 경우 DAX는 문자열을 암시적으로 숫자로 변환한 다음 숫자 결과에 대해 더하기를 수행합니다. 다음 식은 44를 반환합니다. = "22" + 22
- 두 숫자를 연결하려고 하면 Excel에서 문자열로 표시한 다음 연결합니다. 다음 식은 "1234"를 반환합니다. = 12 & 34
다음 표에는 수식에서 수행되는 암시적 데이터 형식 변환이 요약되어 있습니다. Excel은 지정된 작업에서 요구하는 대로 가능하면 암시적 변환을 수행합니다.
암시적 데이터 변환 표
수행되는 변환 유형은 운영자에 의해 결정되며, 운영자는 요청된 작업을 수행하기 전에 필요한 값을 캐스팅합니다. 이 표에서는 연산자를 나열하고 교차하는 행의 데이터 형식과 쌍을 이룰 때 열의 각 데이터 형식에 대해 수행되는 변환을 나타냅니다.
참고
텍스트 데이터 형식은 이 테이블에 포함되지 않습니다. 숫자가 텍스트 형식으로 표시되는 경우 경우에 따라 파워 피벗은 숫자 유형을 결정하여 숫자로 나타내려고 시도합니다.
더하기(+)
| 연산자(+) | INTEGER | CURRENCY | REAL | 날짜/시간 |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | 날짜/시간 |
| CURRENCY | CURRENCY | CURRENCY | REAL | 날짜/시간 |
| REAL | REAL | REAL | REAL | 날짜/시간 |
| 날짜/시간 | 날짜/시간 | 날짜/시간 | 날짜/시간 | 날짜/시간 |
예를 들어 실수를 덧셈 연산에 통화 데이터와 함께 사용하면 두 값 모두 REAL로 변환되고 결과는 REAL로 반환됩니다.
빼기(-)
다음 표에서 행 머리글은 빼기(왼쪽)이고 열 머리글은 빼기(오른쪽)입니다.
| 연산자(-) | INTEGER | CURRENCY | REAL | 날짜/시간 |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | CURRENCY | REAL | REAL |
| REAL | REAL | REAL | REAL | REAL |
| 날짜/시간 | 날짜/시간 | 날짜/시간 | 날짜/시간 | 날짜/시간 |
예를 들어 다른 데이터 형식과 함께 빼기 연산에 날짜를 사용하는 경우 두 값 모두 날짜로 변환되고 반환 값도 날짜입니다.
참고
데이터 모델은 단항 연산자 -(음수)도 지원하지만 이 연산자는 피연산자의 데이터 형식을 변경하지 않습니다.
곱하기(*)
| 연산자(*) | INTEGER | CURRENCY | REAL | 날짜/시간 |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | INTEGER |
| CURRENCY | CURRENCY | REAL | CURRENCY | CURRENCY |
| REAL | REAL | CURRENCY | REAL | REAL |
예를 들어 곱하기 연산에서 정수를 실수와 결합하면 두 숫자가 모두 실수로 변환되고 반환 값도 실수가 됩니다.
나누기(/)
다음 표에서는 행 머리글이 분자이고 열 머리글이 분모입니다.
| 연산자(/) (행/열) |
INTEGER | CURRENCY | REAL | 날짜/시간 |
|---|---|---|---|---|
| INTEGER | REAL | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | REAL | CURRENCY | REAL |
| REAL | REAL | REAL | REAL | REAL |
| 날짜/시간 | REAL | REAL | REAL | REAL |
예를 들어 나눗셈 연산에서 정수를 통화 값과 결합하면 두 값 모두 실수로 변환되고 결과도 실수가 됩니다.
비교 연산자
비교 식에서 부울 값은 문자열 값보다 크고 문자열 값은 숫자 또는 날짜/시간 값보다 큰 것으로 간주됩니다. 숫자와 날짜/시간 값은 동일한 순위로 간주됩니다. 부울 또는 문자열 값에 대해 암시적 변환이 수행되지 않습니다. BLANK 또는 빈 값은 비교된 다른 값의 데이터 형식에 따라 0/""/false로 변환됩니다.
다음 DAX 식은 이 동작을 보여 줍니다.
=IF(FALSE()>"true","Expression is true", "Expression is false"), "Expression is true"를 반환합니다.
=IF("12">12,"Expression is true", "Expression is false")은 "Expression is true"를 반환합니다.
=IF("12"=12,"Expression is true", "Expression is false"), "Expression is false"를 반환합니다.
변환은 다음 표에 설명된 대로 숫자 또는 날짜/시간 유형에 대해 암시적으로 수행됩니다.
| 비교 연산자 | INTEGER | CURRENCY | REAL | 날짜/시간 |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | CURRENCY | REAL | REAL |
| REAL | REAL | REAL | REAL | REAL |
| 날짜/시간 | REAL | REAL | REAL | 날짜/시간 |
공백, 빈 문자열 및 0 값 처리
DAX에서 null, 빈 값, 빈 셀 또는 누락된 값은 모두 동일한 새 값 형식인 BLANK로 표시됩니다. BLANK 함수를 사용하여 공백을 생성하거나 ISBLANK 함수를 사용하여 공백을 테스트할 수도 있습니다.
추가 또는 연결과 같은 작업에서 공백을 처리하는 방법은 개별 함수에 따라 다릅니다. 다음 표에는 DAX 수식과 Microsoft Excel 수식이 공백을 처리하는 방식에 대한 차이점이 요약되어 있습니다.
| Expression | DAX | Excel |
|---|---|---|
| 공백 + 공백 | 공백 | 0(영) |
| 공백 +5 | 5 | 5 |
| 공백 * 5 | 공백 | 0(영) |
| 5/공백 | 무한 | 오류 |
| 0/공백 | NaN | 오류 |
| 공백/비어 있음 | 공백 | 오류 |
| FALSE 또는 공백 | FALSE | FALSE |
| FALSE 및 공백 | FALSE | FALSE |
| TRUE 또는 공백 | TRUE | TRUE |
| TRUE 및 공백 | FALSE | TRUE |
| 비어 있거나 비어 있음 | 공백 | 오류 |
| 빈칸 및 빈칸 | 공백 | 오류 |
특정 함수 또는 연산자가 공백을 처리하는 방법에 대한 자세한 내용은 DAX 함수 참조 섹션에서 각 DAX 함수에 대한 개별 topics 참조하세요.