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 |