Adattípusok (Azure Stream Analytics)

Az Azure Stream Analyticsben minden rekordhoz tartozik egy kapcsolódó adattípus. Az adattípusok ismertetik (és korlátozzák) azokat az értékkészleteket, amelyeket egy ilyen típusú rekord vagy egy ilyen típusú kifejezés hozhat létre.

Vegye figyelembe, hogy olyan rekordokról van szó, amelyek típusa nem oszlop. Egy oszlop minden rekordja más típusú lehet. Ha ez a legtöbb alkalmazás számára átlátható lesz, lehetővé teszi a sémaeltolódási forgatókönyvek és más szokatlan gépelési minták egyszerű kezelését.

Támogatott adattípusok

Alább látható a támogatott adattípusok listája.

Adattípus Leírás
bigint Egész számok a -2^63 tartományban (-9 223 372 036 854 775 808) és 2^63-1 között (9 223 372 036 854 775 807).
float Lebegőpontos számok a tartományban – 1,79E+308 és -2,23E-308, 0 és 2,23E-308 és 1,79E+308 között. A lebegőpontos decimális értékek általában nem rendelkeznek pontos bináris reprezentációval. A pontosság elvesztése tapasztalható. Ez nem az Azure Stream Analyticsre vonatkozik, hanem minden lebegőpontos szám implementációban előfordul.
nvarchar(max) Unicode-karakterekből álló szöveges értékek. Megjegyzés: A max értéktől eltérő érték nem támogatott.
dátum/idő Olyan dátumot határoz meg, amely a napidővel és a tört másodpercekkel (7 számjegy, 100 nanoszekundumos pontosság) van kombinálva, amely egy 24 órás és az UTC-hez képest (0 időzóna-eltolás) alapul.
bit Egy egész szám, amely 1, 0 vagy NULL értéket vehet fel. Ez az 1.2-es és újabb kompatibilitási szinten támogatott.
Rekord Név-érték párok halmaza. Az értékeknek támogatott adattípusúnak kell lenniük.
array Rendezett értékgyűjtemény. Az értékeknek támogatott adattípusúnak kell lenniük.

Bigint és lebegőpontos adattípushoz csatlakozhat (vagy hasonlíthat össze). Minden esetben helyesen fog működni, kivéve a nagyon nagy, nem ábrázolható bigint értékek esetét.

Megjegyzés

Ha a tartományon kívüli bigint adattípusokat olvas be, az Azure Stream Analytics támogatja, a Stream Analytics-feladat nem deszerializálja az eseményeket a következő hibaüzenettel: InputDeserializationError. Az adatokat előre feldolgozhatja, és sztringgé alakíthatja. Az egyik lehetőség az azure-függvények használata az adatok előzetes feldolgozására és az ilyen nagy egész számok sztringgé alakítására.

Típuskonverziók

Az adattípus-átalakításokra a következő szabályok vonatkoznak:

  • A bemeneti olvasási és kimeneti írási műveletek során a pontossági veszteség nélküli átalakítás implicit, és mindig sikeres
  • A kimeneti írási műveleteken belüli pontosságvesztést és túlcsordulást konfigurált hibaszabályzat kezeli (a beállítás értéke Drop vagy Retry)
  • A kimeneti írási műveletek során előforduló típuskonverziós hibákat a hibaszabályzat kezeli
  • A bemeneti olvasási műveletek során előforduló típuskonverziós hibák miatt a feladat elveti az eseményt

Az értékek lebegőpontossá alakításakor pontosságvesztés történhet. Ez nem az Azure Stream Analyticsre, hanem általában a lebegőpontos adattípusra vonatkozik. Ezért ez nem minősül hibának. Abban az esetben, ha minden számjegyet meg kell őrizni, az adatokat sztringként kell olvasni.

Adatok kiosztása

A streamelési SQL-nyelvben négy olyan függvény található, amelyek hasznosak az adatok adattípusának megfigyeléséhez és módosításához.

  • CAST : egyetlen oszlopot adott típusra vetíteni – konvertálási hiba esetén a feladat meghiúsul
  • TRY_CAST : egyetlen oszlopot ad egy adott típushoz – a hibák null értékűként lesznek átadva. A legjobb használathoz tekintse meg a bemeneti ellenőrzéssel kapcsolatos tudnivalókat TRY_CAST
  • CREATE TABLE : egyetlen explicit sémát definiálhat egy bemenethez. A konvertálási hibákkal rendelkező sorok el lesznek távolítva a streamből
  • GetType : oszloptípus visszaadása

A legtöbb használati esetben az ajánlott lehetőség a TRY_CAST használata. Ez a függvény a kimeneti típus biztosításával védi az alsóbb rétegbeli feldolgozást, ugyanakkor megakadályozza az adatvesztést azáltal, hogy a hiba értékét NULL értékre cseréli. A sor nincs elvetve, és az eredeti érték továbbra is kivetíthető egy másik oszlopban.

