Sdílet prostřednictvím


Datové typy

✅Eventstream prostředků infrastruktury Azure Stream Analytics ✅

Každý záznam má související datový typ. Datový typ popisuje (a omezení) množinu hodnot, které může záznam daného typu obsahovat, nebo výraz tohoto typu může vytvořit.

Upozorňujeme, že se jedná o záznamy, které mají typ, nikoli sloupce. Každý záznam sloupce může mít jiný typ. Pokud to bude pro většinu aplikací transparentní, umožňuje jednoduché zpracování scénářů posunu schématu a dalších neobvyklých vzorů psaní.

Podporované datové typy

Níže je seznam podporovaných datových typů.

Datový typ Popis
bigint Celá čísla v rozsahu -2^63 (-9 223 372 036 854 775 808) až 2^63-1 (9 223 372 036 854 775 807).
float Čísla s plovoucí desetinou čárkou v rozsahu - 1,79E+308 až -2,23E-308, 0 a 2,23E-308 až 1,79E+308. Desetinné hodnoty s plovoucí desetinnou čárkou obvykle nemají přesnou binární reprezentaci. Může dojít ke ztrátě přesnosti. To není specifické pro Azure Stream Analytics, ale dochází ve všech implementacích čísel s plovoucí desetinou čárkou.
nvarchar(max) Textové hodnoty, které se skládají z znaků Unicode. Poznámka: Jiná hodnota než maximum není podporována.
datetime Definuje datum v kombinaci s časem dne se zlomkovými sekundami (7 číslic, přesností nanosekund 100 nanosekund), které jsou založeny na 24hodinovém formátu a relativním vzhledem k času UTC (posun časového pásma 0).
trochu Celé číslo, které může mít hodnotu 1, 0 nebo NULL. To je podporováno ve verzi kompatibility 1.2 a vyšší.
záznam Sada párů název/hodnota Hodnoty musí být podporovaného datového typu.
pole Seřazená kolekce hodnot. Hodnoty musí být podporovaného datového typu.

Můžete se připojit (nebo porovnat) velký a plovoucí datový typ. Funguje správně ve všech případech s výjimkou velmi velkých velkých hodnot, které nelze reprezentovat.

Poznámka:

Při čtení velkých datových typů mimo rozsah podporuje Azure Stream Analytics, vaše úloha Stream Analytics nebude moct deserializovat události chybovou zprávou : InputDeserializationError. Data můžete předem zpracovat a převést na řetězec. Jednou z možností je použití funkcí Azure k předběžnému zpracování dat a převodu velkých celých čísel na řetězec.

Převody typů

Toto jsou pravidla pro převody datových typů:

  • Převod bez ztráty přesnosti během vstupních operací čtení a zápisu je implicitní a je vždy úspěšný.
  • Ztrátu přesnosti a přetečení uvnitř výstupních operací zápisu zpracovává nakonfigurovaná zásada chyb (nastavená na hodnotu Drop nebo Retry).
  • Chyby převodu typů, ke které dochází během výstupních operací zápisu, se zpracovávají zásadami chyb.
  • Chyby převodu typů, ke které dochází během vstupních operací čtení, způsobují, že úloha událost zahodí.

Při převodu hodnot na hodnotu float může dojít ke ztrátě přesnosti. Obecně se nevztahuje na Azure Stream Analytics, ale na datový typ float. Proto se nepovažuje za chybu. V případě, že je potřeba šetřit každou číslici, by se data měla číst jako řetězec.

Přetypování dat

V streamovacím jazyce SQL jsou k dispozici čtyři funkce, které jsou užitečné pro pozorování a úpravu datového typu vašich dat.

  • CAST : Přetypování jednoho sloupce na daný typ – selže úloha v případě chyby převodu.
  • TRY_CAST : Přetypování jednoho sloupce na daný typ – chyby se dají procházet jako NULL. Informace o tom, jak nejlépe používat, najdete v ověření vstupu . TRY_CAST
  • CREATE TABLE : Definujte jedno explicitní schéma pro vstup. Řádky s chybami převodu se odeberou ze streamu.
  • GetType : vrácení typu sloupce

Ve většině případů se doporučuje použít TRY_CAST. Tato funkce chrání podřízené zpracování tím, že zajišťuje výstupní typ a zároveň brání ztrátě dat nahrazením hodnoty v chybě hodnotou NULL. Řádek se nezahodí a původní hodnota se stále dá promítnuta do jiného sloupce.

Pro silné záruky doporučujeme použít CREATE TABLE. Tento přístup umožňuje informovat úlohu schématu daného vstupu bez rizika odchylky. Kompromisem je, že na daném vstupu lze definovat pouze jedno schéma a řádky, které nedodržují předpisy, se zahodí.

Pokud je to možné, měly by se všechny operace přetypování provádět explicitně prostřednictvím těchto funkcí, nikoli implicitně (bezobslužně) v jiných funkcích. Tím se zabrání neshodám typů, neočekávanému chování a chybám vložení u výstupů se silnými typy, jako jsou databáze SQL. Informace o ochraně hlavní logiky dotazů před těmito chybami najdete v ověření vstupu .

