Veri Türleri (Azure Stream Analytics)
Azure Stream Analytics'te her kaydın ilgili bir veri türü vardır. Veri türü, o türdeki bir kaydın tutabileceği veya o türdeki bir ifadenin üretebileceği değer kümesini açıklar (ve kısıtlar).
Bunun sütun değil türü olan kayıtlar olduğunu lütfen unutmayın. Bir sütunun her kaydı farklı bir türe sahip olabilir. Bu çoğu uygulama için saydam olacaksa, şema kayma senaryolarının ve diğer olağan dışı yazma desenlerinin kolayca işlenmesine olanak tanır.
Desteklenen veri türleri
Desteklenen veri türlerinin listesi aşağıdadır.
Veri türü | Açıklama |
---|---|
bigint | -2^63 (-9.223.372.036.854.775.808) ile 2^63-1 (9.223.372.036.854.775.807) aralığındaki tamsayılar. |
float | Aralıktaki kayan noktalı sayılar - 1,79E+308 - -2,23E-308, 0 ve 2,23E-308 - 1,79E+308. Kayan nokta ondalık değerleri genellikle tam bir ikili gösterime sahip değildir. Duyarlık kaybı yaşanabilir. Bu, Azure Stream Analytics'e özgü değildir ancak tüm kayan noktalı sayı uygulamalarında gerçekleşir. |
nvarchar(max) | Unicode karakterlerinden oluşan metin değerleri. Not: Max dışında bir değer desteklenmez. |
datetime | 24 saatlik saati temel alan ve UTC'ye göre (saat dilimi uzaklığı 0) kesirli saniyelerle (7 basamak, 100 nanosaniye duyarlığı) günün saatiyle birleştirilen tarihi tanımlar. |
bit | 1, 0 veya NULL değer alabilen bir tamsayı. Bu, uyumluluk düzeyi 1.2 ve üzerinde desteklenir. |
kaydet | Ad/değer çiftleri kümesi. Değerler desteklenen veri türünde olmalıdır. |
array | Sıralı değer koleksiyonu. Değerler desteklenen veri türünde olmalıdır. |
Bigint ve float veri türüne katılabilirsiniz (veya karşılaştırabilirsiniz). Temsil edilemeyen çok büyük bigint değerleri dışında her durumda düzgün çalışır.
Not
Azure Stream Analytics, aralığın dışında bigint veri türlerini okurken şunları destekler: InputDeserializationError hata iletisiyle Stream Analytics işiniz olayları seri durumdan çıkaramaz. Verileri önceden işleyebilir ve dizeye dönüştürebilirsiniz. Seçeneklerden biri, verileri önceden işlemek ve bu büyük tamsayıları dizeye dönüştürmek için Azure işlevlerini kullanmaktır.
Tür dönüştürmeleri
Veri türü dönüştürmelerini yöneten kurallar şunlardır:
- Giriş okuma ve çıkış yazma işlemleri sırasında duyarlık kaybı olmadan dönüştürme örtülüdür ve her zaman başarılı olur
- Çıkış yazma işlemlerinin içinde duyarlık kaybı ve taşması yapılandırılmış hata ilkesi tarafından işlenir (Bırak veya Yeniden Dene olarak ayarlanır)
- Çıkış yazma işlemleri sırasında oluşan tür dönüştürme hataları hata ilkesi tarafından işlenir
- Giriş okuma işlemleri sırasında oluşan tür dönüştürme hataları işin olayı bırakmasına neden oluyor
Değerlerin float değerine dönüştürülmesinde duyarlık kaybı olabilir. Azure Stream Analytics'e değil genel olarak kayan veri türüne özgüdür. Bu nedenle hata olarak kabul edilmez. Her rakamın korunması gerektiğinde, verilerin dize olarak okunması gerekir.
Veri atama
Akış SQL dilinde verilerinizin veri türünü gözlemlemek ve ayarlamak için yararlı olan dört işlev vardır.
- CAST : Belirli bir türe tek bir sütun atama - dönüştürme hatası durumunda iş başarısız olur
-
TRY_CAST : belirli bir türe tek bir sütun yayınlar; hatalar NULL olarak geçirilir. En iyi kullanımın nasıl yapılacağını öğrenmek için giriş doğrulamaya bakın
TRY_CAST
- CREATE TABLE : Bir giriş için tek bir açık şema tanımlayın. Dönüştürme hatası olan satırlar akıştan kaldırılır
- GetType : bir sütunun türünü döndürür
Çoğu kullanım örneğinde önerilen seçenek TRY_CAST kullanmaktır. Bu işlev çıkış türünü sağlayarak aşağı akış işlemeyi korurken, hatadaki değeri NULL ile değiştirerek veri kaybını önler. Satır bırakılmaz ve bu özgün değer başka bir sütuna yansıtılabilir.
Güçlü garantiler için önerilen seçenek CREATE TABLE kullanmaktır. Bu yaklaşım, sapma riski olmadan belirli bir girişin şemasının işini bilgilendirmeye olanak tanır. Belirli bir girişte yalnızca tek bir şema tanımlanabilir ve uyumlu olmayan satırlar bırakılır.
Mümkünse, tüm atama işlemleri diğer işlevlerde örtük (sessizce) yerine bu işlevler aracılığıyla açıkça yapılmalıdır. Bu, SQL veritabanları gibi kesin olarak belirtilmiş çıkışlar için tür uyuşmazlıklarını, beklenmeyen davranışları ve ekleme hatalarını önler. Ana sorgu mantığını bu tür hatalardan nasıl koruyacağınızı öğrenmek için giriş doğrulama konusuna bakın.
Bite dönüştürme
Değerler float ve bit arasında aşağıdaki kurallarla dönüştürülür:
Kaynak | Amaç |
---|---|
(BIT) 1 | (KAYAN) 1.0 |
(BIT) 0 | (KAYAN) 0,0 |
(BIT) NULL | (KAYAN) NULL |
(KAYAN) 0,0 | (BIT) 0 |
(KAYAN) başka bir değer | (BIT) 1 |
(KAYAN) NULL | (BIT) NULL |
Tür eşlemeleri ve serileştirme biçimleri
Veri türü | içinde CSV | CSV çıkışı | JSON | JSON çıkışı | Avro in | Avro çıkışı |
---|---|---|---|---|---|---|
bigint | 64 bit işaretli tamsayıya dönüştürülen dize | İş kültürü kullanılarak dizeye dönüştürülen 64 bit imzalı tamsayı | sayı: 64 bit işaretli tamsayıya dönüştürülen tamsayı; Boole değeri: Uyumluluk düzeyi 1.1 ve altındaki "false" değeri 0'a, "true" ise 1'e dönüştürülür |
sayı: tamsayı | long ve int 64 bit işaretli tamsayıya dönüştürülür; Boole değeri: Uyumluluk düzeyi 1.1'de ve false'un altında 0'a, true değeri 1'e dönüştürülür |
long |
float | 64 bit işaretli kayan nokta numarasına dönüştürülen dize | İş kültürü kullanılarak dizeye dönüştürülen 64 bit imzalı kayan nokta numarası | sayı: kesir 64 bit işaretli kayan nokta numarasına dönüştürüldü | sayı: kesir | double ve float 64 bit işaretli kayan nokta numarasına dönüştürüldü | double |
nvarchar(max) | string | string | string | string | string | string |
Datetime | ISO 8601 standardına göre tarih saatine dönüştürülen dize | ISO 8601 standard kullanan dize | ISO 8601 standardına göre tarih saatine dönüştürülen dize | DATETIME, ISO 8601 standardı kullanılarak dizeye dönüştürüldü | ISO 8601 standardına göre tarih saatine dönüştürülen dize | DATETIME, ISO 8601 standardı kullanılarak dizeye dönüştürüldü |
bit (uyumluluk düzeyi 1.2 ve üzeri) | "true", "false" veya "null" dizesi karşılık gelen 1, 0 veya null tamsayı değerine dönüştürülür | "true" veya "false" dizesine dönüştürüldü | Boole: "false" 0'a, "true" ise 1'e dönüştürülür | Boole değeri: boole değeri | Boole değeri: false 0'a, true değeri 1'e dönüştürülür | boolean |
Kayıt | Yok | Desteklenmez, "Kayıt" dizesi çıkarılır | JSON nesnesi | JSON nesnesi | Avro kayıt türü | Avro kayıt türü |
Dizi | Yok | Desteklenmez, "Dizi" dizesi çıkarılır | JSON nesnesi | JSON nesnesi | Avro kayıt türü | Avro kayıt türü |
Not
Parquet için veri türü dönüştürmesi gerekmez.
Yapılandırılmış veri depolarına yazarken tür eşleme
Veri türü | SQL | Power BI | Azure Cosmos DB | PostgreSQL | Azure Veri Gezgini |
---|---|---|---|---|---|
bigint | bigint, int, smallint, tinyint, tüm dize türleri (ntext, nvarchar, char, ...) | evet | sayısal: tamsayı | bigint | dinamik, int, uzun |
float | float, gerçek, ondalık, sayısal, tüm dize türleri (ntext, nvarchar, char, ...) | evet | sayı: kesir | çift duyarlık, sayısal. 1,78E+308 ile sınırlıdır | dinamik, gerçek, çift |
nvarchar(max) | Tüm dize türleri (ntext, nvarchar, char, uniqueidentifier...) | evet | string | karakter değişen, metin | dinamik, dize |
Datetime | datetime, datetime2, datetimeoffset, tüm dize türleri (ntext, nvarchar, char, ...) | evet | DATETIME, ISO 8601 standardı kullanılarak dizeye dönüştürüldü | zaman damgası, zaman. Saat dilimi seçeneği destekleniyor ancak saat dilimi sağlanamaz | dynamic, string, datetime |
bit (uyumluluk düzeyi 1.2 ve üzeri) | bigint, int, smallint, tinyint, bit, tüm dize türleri (ntext, nvarchar, char, ...) | evet | boolean: 1 true, 0 false olarak dönüştürülür | bit | dinamik, bool |
Kayıt | Desteklenmez, "Kayıt" dizesi çıkarılır | Desteklenmez, "Kayıt" dizesi çıkarılır | JSON nesnesi | Desteklenmez | dynamic, bool, long, datetime, bayt dizisi, gerçek, çift, dize |
Dizi | Desteklenmez, "Dizi" dizesi çıkarılır | Desteklenmez, "Dizi" dizesi çıkarılır | JSON nesnesi | Desteklenmez | dinamik, dize |