Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Typ:
Dotyczy do:
, Databricks SQL
, Databricks Runtime 19 i wyższe
Reprezentuje liczby zmiennoprzecinkowe w bazie 10 z 16 lub 34 cyframi znaczącymi i bez stałej skali.
Important
DECFLOAT jest w wersji beta. Administrator przestrzeni roboczej musi włączyć typ danych DECFLOAT w podglądach.
Składnia
DECFLOAT [ ( p ) ]
-
p: Maksymalna liczba cyfr dziesiętnych znaczących. Wartościami wspieranymi są 16 i 34. Domyślnie to 34.
DECFLOAT nie akceptuje argumentu o skali. Każda wartość ma swój własny wykładnik.
Limits
| Property | DECFLOAT(16) |
DECFLOAT(34) |
|---|---|---|
| Cyfry znaczące | Do 16 | Do 34 |
| Najmniejsza dodatnia, niezerowa wartość | 1E-398 |
1E-6176 |
| Największa dodatnia wartość skończona | (10^16 - 1) × 10^369 |
(10^34 - 1) × 10^6111 |
Te same limity dotyczą liczb ujemnych. Oba typy obsługują także nieskończoność i NaN.
Literals
Użycie CAST z łańcuchem lub wartością liczbową wspieraną. Ciągi mogą również zawierać NaN, Inf, lub Infinity.
Notes
DECFLOAT reprezentuje wartości dziesiętne, takie jak 0.1 dokładnie . Wartości przekraczające precyzję mogą zaokrąglać bez błędu, w tym z .TRY_CAST Rzucaj bezpośrednio tekst dziesiętny. Przekonwertowanie może FLOATDOUBLE stracić precyzję.
Wyjście ciągu zachowuje końcowe zera, więc równe wartości, takie jak 1.5 i 1.50 , mogą generować różne ciągi (+15E-1 i +150E-2). Rzuca z DECFLOAT do DECIMAL zaokrąglania do połowy w górę, niezależnie od DECFLOAT_ROUNDING_MODE.
- Arytmetyka zachowuje precyzję, gdy oba operandy mają ten sam typ DECFLOAT. Mieszane precyzje lub operacje z innymi obsługiwanymi typami liczbowymi wykorzystują
DECFLOAT(34). -
SUMiAVGwróćDECFLOAT(34).MINorazMAXzachować precyzję wejściową. -
SQRT, ,ABSoraz bezpośrednio zaakceptowaćROUNDDECFLOAT.
DECFLOAT_ROUNDING_MODEkontroluje zaokrąglenie rzutów do DECFLOAT, +, -, *, /, SQRT, , SUM, oraz .AVG Wartość domyślna to ROUND_HALF_EVEN. Inne obsługiwane tryby to ROUND_HALF_UP, ROUND_CEILING, ROUND_FLOOR, oraz ROUND_DOWN.
DIVusuwa część ułamkową wyniku, niezależnie od .DECFLOAT_ROUNDING_MODE
ROUND, BROUND, oraz stosują TRUNCATE własne reguły zaokrągleń.
> SET DECFLOAT_ROUNDING_MODE = ROUND_FLOOR;
> SELECT CURRENT_DECFLOAT_ROUNDING_MODE();
ROUND_FLOOR
W domyślnym trybie zaokrąglenia przepełnienie generuje nieskończoność, a dzielenie przez zero daje nieskończoność lub NaN.
Tryb ANSI nie zmienia tych wyników. Wspierane TRY_* funkcje arytmetyczne zachowują nieskończoność i NaN zamiast zwracać NULL. NaN porównują równie i sortują według dodatniej nieskończoności. Dodatnia i minus zero równują się. Użyj ISNAN do wykrywania 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)
Limitations
- Operacje resztowe i bitowe nie są obsługiwane.
- Funkcje wymagające
DOUBLEwejść nie akceptują bezpośrednio DECFLOAT. Przelicz wartość naDOUBLEpierwszą (może to prowadzić do utraty precyzji). - DECFLOAT nie jest kompatybilny z wektorami usuwania. Tworząc tabelę Delty z kolumnami DECFLOAT, ustaw
TBLPROPERTIES ('delta.enableDeletionVectors' = 'false'). W przypadku istniejących tabel zrezygnuj z funkcji tabeli wektorów usuwania przed dodaniem kolumn DECFLOAT. - Tabele delta zawierające DECFLOAT nie mogą mieć włączonego odczytu Iceberg.
- Zapisywanie wartości DECFLOAT bezpośrednio do plików Parquet jest nieobsługiwane.
- Kolumny DECFLOAT nie mają statystyk min/max dla pomijania danych. Nie mogą być kolumnami partycji, kluczami klastrowania, kolumnami rzędu Z ani kolumnami indeksu filtrów Bloom.
- Zmiana kolumny między
DECFLOAT(16)aDECFLOAT(34)z jestALTER COLUMNnieobsługiwana.