Dela via


Datatyper

✅ Azure Stream Analytics ✅ Fabric Eventstream

Varje post har 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 generera.

Observera att det är poster som har en typ och inte kolumner. Varje post i en kolumn kan ha en annan typ. Om detta blir transparent för de flesta program möjliggör det enkel hantering av schemaavvikelsescenarier 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).
flyta/sväva Flyttalsnummer i intervallet - 1,79E+308 till -2,23E-308, 0 och 2,23E-308 till 1,79E+308. Decimalvärden med flyttalstecken har vanligtvis ingen 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.
tidpunkt 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).
lite grann Ett heltal som kan ta värdet 1, 0 eller NULL. Detta stöds i kompatibilitetsnivå 1.2 och senare.
rekord Uppsättning namn/värdepar. Värden måste vara av datatyp som stöds.
array 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.

Anmärkning

När du läser bigint-datatyper utanför intervallet, stöder Azure Stream Analytics, ditt Stream Analytics-jobb skulle misslyckas med att deserialisera händelserna med felmeddelandet: InputDeserializationError. Du kan förbearbeta data och konvertera dem till sträng. Ett alternativ är att använda Azure-funktioner för att förbearbeta data och konvertera sådana stora heltal till sträng.

Typkonverteringar

Det här är reglerna för datatypskonverteringar:

  • Konvertering utan precisionsförlust under läs- och utdataskrivningsåtgärder är implicit och lyckas alltid
  • Precisionsförlust och spill i 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 typen av flyttaldata i allmänhet. Därför anses det inte vara ett fel. Om varje siffra behöver sparas ska data läsas som sträng.

Gjutning av data

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 – misslyckas jobbet om konverteringsfel uppstår
  • TRY_CAST : omvandla en enskild kolumn till en viss typ – fel släpps igenom som NULL. Se indataverifiering för bästa användning TRY_CAST
  • SKAPA TABELL : definiera ett enda 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ömsbearbetningen 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 gjutningsåtgärder utföras explicit via dessa funktioner i stället för implicit (tyst) i andra funktioner. På så sätt undviks typmatchningar, oväntade beteenden och infogningsfel för starkt inskrivna utdata som SQL-databaser. Se indataverifiering för hur du skyddar huvudfrågelogik från sådana fel.

Konvertering till bit

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

Från Till
(BIT) 1 (FLOAT) 1.0
(BIT) 0 (FLOAT) 0.0
(BIT) NOLL (FLOAT) NOLL
(FLOAT) 0.0 (BIT) 0
(FLOAT) andra värden (BIT) 1
(FLOAT) NOLL (BIT) NOLL

Skriv mappningar och serialiseringsformat

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

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

Booleskt värde: i kompatibilitetsnivå 1.1 och under false konverteras till 0 konverteras sant till 1
lång
sväva sträng konverterad till 64 bitars signerat flyttalsnummer 64-bitars signerat flyttalsnummer konverterat till sträng med hjälp av jobbkultur tal: bråk konverterat till 64-bitars signerat flyttalsnummer tal: bråk dubbel och flyttal konverterad till 64 bitars signerat flyttalsnummer dubbel
nvarchar(max) snöre snöre snöre snöre snöre snöre
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 booleskt
post Inte tillgänglig Stöds inte, "Record"-strängen matas ut JSON-objekt JSON-objekt Avro-posttyp Avro-posttyp
samling Inte tillgänglig Det går inte att mata ut matrissträngen JSON-objekt JSON-objekt Avro-posttyp Avro-posttyp

Anmärkning

Ingen datatypkonvertering krävs för Parquet.

Skriv mappning när du skriver 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

Om kolumntypen är smallint eller heltal uppstår felet "felaktigt binärt dataformat".
dynamisk, int, lång
sväva float, real, decimal, numerisk, alla strängtyper ( ntext, nvarchar, char, ...) Ja tal: bråk dubbel precision, numeriskt. Begränsad till 1,78E+308

Om kolumntypen är verklig uppstår felet "felaktigt binärt dataformat".
dynamisk, verklig, dubbel
nvarchar(max) Alla strängtyper (ntext, nvarchar, char, uniqueidentifier...) Ja snöre 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 timestamptz för UTC-tidsstämpel, tidsstämpel annars 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 false lite grann dynamisk, bool
post Stöds inte, "Record"-strängen matas ut Stöds inte, "Record"-strängen matas ut JSON-objekt Stöds inte dynamic, bool, long, datetime, byte array, real, double, string
samling Det går inte att mata ut matrissträngen Det går inte att mata ut matrissträngen JSON-objekt Stöds inte dynamisk, sträng