DECFLOAT 형식

적용 대상:체크 체크 완료 예 데이터브릭스 SQL 체크 완료 데이터브릭스 런타임 19 이상

16자리 또는 34자리의 유효 숫자로 10진법 부동소수점 숫자를 나타내며, 고정된 스케일이 없습니다.

Important

DECFLOAT 베타에 있습니다. 작업 공간 관리자는 Previews에서 DECFLOAT 데이터 타입을 활성화해야 합니다.

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)니다. MIN MAX 입력 정밀도를 유지할 수 있습니다.
  • SQRT ABS, , 그리고 ROUND DECFLOAT를 직접 수락합니다.

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를 직접 받아들이지 않습니다. 값을 DOUBLE 1로 변환하세요(이 경우 정밀도 손실이 발생할 수 있습니다).
  • DECFLOAT는 삭제 벡터와 호환되지 않습니다. DECFLOAT 열이 있는 Delta 테이블을 생성할 때는 를 설정하세요 TBLPROPERTIES ('delta.enableDeletionVectors' = 'false'). 기존 테이블의 경우, DECFLOAT 컬럼을 추가하기 전에 삭제-벡터 테이블 기능을 제거 하세요.
  • DECFLOAT가 포함된 델타 테이블은 Iceberg 읽기를 활성화할 수 없습니다.
  • DECFLOAT 값을 Parquet 파일에 직접 쓰는 것은 지원되지 않습니다.
  • DECFLOAT 컬럼에는 데이터 건너뛰기 위한 최소/최대 통계가 없습니다. 분할 열, 클러스터링 키, Z-순서 열, 또는 블룸 필터 인덱스 열이 될 수 없습니다.
  • 와 와 로 ALTER COLUMN 간 DECFLOAT(16)DECFLOAT(34) 열을 바꾸는 것은 지원되지 않습니다.