Datatyper (Azure Stream Analytics)

I Azure Stream Analytics har varje post en relaterad datatyp. En datatyp beskriver (och begränsar) den uppsättning värden som en post av den typen kan innehålla eller ett uttryck av den typen kan producera.

Observera att det är poster som har en typ och inte kolumner. Varje post i en kolumn kan ha olika typer. Om detta är transparent för de flesta program möjliggör det enkel hantering av scenarier med schemaavvikelser och andra ovanliga skrivmönster.

Datatyper som stöds

Nedan visas listan över datatyper som stöds.

Datatyp Beskrivning
bigint Heltal i intervallet -2^63 (-9 223 372 036 854 775 808) till 2^63-1 (9 223 372 036 854 775 807).
flyt Flyttalsnummer i intervallet – 1,79E+308 till -2,23E-308, 0 och 2,23E-308 till 1,79E+308. Flyttals decimalvärden har vanligtvis inte någon exakt binär representation. Förlust av precision kan upplevas. Detta är inte specifikt för Azure Stream Analytics men sker i alla implementeringar av flyttalsnummer.
nvarchar(max) Textvärden, som består av Unicode-tecken. Obs! Ett annat värde än max stöds inte.
datetime Definierar ett datum som kombineras med en tid på dagen med bråksekunder (7 siffror, 100 nanosekunders precision) som baseras på en 24-timmarsklocka och i förhållande till UTC (tidszonsförskjutning 0).
bit Ett heltal som kan ha värdet 1, 0 eller NULL. Detta stöds i kompatibilitetsnivå 1.2 och senare.
spela in Uppsättning med namn/värde-par. Värden måste vara av datatyp som stöds.
matris Ordnad samling värden. Värden måste vara av datatyp som stöds.

Du kan ansluta till (eller jämföra) en bigint och en flyttalsdatatyp. Det fungerar korrekt i alla fall förutom för de mycket stora bigint-värden som inte kan representeras.

Anteckning

När du läser bigint-datatyper utanför intervallet, stöder Azure Stream Analytics, kan stream analytics-jobbet inte deserialisera händelserna med felmeddelandet InputDeserializationError. Du kan förbearbeta data och konvertera dem till en sträng. Ett alternativ är att använda Azure Functions för att förbearbeta data och konvertera så stora heltal till strängar.

Typkonverteringar

Det här är reglerna som styr datatypskonverteringar:

  • Konvertering utan precisionsförlust vid läs- och utdataskrivningsåtgärder är implicit och lyckas alltid
  • Precisionsförlust och spill inuti skrivåtgärder för utdata hanteras av konfigurerad felprincip (inställd på Antingen Släpp eller Försök igen)
  • Typkonverteringsfel som inträffar under skrivåtgärder för utdata hanteras av felprincipen
  • Typkonverteringsfel som inträffar under läsåtgärder för indata gör att jobbet släpper händelsen

En förlust av precision kan inträffa vid konvertering av värden till flyttal. Det är inte specifikt för Azure Stream Analytics utan för flyttalsdatatypen i allmänhet. Därför betraktas det inte som ett fel. Om varje siffra behöver sparas ska data läsas som sträng.

Omvandlingsdata

Det finns fyra funktioner i det strömmande SQL-språket som är användbara för att observera och justera datatypen för dina data.

  • CAST : omvandla en enskild kolumn till en viss typ – jobbet misslyckas vid konverteringsfel
  • TRY_CAST : omvandla en enskild kolumn till en viss typ – fel släpps igenom som NULL. Mer information om hur du använder indatavalidering finns i TRY_CAST
  • CREATE TABLE : definiera ett enskilt explicit schema för indata. Rader med konverteringsfel tas bort från strömmen
  • GetType : returnerar typen av en kolumn

För de flesta användningsfall är det rekommenderade alternativet att använda TRY_CAST. Den här funktionen skyddar nedströmsbearbetning genom att säkerställa utdatatypen, samtidigt som dataförlusten förhindras genom att värdet i fel ersätts med NULL. Raden tas inte bort och det ursprungliga värdet kan fortfarande projiceras i en annan kolumn.

För starka garantier är det rekommenderade alternativet att använda CREATE TABLE. Med den här metoden kan du informera jobbet om schemat för en viss indata, utan risk för avvikelse. Kompromissen är att endast ett enda schema kan definieras för en viss indata och att icke-kompatibla rader tas bort.

