Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
✅ 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 |