Sdílet prostřednictvím


Datové typy (Azure Stream Analytics)

V Azure Stream Analytics má každý záznam související datový typ. Datový typ popisuje (a omezuje) sadu hodnot, které může záznam tohoto typu obsahovat, nebo výraz tohoto typu může vytvořit.

Upozorňujeme, že se jedná o záznamy, které mají typ, a ne sloupce. Každý záznam sloupce může mít jiný typ. Pokud to bude pro většinu aplikací transparentní, umožní to 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řesné binární vyjádření. Může dojít ke ztrátě přesnosti. To není specifické pro Azure Stream Analytics, ale dochází k tomu ve všech implementacích čísel s plovoucí desetinou čárkou.
Nvarchar(max) Textové hodnoty, které se skládají ze znaků Unicode. Poznámka: Jiná hodnota než max není podporována.
datetime Definuje datum, které je kombinováno s časem dne s desetinnými sekundami (7 číslic, přesnost 100 nanosekund), které je založené na 24hodinovém formátu a relativní vzhledem k času UTC (posun časového pásma 0).
bit Celé číslo, které může mít hodnotu 1, 0 nebo NULL. To je podporováno v úrovni kompatibility 1.2 a vyšší.
Záznam Sada dvojic název/hodnota. Hodnoty musí být podporovaného datového typu.
array Uspořádaná kolekce hodnot. Hodnoty musí být podporovaného datového typu.

Můžete se připojit k datovému typu bigint a float (nebo ho porovnat). Bude fungovat správně ve všech případech s výjimkou velmi velkých hodnot bigint, které nelze reprezentovat.

Poznámka

Při čtení bigintových datových typů mimo rozsah, který Azure Stream Analytics podporuje, by se vaší úloze Stream Analytics nepodařilo deserializovat události s chybovou zprávou: InputDeserializationError. Data můžete předem zpracovat a převést na řetězec. Jednou z možností je použití azure functions k předběžnému zpracování dat a převodu takto velkých celých čísel na řetězec.

Převody typů

Převody datových typů se řídí těmito pravidly:

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

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

Přetypování dat

Ve streamovacím jazyce SQL jsou čtyři funkce, které jsou užitečné pro sledování a úpravu datového typu 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 propustí jako NULL. Informace o tom, jak nejlépe používat, najdete v tématu 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átí typ sloupce.

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

V případě silných záruk doporučujeme použít CREATE TABLE. Tento přístup umožňuje informovat úlohu o schématu daného vstupu bez rizika odchylky. Kompromisem je, že na daném vstupu lze definovat pouze jedno schéma a řádky, které nevyhovují předpisům, budou vyřazeny.

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 vyhnete neshodám typů, neočekávanému chování a chybám vkládání u výstupů se silnými typy, jako jsou databáze SQL. Informace o tom, jak chránit logiku hlavního dotazu před těmito chybami, najdete v tématu ověřování vstupu .

Převod na bit

Hodnoty se převedou mezi plovoucí a bitovou s následujícími pravidly:

Z Záměr
(BIT) 1 (FLOAT) 1.0
(BIT) 0 (FLOAT) 0,0
(BIT) NULL (FLOAT) NULL
(FLOAT) 0,0 (BIT) 0
(FLOAT) jakákoli jiná hodnota (BIT) 1
(FLOAT) NULL (BIT) NULL

Mapování typů a formáty serializace

Datový typ Csv v Vysunout sdílený svazek JSON v Vysunout JSON Avro v Avro ven
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 celé číslo se 64 bity signedch;

Logická hodnota: na úrovni kompatibility 1.1 a pod hodnotou "false" se převede na hodnotu 0, hodnota true se převede na 1.
číslo: celé číslo long a int převedeno na celé číslo se 64 bitem;

Logická hodnota: na úrovni kompatibility 1.1 a pod hodnotou false se převede na hodnotu 0, hodnota true se převede na 1.
long
float string converted to 64 bit signed float point number 64bitové číslo plovoucí desetinné čárky se 64bitovým podpisem převede na řetězec pomocí jazykové verze úlohy. číslo: zlomek převedený na číslo 64bitové podepsané plovoucí desetinné čárky číslo: zlomek Double a float převedené na 64bitové číslo se 64bitovou desetičkovou čárkou double
Nvarchar(max) řetězec řetězec řetězec řetězec řetězec řetězec
Datetime řetězec převedený na datetime podle normy ISO 8601 řetězec používající normu ISO 8601 řetězec převedený na datetime podle normy ISO 8601 datetime převedený na řetězec pomocí standardu ISO 8601 řetězec převedený na datetime podle normy ISO 8601 datetime převedený na řetězec pomocí standardu ISO 8601
bit (úroveň kompatibility 1.2 a vyšší) řetězec "true", "false" nebo "null" je odpovídajícím způsobem převeden na celočíselnou hodnotu 1, 0 nebo null. převedeno na řetězec "true" nebo "false" Logická hodnota: "false" se převede na 0, "true" se převede na 1. Logická hodnota: logická hodnota Logická hodnota: hodnota false se převede na 0, hodnota true se převede na 1. boolean
Záznam Nepodporuje se, výstupem je řetězec záznamu. Objekt JSON Objekt JSON Typ záznamu Avro Typ záznamu Avro
Pole Nepodporuje se, výstupem je řetězec Array. Objekt JSON Objekt JSON Typ záznamu Avro Typ záznamu Avro

Poznámka

Pro Parquet není potřeba žá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 Průzkumník dat Azure
bigint bigint, int, smallint, tinyint, všechny typy řetězců (ntext, nvarchar, char, ...) ano numeric: integer bigint dynamic, int, long
float float, real, decimal, numeric, all string types (ntext, nvarchar, char, ...) ano číslo: zlomek dvojitá přesnost, číselná. Omezeno na 1,78E+308 dynamická, skutečná, dvojitá
Nvarchar(max) Všechny typy řetězců (ntext, nvarchar, char, uniqueidentifier...) ano řetězec character varying, text dynamic, string
Datetime datetime, datetime2, datetimeoffset, všechny typy řetězců (ntext, nvarchar, char, ...) ano datetime převedený na řetězec pomocí standardu ISO 8601 časové razítko, čas. Podporovaná možnost časového pásma, ale nebude k dispozici žádné časové pásmo 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 na hodnotu false. bit dynamická, logická hodnota
Záznam Nepodporuje se, výstupem je řetězec záznamu. Nepodporuje se, výstupem je řetězec záznamu. Objekt JSON Nepodporováno dynamic, bool, long, datetime, byte array, real, double, string
Pole Nepodporuje se, výstupem je řetězec Array. Nepodporuje se, výstupem je řetězec Array. Objekt JSON Nepodporováno dynamic, string