Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Geçerlidir:
, Databricks SQL
, Databricks Runtime 19 ve üzeri
16 veya 34 anlamlı rakamlı ve sabit ölçek olmayan taban 10 kayan nokta sayılarını temsil eder.
Important
DECFLOAT
Beta aşamasında. Bir çalışma alanı yöneticisi, ÖnizlemelerdeDECFLOAT veri tipini etkinleştirmelidir.
Sözdizimi
DECFLOAT [ ( p ) ]
-
p: Anlamlı ondalık rakamların maksimum sayısı. Desteklenen değerler 16 ve 34'tür. Varsayılan 34.
DECFLOAT ölçek argümanını kabul etmez. Her değerin kendi üsti vardır.
Limits
| Property | DECFLOAT(16) |
DECFLOAT(34) |
|---|---|---|
| Önemli rakamlar | 16'ya kadar | 34'e kadar |
| En küçük pozitif sıfır olmayan değer | 1E-398 |
1E-6176 |
| En büyük pozitif sonlu değer | (10^16 - 1) × 10^369 |
(10^34 - 1) × 10^6111 |
Aynı sınırlar negatif sayılar için de geçerlidir. Her iki tip de infinity ve NaN'i destekliyor.
Literals
Bir diziyle veya desteklenen sayısal değerle kullanın CAST . Dizeler ayrıca NaN, Inf, veya Infinity. içerebilir.
Notes
DECFLOAT ondalık değerleri temsil eder, örneğin 0.1 tam olarak Hassasiyeti aşan değerler, hatasız olarak da yuvarlanabilir, dahil.TRY_CAST Ondalık metni doğrudan kullan. Dönüştürme veya FLOATDOUBLE hassasiyeti kaybedebilir.
Dizi çıkışı geride duran sıfırları korur, bu nedenle ve 1.50 gibi eşit değerler 1.5 farklı dizeler (+15E-1 ve +150E-2) üretebilir. DECFLOAT'tan DECIMAL yarısına yuvarlanan atışlar, bağımsız DECFLOAT_ROUNDING_MODEolarak .
- Aritmetik, her iki operandın da aynı DECFLOAT tipine sahip olması durumunda hassasiyeti korur. Diğer desteklenen sayısal tiplerle
DECFLOAT(34)karışık hassasiyetler veya işlemler kullanılır. -
SUMveAVGgeriDECFLOAT(34)dön.MINveMAXgiriş hassasiyetini koruyun. -
SQRT,ABS, veROUNDdoğrudan DECFLOAT'ı kabul eder.
DECFLOAT_ROUNDING_MODEDECFLOAT, , , , , SQRT/, SUM, , ve AVGatışlar için yuvarlamayı kontrol eder. *-+ Varsayılan değer: ROUND_HALF_EVEN. Desteklenen diğer modlar ROUND_HALF_UPise , ROUND_CEILING, ROUND_FLOOR, ve ROUND_DOWN.
DIV sonucun kesirlik kısmını çıkarır, ne olursa DECFLOAT_ROUNDING_MODEolsun.
ROUND, BROUND, ve TRUNCATE kendi yuvarlama kurallarını kullanır.
> SET DECFLOAT_ROUNDING_MODE = ROUND_FLOOR;
> SELECT CURRENT_DECFLOAT_ROUNDING_MODE();
ROUND_FLOOR
Varsayılan yuvarlama modunda, taşma sonsuzluk üretir ve sıfıra bölmek sonsuzluk veya NaN oluşturur.
ANSI modu bu sonuçları değiştirmez. Desteklenen aritmetik fonksiyonlar, TRY_* sonsuzluğu ve NaN'i korur, geri dönmek NULLyerine . NaN, pozitif sonsuzluktan sonra eşit ve sıralanarak karşılaştırılır. Pozitif ve negatif sıfır eşittir. NaN'ı tespit etmek için kullanılır ISNAN .
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
- Kalan ve bit bazında işlemler desteklenmez.
- Girdi gerektiren
DOUBLEfonksiyonlar DECFLOAT'u doğrudan kabul etmez. Değeri birinciyeDOUBLEdönüştürün (bu hassasiyet kaybına yol açabilir). - DECFLOAT, silme vektörleriyle uyumlu değildir. DECFLOAT sütunlarıyla bir Delta tablosu oluştururken,
TBLPROPERTIES ('delta.enableDeletionVectors' = 'false'). Mevcut tablolar için, DECFLOAT sütunları eklemeden önce silinme vektör tablosu özelliğini kaldırın . - DECFLOAT içeren delta tablolarında Iceberg okumaları etkinleştirilemez.
- DECFLOAT değerlerinin doğrudan Parquet dosyalarına yazılması desteklenmez.
- DECFLOAT sütunlarında veri atlama için minimum/maksimum istatistikler yoktur. Bunlar bölüm sütunları, küme anahtarları, Z-sıra sütunları veya Bloom filtre indeks sütunları olamazlar.
- Bir sütunu ile
DECFLOAT(34)ALTER COLUMNarasındaDECFLOAT(16)değiştirmek desteklenmez.