Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Tipo de
Aplica-se a:
Databricks SQL
Runtime 19 e acima
Representa números de ponto flutuante base 10 com 16 ou 34 dígitos significativos e sem escala fixa.
Importante
DECFLOAT está em Beta. Um administrador de espaço de trabalho deve habilitar o tipo de dado DECFLOAT em Prévias.
Sintaxe
DECFLOAT [ ( p ) ]
-
p: O número máximo de dígitos decimais significativos. Os valores suportados são 16 e 34. O padrão é 34.
DECFLOAT não aceita um argumento de escala. Cada valor tem seu próprio expoente.
Limits
| Property | DECFLOAT(16) |
DECFLOAT(34) |
|---|---|---|
| Dígitos significativos | Até 16 | Até 34 |
| Menor valor positivo não nulo | 1E-398 |
1E-6176 |
| Maior valor positivo finito | (10^16 - 1) × 10^369 |
(10^34 - 1) × 10^6111 |
Os mesmos limites se aplicam aos números negativos. Ambos os tipos também suportam infinito e NaN.
Literals
Use CAST com uma string ou valor numérico suportado. As cadeias também podem conter NaN, Inf, ou Infinity.
Notes
DECFLOAT representa valores decimais como 0.1 exatamente. Valores que excedem a precisão podem arredondar sem erro, incluindo com TRY_CAST. Lançar texto decimal diretamente. Converter através FLOAT ou DOUBLE pode perder precisão.
A saída de string preserva zeros posteriores, então valores iguais como 1.5 e 1.50 podem produzir cadeias diferentes (+15E-1 e +150E-2). Lança de DECFLOAT para DECIMAL arredondar metade para cima, independentemente de DECFLOAT_ROUNDING_MODE.
- A aritmética preserva a precisão quando ambos os operandos têm o mesmo tipo DECFLOAT. Precisões ou operações mistas com outros tipos numéricos suportados utilizam
DECFLOAT(34). -
SUMeAVGretornaDECFLOAT(34).MINeMAXpreservar a precisão da entrada. -
SQRT,ABS, eROUNDaceitar diretamente o DECFLOAT.
DECFLOAT_ROUNDING_MODE arredondamento de controles para lançamentos para DECFLOAT, +, -, *, /, SQRT, SUM, , e AVG. O padrão é ROUND_HALF_EVEN. Outros modos suportados são ROUND_HALF_UP, ROUND_CEILING, ROUND_FLOOR, e ROUND_DOWN.
DIV remove a parte fracionária do resultado, independentemente de DECFLOAT_ROUNDING_MODE.
ROUND, BROUND, e TRUNCATE usam suas próprias regras de arredondamento.
> SET DECFLOAT_ROUNDING_MODE = ROUND_FLOOR;
> SELECT CURRENT_DECFLOAT_ROUNDING_MODE();
ROUND_FLOOR
Com o modo de arredondamento padrão, o excesso de energia produz infinito e a divisão por zero produz infinito ou NaN.
O modo ANSI não altera esses resultados. Funções aritméticas suportadas TRY_* preservam o infinito e o NaN em vez de retornar NULL. As NaNs comparam igual e ordenam após o infinito positivo. Positivo e zero negativo se comparam iguais. 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)
Limitações
- Operações de remanescente e bit a bit não são suportadas.
- Funções que requerem
DOUBLEentradas não aceitam DECFLOAT diretamente. Converta o valor paraDOUBLEo primeiro (isso pode resultar em perda de precisão). - O DECFLOAT não é compatível com vetores de deleção. Ao criar uma tabela Delta com colunas DECFLOAT, defina
TBLPROPERTIES ('delta.enableDeletionVectors' = 'false'). Para tabelas existentes, elimine a característica de tabela vetorial de exclusão antes de adicionar colunas DECFLOAT. - As tabelas Delta contendo DECFLOAT não podem ter leituras Iceberg ativadas.
- Escrever valores DECFLOAT diretamente em arquivos Parquet não é suportado.
- Colunas DECFLOAT não possuem estatísticas min/max para pular dados. Elas não podem ser colunas de partição, chaves de clustering, colunas de ordem Z ou colunas de índice de filtro de Bloom.
- Mudar uma coluna entre
DECFLOAT(16)eDECFLOAT(34)comALTER COLUMNnão é suportado.