Delen via


Gegevenstypen

✅ Azure Stream Analytics ✅ Fabric Eventstream

Elke record heeft een gerelateerd gegevenstype. Een gegevenstype beschrijft (en beperkingen) de set waarden die een record van dat type kan bevatten of een expressie van dat type kan produceren.

Houd er rekening mee dat het records zijn met een type en niet kolommen. Elke record van een kolom kan een ander type hebben. Als dit transparant is voor de meeste toepassingen, is het eenvoudig om schemadriftscenario's en andere ongebruikelijke typepatronen te verwerken.

Ondersteunde gegevenstypen

Hieronder ziet u de lijst met ondersteunde gegevenstypen.

Gegevenstype Beschrijving
Bigint Gehele getallen in het bereik -2^63 (-9.223.372.036.854.775.808) tot 2^63-1 (9.223.372.036.854.775.807).
zweven Drijvende kommanummers in het bereik - 1,79E+308 tot -2,23E-308, 0 en 2.23E-308 tot 1,79E+308. Decimale waarden voor drijvende komma hebben over het algemeen geen exacte binaire weergave. Verlies van precisie kan worden ervaren. Dit is niet specifiek voor Azure Stream Analytics, maar vindt plaats in alle drijvendekommagetal-implementaties.
nvarchar(max) Tekstwaarden, bestaande uit Unicode-tekens. Opmerking: een andere waarde dan max wordt niet ondersteund.
datum/tijd Definieert een datum die wordt gecombineerd met een tijd van de dag met fractionele seconden (7 cijfers, 100 nanoseconden precisie) die is gebaseerd op een klok van 24 uur en ten opzichte van UTC (tijdzoneverschil 0).
beetje Een geheel getal dat een waarde van 1, 0 of NULL kan aannemen. Dit wordt ondersteund in compatibiliteitsniveau 1.2 en hoger.
verslag / opname Set naam-/waardeparen. Waarden moeten van het ondersteunde gegevenstype zijn.
gegevensreeks Geordende verzameling waarden. Waarden moeten van het ondersteunde gegevenstype zijn.

U kunt een bigint en een float-gegevenstype samenvoegen (of vergelijken). Het werkt in alle gevallen correct, behalve in het geval van de zeer grote bigint-waarden die niet kunnen worden weergegeven.

Opmerking

Wanneer u bigint-gegevenstypen buiten het bereik leest, ondersteunt Azure Stream Analytics dat uw Stream Analytics-taak deserialiseert de gebeurtenissen met het foutbericht InputDeserializationError. U kunt de gegevens vooraf verwerken en converteren naar een tekenreeks. Een optie is het gebruik van Azure-functies om de gegevens vooraf te verwerken en dergelijke grote gehele getallen te converteren naar een tekenreeks.

Typeconversies

Dit zijn de regels voor conversies van gegevenstypen:

  • Conversie zonder precisieverlies tijdens invoerbewerkingen voor lezen en schrijven van uitvoer is impliciet en is altijd succesvol
  • Precisieverlies en overloop binnen uitvoerschrijfbewerkingen worden verwerkt door geconfigureerd foutbeleid (ingesteld op Verwijderen of Opnieuw proberen)
  • Typeconversiefouten tijdens uitvoerschrijfbewerkingen worden verwerkt door het foutbeleid
  • Typeconversiefouten die optreden tijdens invoerleesbewerkingen, zorgen ervoor dat de taak de gebeurtenis laat vallen

Een verlies van precisie kan optreden bij het converteren van waarden naar float. Het is niet specifiek voor Azure Stream Analytics, maar voor het gegevenstype float in het algemeen. Daarom wordt het niet beschouwd als een fout. In het geval dat elk cijfer moet worden bewaard, moeten de gegevens worden gelezen als tekenreeks.

Gegevens casten

Er zijn vier functies in de streaming-SQL-taal die handig zijn voor het observeren en aanpassen van het gegevenstype van uw gegevens.

  • CAST : cast een enkele kolom naar een bepaald type - mislukt de taak in geval van conversiefout
  • TRY_CAST : een enkele kolom casten naar een bepaald type: fouten worden als NULL doorgegeven. Zie invoervalidatie voor het beste gebruik TRY_CAST
  • CREATE TABLE : definieer één expliciet schema voor een invoer. Rijen met conversiefouten worden verwijderd uit de stream
  • GetType : retourneert het type kolom

Voor de meeste gebruiksvoorbeelden is de aanbevolen optie om TRY_CAST te gebruiken. Deze functie beveiligt downstreamverwerking door ervoor te zorgen dat het uitvoertype wordt uitgevoerd, terwijl het verlies van gegevens wordt voorkomen door de foutwaarde te vervangen door NULL. De rij wordt niet verwijderd en de oorspronkelijke waarde kan nog steeds in een andere kolom worden geprojecteerd.

Voor sterke garanties is de aanbevolen optie om CREATE TABLE te gebruiken. Met deze methode kunt u de taak van het schema van een bepaalde invoer informeren, zonder risico op afwijking. De afweging is dat slechts één schema kan worden gedefinieerd voor een bepaalde invoer en niet-compatibele rijen worden verwijderd.