Om möjligt bör alla omvandlingsåtgärder utföras explicit via dessa funktioner i stället för implicit (tyst) i andra funktioner. På så sätt undviker du typmatchningsfel, oväntade beteenden och infogningsfel för starkt typifierade utdata som SQL-databaser. Information om hur du skyddar huvudfrågelogik från sådana fel finns i Indatavalidering .

Konvertering till bit

Värden konverteras mellan flyttal och bit med följande regler:

Från Om du vill
(BIT) 1 (FLOAT) 1.0
(BIT) 0 (FLOAT) 0.0
(BIT) NULL (FLYTTAL) NULL
(FLOAT) 0.0 (BIT) 0
(FLYTTAL) andra värden (BIT) 1
(FLYTTAL) NULL (BIT) NULL

Typmappningar och serialiseringsformat

Datatyp CSV i CSV ut JSON i JSON ut Avro in Avro ut
bigint sträng konverterad till ett 64-bitars signerat heltal 64-bitars signerat heltal konverterat till sträng med jobbkultur tal: heltal konverterat till 64-bitars heltal;

Booleskt värde: i kompatibilitetsnivå 1.1 och under "false" konverteras till 0 konverteras "true" till 1
number: heltal långt och int konverterat till 64-bitars heltal.

Booleskt värde: i kompatibilitetsnivå 1.1 och under falskt konverteras till 0 konverteras sant till 1
long
float sträng konverterad till 64-bitars signerat flyttalsnummer 64-bitars signerat flyttalsnummer konverterat till sträng med jobbkultur tal: bråktal konverterat till 64-bitars signerat flyttalsnummer tal: bråktal dubbel och flyttal konverterad till 64-bitars signerat flyttalpunktsnummer double
nvarchar(max) sträng sträng sträng sträng sträng sträng
Datetime sträng konverterad till datetime efter ISO 8601 standard sträng med iso 8601 standard sträng konverterad till datetime efter ISO 8601 standard datetime konverteras till sträng med ISO 8601 standard sträng konverterad till datetime efter ISO 8601 standard datetime konverteras till sträng med ISO 8601 standard
bit (kompatibilitetsnivå 1.2 och senare) strängen "true", "false" eller "null" konverteras till heltalsvärdet 1, 0 eller null på motsvarande sätt konverteras till strängen "true" eller "false" Booleskt värde: "false" konverteras till 0, "true" konverteras till 1 Booleskt värde: booleskt värde Booleskt värde: false konverteras till 0, sant konverteras till 1 boolean
Post Ej tillämpligt Det går inte att mata ut strängen "Post" JSON-objekt JSON-objekt Avro-posttyp Avro-posttyp
matris Ej tillämpligt Det går inte att mata ut strängen "Matris" JSON-objekt JSON-objekt Avro-posttyp Avro-posttyp

Anteckning

Ingen datatypskonvertering krävs för Parquet.

Typmappning vid skrivning till strukturerade datalager

Datatyp SQL Power BI Azure Cosmos DB PostgreSQL Azure-datautforskaren
bigint bigint, int, smallint, tinyint, alla strängtyper (ntext, nvarchar, char, ...) ja numeriskt: heltal bigint dynamisk, int, lång
float float, real, decimal, numeriskt, alla strängtyper ( ntext, nvarchar, char, ...) ja tal: bråktal dubbel precision, numeriskt. Begränsat till 1,78E+308 dynamisk, verklig, dubbel
nvarchar(max) Alla strängtyper (ntext, nvarchar, char, uniqueidentifier...) ja sträng tecken varierande, text dynamisk, sträng
Datetime datetime, datetime2, datetimeoffset, alla strängtyper ( ntext, nvarchar, char, ...) ja datetime konverteras till sträng med ISO 8601 standard tidsstämpel, tid. Tidszonsalternativet stöds men ingen tidszon tillhandahålls dynamic, string, datetime
bit (kompatibilitetsnivå 1.2 och senare) bigint, int, smallint, tinyint, bit, alla strängtyper (ntext, nvarchar, char, ...) ja booleskt värde: 1 konverteras till sant, 0 konverteras till falskt bit dynamisk, bool
Post Det går inte att mata ut strängen "Post" Det går inte att mata ut strängen "Post" JSON-objekt Stöds inte dynamic, bool, long, datetime, byte array, real, double, string
matris Det går inte att mata ut strängen "Matris" Det går inte att mata ut strängen "Matris" JSON-objekt Stöds inte dynamisk, sträng