Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aplica a:
Databricks SQL
Runtime 19 y superiores
Representa números de coma flotante en base 10 con 16 o 34 dígitos significativos y sin escala fija.
Importante
DECFLOAT está en beta. Un administrador de espacio de trabajo debe habilitar el tipo de dato DECFLOAT en Previews.
Syntax
DECFLOAT [ ( p ) ]
-
p: El número máximo de dígitos decimales significativos. Los valores soportados son 16 y 34. El valor predeterminado es 34.
DECFLOAT no acepta un argumento de escala. Cada valor tiene su propio exponente.
Limits
| Propiedad | DECFLOAT(16) |
DECFLOAT(34) |
|---|---|---|
| Dígitos significativos | Hasta 16 | Hasta 34 |
| Valor positivo no nulo más pequeño | 1E-398 |
1E-6176 |
| Mayor valor positivo finito | (10^16 - 1) × 10^369 |
(10^34 - 1) × 10^6111 |
Los mismos límites se aplican a los números negativos. Ambos tipos también soportan infinito y NaN.
Literals
Úsalo CAST con una cadena o valor numérico soportado. Las cadenas también pueden contener NaN, Inf, o Infinity.
Notes
DECFLOAT representa valores decimales como 0.1 exactamente. Los valores que superan la precisión pueden redondear sin error, incluyendo con TRY_CAST. Lanza texto decimal directamente. Convertir a través FLOAT o DOUBLE puede perder precisión.
La salida de cadenas preserva los ceros posteriores, por lo que valores iguales como 1.5 y 1.50 pueden producir cadenas diferentes (+15E-1 y +150E-2). Lanza desde DECFLOAT para DECIMAL redondear la mitad hacia arriba, independientemente de DECFLOAT_ROUNDING_MODE.
- La aritmética preserva la precisión cuando ambos operandos tienen el mismo tipo DECFLOAT. Precisiones u operaciones mixtas con otros tipos numéricos soportados utilizan
DECFLOAT(34). -
SUMyAVGregresarDECFLOAT(34).MINyMAXpreservar la precisión de entrada. -
SQRT,ABS, yROUNDaceptar DECFLOAT directamente.
DECFLOAT_ROUNDING_MODE controla el redondeo para los lanzamientos a DECFLOAT, +, -, *, /, SQRT, SUM, y AVG. El valor predeterminado es ROUND_HALF_EVEN. Otros modos soportados son ROUND_HALF_UP, ROUND_CEILING, ROUND_FLOOR, y ROUND_DOWN.
DIV elimina la parte fraccionaria del resultado, independientemente de DECFLOAT_ROUNDING_MODE.
ROUND, BROUND, y TRUNCATE utilizan sus propias reglas de redondeo.
> SET DECFLOAT_ROUNDING_MODE = ROUND_FLOOR;
> SELECT CURRENT_DECFLOAT_ROUNDING_MODE();
ROUND_FLOOR
Con el modo de redondeo por defecto, el desbordamiento produce infinito y la división por cero produce infinito o NaN. El modo ANSI no cambia estos resultados. Las funciones aritméticas soportadas TRY_* preservan el infinito y NaN en lugar de devolver NULL. Los NaN se comparan igual y ordenan después del infinito positivo. Positivo y cero negativo comparan iguales. Usado ISNAN para detectar NaN.
Examples
> 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)
Limitaciones
- Las operaciones de resto y de bits no están soportadas.
- Las funciones que requieren
DOUBLEentradas no aceptan DECFLOAT directamente. Convierte el valor aDOUBLEprimero (esto puede resultar en pérdida de precisión). - DECFLOAT no es compatible con vectores de borración. Al crear una tabla Delta con columnas DECFLOAT, se establece
TBLPROPERTIES ('delta.enableDeletionVectors' = 'false'). Para tablas existentes, elimina la característica de tabla de vectores de eliminación antes de añadir columnas DECFLOAT. - Las tablas Delta que contienen DECFLOAT no pueden tener activadas las lecturas de Iceberg .
- No se permite escribir valores DECFLOAT directamente en archivos Parquet.
- Las columnas DECFLOAT no tienen estadísticas mínimas/máximas para saltar datos. No pueden ser columnas de partición, claves de agrupamiento, columnas de orden Z ni columnas índice de filtro de Bloom.
- Cambiar una columna entre
DECFLOAT(16)yDECFLOAT(34)conALTER COLUMNno tiene soporte.