Převod na bit

Hodnoty budou převedeny mezi plovoucí a bitovou sadou s následujícími pravidly:

Od K
(BIT) 1 (FLOAT) 1.0
(BIT) 0 (FLOAT) 0.0
(BIT) NULA (FLOAT) NULA
(FLOAT) 0.0 (BIT) 0
(FLOAT) libovolná jiná hodnota (BIT) 1
(FLOAT) NULA (BIT) NULA

Mapování typů a formáty serializace

Datový typ Sdílený svazek clusteru ve svazek Sdílený svazek clusteru JSON v Json out Avro in Avro out
bigint řetězec převedený na 64bitové celé číslo se znaky 64bitové celé číslo se znaky převedené na řetězec pomocí jazykové verze úlohy číslo: celé číslo převedené na 64bitové celé číslo se signedem;

Logická hodnota: v úrovni kompatibility 1.1 a pod hodnotou false se převede na hodnotu 0, hodnota true se převede na 1.
číslo: celé číslo dlouhé a int převedené na 64bitové celé číslo se signedm;

Logická hodnota: V úrovni kompatibility 1.1 a pod hodnotou false se převede na hodnotu 0, pravda se převede na 1.
dlouhý
plout řetězec převedený na 64bitové číslo s plovoucí desetinnou čárkou 64bitové číslo s plovoucí desetinnou čárkou převedené na řetězec pomocí jazykové verze úlohy číslo: zlomek převeden na 64bitové číslo s plovoucí desetinnou čárkou číslo: zlomek double and float converted to 64 bit signed float point number dvojitý
nvarchar(max) řetězec řetězec řetězec řetězec řetězec řetězec
datum a čas řetězec převedený na datum a čas podle standardu ISO 8601 řetězec používající normu ISO 8601 řetězec převedený na datum a čas podle standardu ISO 8601 datum a čas převedený na řetězec pomocí standardu ISO 8601 řetězec převedený na datum a čas podle standardu ISO 8601 datum a čas převedený na řetězec pomocí standardu ISO 8601
bit (úroveň kompatibility 1.2 a vyšší) řetězec "true", "false" nebo "null" se odpovídajícím způsobem převede na celočíselnou hodnotu 1, 0 nebo null. převedeno na řetězec "true" nebo "false" Logická hodnota: "false" se převede na 0, hodnota true se převede na 1. Logická hodnota: logická hodnota Logická hodnota: False je převedena na hodnotu 0, hodnota true se převede na 1. Boolean
záznamu není k dispozici Nepodporuje se, řetězec záznamu se vypíše. Objekt JSON Objekt JSON Typ záznamu Avro Typ záznamu Avro
pole není k dispozici Nepodporuje se, řetězec Array se vypíše. Objekt JSON Objekt JSON Typ záznamu Avro Typ záznamu Avro

Poznámka:

Pro Parquet není nutný žádný převod datového typu.

Mapování typů při zápisu do strukturovaných úložišť dat

Datový typ SQL Power BI Azure Cosmos DB PostgreSQL Azure Data Explorer
bigint bigint, int, smallint, tinyint, all string types (ntext, nvarchar, char, ...) Ano numeric: celé číslo bigint

Pokud je typ sloupce malýint nebo celé číslo, dojde k chybě "nesprávný binární formát dat".
dynamická, int, dlouhá
plout float, real, decimal, numeric, all string types ( ntext, nvarchar, char, ...) Ano číslo: zlomek dvojitá přesnost, číselná. Omezeno na 1,78E+308

Pokud je typ sloupce skutečný, dojde k chybě "nesprávný binární formát dat".
dynamický, skutečný, dvojitý
nvarchar(max) Všechny typy řetězců (ntext, nvarchar, char, uniqueidentifier...) Ano řetězec různé znaky, text dynamic, string
datum a čas datetime, datetime2, datetimeoffset, všechny typy řetězců ( ntext, nvarchar, char, ...) Ano datum a čas převedený na řetězec pomocí standardu ISO 8601 timestamptz pro časové razítko UTC, časové razítko v opačném případě dynamic, string, datetime
bit (úroveň kompatibility 1.2 a vyšší) bigint, int, smallint, tinyint, bit, všechny typy řetězců (ntext, nvarchar, char, ...) Ano logická hodnota: 1 se převede na hodnotu true, 0 se převede na false. trochu dynamická, logická hodnota
záznamu Nepodporuje se, řetězec záznamu se vypíše. Nepodporuje se, řetězec záznamu se vypíše. Objekt JSON Není podporováno dynamic, bool, long, datetime, byte array, real, double, string
pole Nepodporuje se, řetězec Array se vypíše. Nepodporuje se, řetězec Array se vypíše. Objekt JSON Není podporováno dynamic, string