Indien mogelijk moeten alle cast-bewerkingen expliciet via deze functies worden uitgevoerd, in plaats van impliciet (stil) in andere functies. Dit voorkomt dat het type niet overeenkomt, onverwacht gedrag en invoegfouten voor sterk getypte uitvoer, zoals SQL-databases. Zie invoervalidatie voor het beveiligen van de hoofdquerylogica tegen dergelijke fouten.

Conversie naar bit

Waarden worden geconverteerd tussen float en bit met de volgende regels:

Van Tot
(BIT) 1 (FLOAT) 1,0
(BIT) 0 (FLOAT) 0,0
(BIT) NUL (FLOAT) NUL
(FLOAT) 0,0 (BIT) 0
(FLOAT) elke andere waarde (BIT) 1
(FLOAT) NUL (BIT) NUL

Typetoewijzingen en serialisatie-indelingen

Gegevenstype CSV in CSV-bestand uit JSON in JSON-out Avro in Avro uit
bigint tekenreeks geconverteerd naar 64-bits ondertekend geheel getal 64-bits ondertekend geheel getal geconverteerd naar tekenreeks met behulp van taakcultuur getal: geheel getal geconverteerd naar 64-bits ondertekend geheel getal;

Booleaanse waarde: in compatibiliteitsniveau 1.1 en onder 'false' wordt geconverteerd naar 0, wordt 'true' geconverteerd naar 1
getal: geheel getal lang en int geconverteerd naar een geheel getal met 64 bitstekens;

Booleaanse waarde: in compatibiliteitsniveau 1.1 en onder false wordt geconverteerd naar 0, waar wordt geconverteerd naar 1
lang
drijven tekenreeks geconverteerd naar 64-bits tekenpuntnummer 64-bits tekenpuntnummer geconverteerd naar tekenreeks met behulp van taakcultuur getal: breuk geconverteerd naar 64-bits tekenpuntnummer getal: breuk dubbele en float geconverteerd naar 64-bits tekenpuntnummer dubbel
nvarchar(max) touw touw touw touw touw touw
datum en tijd tekenreeks geconverteerd naar datum/tijd volgens ISO 8601-standaard tekenreeks met ISO 8601-standaard tekenreeks geconverteerd naar datum/tijd volgens ISO 8601-standaard datum/tijd geconverteerd naar tekenreeks met ISO 8601-standaard tekenreeks geconverteerd naar datum/tijd volgens ISO 8601-standaard datum/tijd geconverteerd naar tekenreeks met ISO 8601-standaard
bit (compatibiliteitsniveau 1.2 en hoger) tekenreeks 'true', 'false' of 'null' wordt geconverteerd naar een geheel getal 1, 0 of null. geconverteerd naar tekenreeks 'true' of 'false' Booleaanse waarde: 'false' wordt geconverteerd naar 0, 'true' wordt geconverteerd naar 1 Booleaanse waarde: Booleaanse waarde Booleaanse waarde: onwaar wordt geconverteerd naar 0, waar wordt geconverteerd naar 1 booleaan
record Niet van toepassing. Niet ondersteund, tekenreeks 'Record' wordt uitgevoerd JSON-object JSON-object Avro-recordtype Avro-recordtype
array Niet van toepassing. Niet ondersteund, de tekenreeks 'Matrix' wordt uitgevoerd JSON-object JSON-object Avro-recordtype Avro-recordtype

Opmerking

Er is geen conversie van gegevenstypen nodig voor Parquet.

Typetoewijzing bij het schrijven naar gestructureerde gegevensarchieven

Gegevenstype SQL Power BI Azure Cosmos DB PostgreSQL Azure-gegevensverkenner
bigint bigint, int, smallint, tinyint, alle tekenreekstypen (ntext, nvarchar, char, ...) ja numeriek: geheel getal Bigint

Als het kolomtype klein of geheel getal is, treedt de fout 'onjuiste binaire gegevensindeling' op.
dynamisch, int, lang
drijven float, real, decimal, numeriek, all string types ( ntext, nvarchar, char, ...) ja getal: breuk dubbele precisie, numeriek. Beperkt tot 1,78E+308

Als het kolomtype echt is, treedt de fout 'onjuiste binaire gegevensindeling' op.
dynamisch, echt, dubbel
nvarchar(max) Alle tekenreekstypen (ntext, nvarchar, char, uniqueidentifier...) ja touw teken variëren, tekst dynamisch, tekenreeks
datum en tijd datetime, datetime2, datetimeoffset, alle tekenreekstypen (ntext, nvarchar, char, ...) ja datum/tijd geconverteerd naar tekenreeks met ISO 8601-standaard timestamptz voor UTC-tijdstempel, tijdstempel anders dynamisch, tekenreeks, datum/tijd
bit (compatibiliteitsniveau 1.2 en hoger) bigint, int, smallint, tinyint, bit, alle tekenreekstypen (ntext, nvarchar, char, ...) ja Booleaanse waarde: 1 wordt geconverteerd naar waar, 0 geconverteerd naar onwaar beetje dynamisch, bool
record Niet ondersteund, tekenreeks 'Record' wordt uitgevoerd Niet ondersteund, tekenreeks 'Record' wordt uitgevoerd JSON-object Niet ondersteund dynamic, bool, long, datetime, byte array, real, double, string
array Niet ondersteund, de tekenreeks 'Matrix' wordt uitgevoerd Niet ondersteund, de tekenreeks 'Matrix' wordt uitgevoerd JSON-object Niet ondersteund dynamisch, tekenreeks