적용 대상:
데이터브릭
완료 데이터브릭스 런타임 19 이상
16자리 또는 34자리의 유효 숫자로 10진법 부동소수점 숫자를 나타내며, 고정된 스케일이 없습니다.
Syntax
DECFLOAT [ ( p ) ]
-
p: 유효한 소수점 숫자의 최대 개수. 지원되는 수치는 16과 34입니다. 기본값은 34입니다.
DECFLOAT 척도 논증을 받아들이지 않는다. 각 가치는 고유한 지수를 가집니다.
Limits
| Property | DECFLOAT(16) |
DECFLOAT(34) |
|---|---|---|
| 유효 숫자 | 최대 16세까지 | 최대 34명까지 |
| 가장 작은 양의 0이 아닌 값 | 1E-398 |
1E-6176 |
| 가장 큰 양의 유한 값 | (10^16 - 1) × 10^369 |
(10^34 - 1) × 10^6111 |
음수에도 같은 제한이 적용됩니다. 두 유형 모두 무한대와 NaN도 지원합니다.
Literals
문자열이나 지원되는 숫자 값과 함께 사용 CAST 하세요. 문자열은 , Inf, 또는 Infinity를 포함할 NaN수도 있습니다.
Notes
DECFLOAT 정확히 다음과 0.1 같은 십진수 값들을 나타냅니다. 정밀도를 초과하는 값은 오차 없이 반올림할 수 있으며, 여기에는 도 TRY_CAST포함됩니다. 소수점 문자를 직접 캐스팅하세요. 변환 FLOAT 과정에서 DOUBLE 정밀도가 떨어질 수 있습니다.
문자열 출력은 뒤에 있는 0을 보존하므로, 와 1.50 같은 1.5 값은 서로 다른 문자열(+15E-1 및 +150E-2)을 생성할 수 있습니다. DECFLOAT에서 반올림으로 DECIMAL 캐스팅을 반올림하는 것은 와 무관합니다 DECFLOAT_ROUNDING_MODE.
- 두 피연산자가 동일한 DECFLOAT 타입을 가질 때 산술은 정밀도를 유지합니다. 정밀도가 혼합되거나 다른 지원되는 숫자 유형
DECFLOAT(34)과 연산할 때 . -
SUM그리고AVG다시 돌아옵DECFLOAT(34)니다.MINMAX입력 정밀도를 유지할 수 있습니다. -
SQRTABS, , 그리고ROUNDDECFLOAT를 직접 수락합니다.
DECFLOAT_ROUNDING_MODE캐스팅의 반올림을 DECFLOAT, +, SQRTAVG-*/SUM로 제어합니다. 기본값은 ROUND_HALF_EVEN입니다. 지원되는 다른 모드는 , ROUND_CEILING, ROUND_FLOOR, 입니다ROUND_DOWN.ROUND_HALF_UP
DIV 는 결과의 분수 부분을 제거하는데, 이는 에 DECFLOAT_ROUNDING_MODE상관없이 입니다.
ROUND
BROUND, , 그리고 TRUNCATE 각자의 반올림 규칙을 사용한다.
> SET DECFLOAT_ROUNDING_MODE = ROUND_FLOOR;
> SELECT CURRENT_DECFLOAT_ROUNDING_MODE();
ROUND_FLOOR
기본 반올림 모드에서는 오버플로우가 무한대를 만들고, 0으로 나누면 무한대, 즉 NaN이 됩니다.
ANSI 모드 는 이러한 결과를 변경하지 않습니다. 지원되는 산술 함수는 TRY_* 무한대와 NaN을 보존하며, 반환 NULL하지 않습니다. NaN은 비교하여 양의 무한대로 정렬합니다. 양의 영도와 음의 영도는 동등하게 비교됩니다. NaN을 감지하는 데 사용 ISNAN 하세요.
예제
> SELECT CAST('1.5' AS DECFLOAT(34)) + CAST('2.5' AS DECFLOAT(34)) AS total;
+40E-1
> SELECT CAST(CAST('1.23E+100' AS DECFLOAT(34)) AS STRING);
+123E+98
> SELECT typeof(CAST('1' AS DECFLOAT(16)) + 1);
decfloat(34)
Limitations
- 나머지 연산과 비트 연산은 지원되지 않습니다.
- 입력이 필요한
DOUBLE함수는 DECFLOAT를 직접 받아들이지 않습니다. 값을DOUBLE1로 변환하세요(이 경우 정밀도 손실이 발생할 수 있습니다). - DECFLOAT는 삭제 벡터와 호환되지 않습니다. DECFLOAT 열이 있는 Delta 테이블을 생성할 때는 를 설정하세요
TBLPROPERTIES ('delta.enableDeletionVectors' = 'false'). 기존 테이블의 경우, DECFLOAT 컬럼을 추가하기 전에 삭제-벡터 테이블 기능을 제거 하세요. - DECFLOAT가 포함된 델타 테이블은 Iceberg 읽기를 활성화할 수 없습니다.
- DECFLOAT 값을 Parquet 파일에 직접 쓰는 것은 지원되지 않습니다.
- DECFLOAT 컬럼에는 데이터 건너뛰기 위한 최소/최대 통계가 없습니다. 분할 열, 클러스터링 키, Z-순서 열, 또는 블룸 필터 인덱스 열이 될 수 없습니다.
- 와 와 로
ALTER COLUMN간DECFLOAT(16)DECFLOAT(34)열을 바꾸는 것은 지원되지 않습니다.