Erős garanciák esetén az ajánlott lehetőség a CREATE TABLE használata. Ez a megközelítés lehetővé teszi, hogy az adott bemenet sémáját tájékoztassa a feladatról, az eltérés veszélye nélkül. A kompromisszum az, hogy egy adott bemeneten csak egyetlen séma definiálható, és a nem megfelelő sorok el lesznek dobva.

Ha lehetséges, az összes öntési műveletet explicit módon kell elvégezni ezen függvényekkel, nem pedig implicit módon (csendesen) más függvényekben. Így elkerülhetők a típuseltérések, a váratlan viselkedések és a beszúrási hibák az olyan erősen beírt kimenetek esetében, mint az SQL-adatbázisok. Tekintse meg a bemeneti érvényesítést a fő lekérdezési logika védelméhez az ilyen hibák ellen.

Konvertálás bitre

Az értékek lebegőpontos és bit közötti konvertálása a következő szabályokkal:

Forrás Művelet
(BIT) 1 (FLOAT) 1.0
(BIT) 0 (FLOAT) 0,0
(BIT) NULL (FLOAT) NULL
(FLOAT) 0,0 (BIT) 0
(FLOAT) bármely más érték (BIT) 1
(FLOAT) NULL (BIT) NULL

Típusleképezések és szerializálási formátumok

Adattípus CSV a következőben: CSV ki JSON a következőben: JSON ki Avro in Avro out
bigint sztring 64 bites aláírt egész számmá konvertálva 64 bites aláírt egész szám sztringgé alakítva a feladatkultúra használatával szám: 64 bites aláírt egész számmá konvertált egész szám;

Logikai: az 1.1-es kompatibilitási szinten és a "false" alatt a rendszer 0-ra, a "true" értéket 1-re konvertálja
szám: egész szám long és int konvertálva 64 bites aláírt egész számmá;

Logikai: az 1.1-es kompatibilitási szinten és a false alatt a rendszer 0-ra konvertálja, az igaz érték 1-re lesz konvertálva
hosszú
float sztring 64 bites aláírt lebegőpontos számmá konvertálva 64 bites aláírt lebegőpontos szám sztringgé alakítva a feladatkultúra használatával szám: 64 bites aláírt lebegőpontos számmá konvertált törtrész szám: tört double and float converted to 64 bit signed float point number double
nvarchar(max) sztring sztring sztring sztring sztring sztring
Datetime az ISO 8601 szabványnak megfelelően datetime-ra konvertált sztring sztring ISO 8601 szabvány használatával az ISO 8601 szabványnak megfelelően datetime-ra konvertált sztring datetime sztringgé alakítva az ISO 8601 szabvány használatával az ISO 8601 szabványnak megfelelően datetime-ra konvertált sztring datetime sztringgé alakítva az ISO 8601 szabvány használatával
bit (1.2-es vagy újabb kompatibilitási szint ) A "true", "false" vagy "null" karakterláncot a rendszer az 1, 0 vagy null egész számmá alakítja. "igaz" vagy "hamis" sztringgé konvertálva Logikai: a "false" 0-ra, a "true" 1-re lesz konvertálva Logikai érték: logikai érték Logikai: a hamis 0-ra, az igaz érték 1-re lesz konvertálva boolean
Rekord N/A Nem támogatott, a "Record" sztring kimenete JSON-objektum JSON-objektum Avro rekordtípus Avro rekordtípus
array N/A Nem támogatott, a "Tömb" sztring kimenete JSON-objektum JSON-objektum Avro rekordtípus Avro rekordtípus

Megjegyzés

A Parquethez nincs szükség adattípus-átalakításra.

Típusleképezés strukturált adattárakba való íráskor

Adattípus SQL Power BI Azure Cosmos DB PostgreSQL Azure Adatkezelő
bigint bigint, int, smallint, tinyint, minden sztringtípus (ntext, nvarchar, char, ...) igen numerikus: egész szám bigint dinamikus, int, hosszú
float float, real, decimal, numeric, all string types ( ntext, nvarchar, char, ...) igen szám: tört dupla pontosság, numerikus. Legfeljebb 1,78E+308 dinamikus, valós, dupla
nvarchar(max) Minden sztringtípus (ntext, nvarchar, char, uniqueidentifier...) igen sztring változó karakter, szöveg dinamikus, sztring
Datetime datetime, datetime2, datetimeoffset, minden sztringtípus ( ntext, nvarchar, char, ...) igen datetime sztringgé alakítva az ISO 8601 szabvány használatával időbélyeg, idő. Az időzóna beállítás támogatott, de nem lesz megadva időzóna dynamic, string, datetime
bit (1.2-es vagy újabb kompatibilitási szint ) bigint, int, smallint, tinyint, bit, minden sztringtípus (ntext, nvarchar, char, ...) igen logikai érték: Az 1 igaz, a 0 hamis értékre lesz konvertálva bit dinamikus, bool
Rekord Nem támogatott, a "Record" sztring kimenete Nem támogatott, a "Record" sztring kimenete JSON-objektum Nem támogatott dynamic, bool, long, datetime, byte array, real, double, string
array Nem támogatott, a "Tömb" sztring kimenete Nem támogatott, a "Tömb" sztring kimenete JSON-objektum Nem támogatott dinamikus, sztring