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 |