Datentypen (Azure Stream Analytics)
In Azure Stream Analytics verfügt jeder Datensatz über einen zugehörigen Datentyp. Ein Datentyp beschreibt (und schränkt) den Satz von Werten ein, den ein Datensatz dieses Typs enthalten kann oder einen Ausdruck dieses Typs erzeugen kann.
Bitte beachten Sie, dass es sich um Datensätze handelt, die einen Typ und keine Spalten haben. Jeder Datensatz einer Spalte kann einen anderen Typ aufweisen. Wenn dies für die meisten Anwendungen transparent ist, ermöglicht dies eine einfache Behandlung von Schemadriftszenarien und anderen ungewöhnlichen Typisierungsmustern.
Unterstützte Datentypen
Es folgt die Liste der unterstützten Datentypen.
Datentyp | Beschreibung |
---|---|
BIGINT | Ganze Zahlen im Bereich von -2^63 (-9.223.372.036.854.775.808) bis 2^63-1 (9.223.372.036.854.775.807). |
float | Gleitkommazahlen im Bereich von -1,79E+308 bis -2,23E-308, 0 und 2,23E-308 bis 1,79E+308. Für Gleitkomma-Dezimalwerte gibt es in der Regel keine genaue binäre Darstellung. Ein Genauigkeitsverlust kann auftreten. Dies ist nicht spezifisch für Azure Stream Analytics, sondern tritt in allen Gleitkommazahlenimplementierungen auf. |
nvarchar(max) | Aus Unicode-Zeichen bestehende Textwerte. Hinweis: Ein anderer Wert als max wird nicht unterstützt. |
datetime | Definiert ein Datum, das mit einer Tageszeit mit Sekundenbruchteilen (7 Ziffern, 100 Nanosekundengenauigkeit) kombiniert wird, die auf einer 24-Stunden-Uhr und relativ zu UTC (Zeitzonenoffset 0) basiert. |
bit | Eine ganze Zahl, die den Wert 1, 0 oder NULL annehmen kann. Dies wird in Kompatibilitätsgrad 1.2 und höher unterstützt. |
Datensatz (record) | Eine Gruppe von Name-Wert-Paaren. Werte müssen den unterstützten Datentyp haben. |
array | Geordnete Auflistung von Werten. Werte müssen den unterstützten Datentyp haben. |
Sie können einen bigint- und einen float-Datentyp verknüpfen (oder vergleichen). Es funktioniert in allen Fällen ordnungsgemäß, mit Ausnahme der sehr großen Bigint-Werte, die nicht dargestellt werden können.
Hinweis
Wenn Bigint-Datentypen außerhalb des Bereichs gelesen werden, unterstützt Azure Stream Analytics, kann Ihr Stream Analytics-Auftrag die Ereignisse nicht mit der Fehlermeldung "InputDeserializationError" deserialisieren. Sie können die Daten vorverarbeiten und in eine Zeichenfolge konvertieren. Eine Option ist die Verwendung von Azure-Funktionen, um die Daten vorzuverarbeiten und solche großen ganzen Zahlen in Zeichenfolge zu konvertieren.
Typkonvertierungen
Dies sind die Regeln für Datentypkonvertierungen:
- Die Konvertierung ohne Genauigkeitsverlust bei Eingabe-Lese- und Ausgabeschreibvorgängen ist implizit und ist immer erfolgreich
- Genauigkeitsverluste und Überläufe innerhalb von Ausgabeschreibvorgängen werden von der konfigurierten Fehlerrichtlinie behandelt (entweder auf "Löschen" oder "Wiederholen" festgelegt).
- Typkonvertierungsfehler, die bei Ausgabeschreibvorgängen auftreten, werden von der Fehlerrichtlinie behandelt.
- Typkonvertierungsfehler, die bei Eingabelesevorgängen auftreten, führen dazu, dass der Auftrag das Ereignis ablöscht
Beim Konvertieren von Werten in float kann ein Genauigkeitsverlust auftreten. Es ist nicht spezifisch für Azure Stream Analytics, sondern für den float-Datentyp im Allgemeinen. Daher wird es nicht als Fehler betrachtet. Wenn jede Ziffer beibehalten werden muss, sollten die Daten als Zeichenfolge gelesen werden.
Daten umwandeln
Es gibt vier Funktionen in der Streaming-SQL-Sprache, die zum Beobachten und Anpassen des Datentyps Ihrer Daten nützlich sind.
- CAST : Umwandlung einer einzelnen Spalte in einen bestimmten Typ – schlägt bei einem Konvertierungsfehler für den Auftrag fehl.
-
TRY_CAST : Wandeln Sie eine einzelne Spalte in einen bestimmten Typ um. Fehler werden als NULL ausgeführt. Informationen zur optimalen Verwendung finden Sie unter Eingabeüberprüfung .
TRY_CAST
- CREATE TABLE : Definieren Sie ein einzelnes explizites Schema für eine Eingabe. Zeilen mit Konvertierungsfehlern werden aus dem Stream entfernt.
- GetType : Gibt den Typ einer Spalte zurück.
Für die meisten Anwendungsfälle empfiehlt es sich, TRY_CAST zu verwenden. Diese Funktion schützt die nachgelagerte Verarbeitung, indem sie den Ausgabetyp sicherstellt, während der Verlust von Daten verhindert wird, indem der Fehlerwert durch NULL ersetzt wird. Die Zeile wird nicht gelöscht, und dieser ursprüngliche Wert kann weiterhin in eine andere Spalte projiziert werden.
Um starke Garantien zu gewährleisten, wird die Verwendung von CREATE TABLE empfohlen. Dieser Ansatz ermöglicht es, den Auftrag des Schemas einer bestimmten Eingabe ohne Abweichungsrisiko zu informieren. Der Kompromiss besteht darin, dass nur ein einzelnes Schema für eine bestimmte Eingabe definiert werden kann und nicht kompatible Zeilen gelöscht werden.
Wenn möglich, sollten alle Umwandlungsvorgänge explizit über diese Funktionen und nicht implizit (unbeaufsichtigt) in anderen Funktionen durchgeführt werden. Dadurch werden Typkonflikten, unerwartete Verhaltensweisen und Einfügefehler für stark typisierte Ausgaben wie SQL-Datenbanken vermieden. Informationen zum Schutz der Hauptabfragelogik vor solchen Fehlern finden Sie unter Eingabeüberprüfung .
Konvertierung in Bit
Werte werden mit den folgenden Regeln zwischen float und bit konvertiert:
From | Beschreibung |
---|---|
(BIT) 1 | (FLOAT) 1.0 |
(BIT) 0 | (FLOAT) 0,0 |
(BIT) NULL | (FLOAT) NULL |
(FLOAT) 0,0 | (BIT) 0 |
(FLOAT) beliebige andere Werte | (BIT) 1 |
(FLOAT) NULL | (BIT) NULL |
Typzuordnungen und Serialisierungsformate
Datentyp | CSV in | CSV-Out | JSON in | JSON-Out | Avro in | Avro out |
---|---|---|---|---|---|---|
bigint | Zeichenfolge, die in eine 64-Bit-Ganzzahl mit Vorzeichen konvertiert wird | 64-Bit-ganzzahl mit Vorzeichen, die mithilfe der Auftragskultur in eine Zeichenfolge konvertiert wurde | Zahl: Ganze Zahl in 64-Bit-Ganzzahl mit Vorzeichen konvertiert; Boolean: In Kompatibilitätsgrad 1.1 und niedriger wird "false" in 0 konvertiert, "true" wird in 1 konvertiert |
Zahl: ganzzahl | long und int in 64-Bit-Ganzzahl mit Vorzeichen konvertiert; Boolean: In Kompatibilitätsgrad 1.1 und darunter wird false in 0 konvertiert, true wird in 1 konvertiert. |
long |
float | In eine 64-Bit-Gleitkommazahl konvertierte Zeichenfolge | 64-Bit-Gleitkommazahl mit Vorzeichen, die mithilfe der Auftragskultur in eine Zeichenfolge konvertiert wird | number: In 64-Bit-Gleitkommazahl konvertierter Bruchteil | Zahl: Bruch | In eine 64-Bit-Gleitkommazahl konvertierte "double"- und "float"-Werte | double |
nvarchar(max) | Zeichenfolge | Zeichenfolge | Zeichenfolge | Zeichenfolge | Zeichenfolge | Zeichenfolge |
datetime | In Datum/Uhrzeit gemäß ISO 8601-Standard konvertierte Zeichenfolge | Zeichenfolge mit ISO 8601-Standard | In Datum/Uhrzeit gemäß ISO 8601-Standard konvertierte Zeichenfolge | In eine Zeichenfolge gemäß ISO 8601-Standard konvertierte Angabe von Datum/Uhrzeit | In Datum/Uhrzeit gemäß ISO 8601-Standard konvertierte Zeichenfolge | In eine Zeichenfolge gemäß ISO 8601-Standard konvertierte Angabe von Datum/Uhrzeit |
Bit (Kompatibilitätsgrad 1.2 und höher) | Die Zeichenfolge "true", "false" oder "null" wird entsprechend in den ganzzahligen Wert 1, 0 oder NULL konvertiert. | in die Zeichenfolge "true" oder "false" konvertiert | Boolescher Wert: "false" wird in 0 konvertiert, "true" wird in 1 konvertiert. | Boolescher Wert: Boolescher Wert | Boolean: false wird in 0 konvertiert, true wird in 1 konvertiert. | boolean |
record | – | Nicht unterstützt, die Zeichenfolge "Record" wird ausgegeben. | JSON-Objekt | JSON-Objekt | Avro-Datensatztyp | Avro-Datensatztyp |
array | – | Nicht unterstützt, die Zeichenfolge "Array" wird ausgegeben. | JSON-Objekt | JSON-Objekt | Avro-Datensatztyp | Avro-Datensatztyp |
Hinweis
Für Parquet ist keine Datentypkonvertierung erforderlich.
Typzuordnung beim Schreiben in strukturierte Datenspeicher
Datentyp | SQL | Power BI | Azure Cosmos DB | PostgreSQL | Azure-Daten-Explorer |
---|---|---|---|---|---|
bigint | bigint, int, smallint, tinyint, alle Zeichenfolgentypen (ntext, nvarchar, char, ...) | ja | numeric: integer | BIGINT | dynamic, int, long |
float | float, real, decimal, numeric, all string types ( ntext, nvarchar, char, ...) | ja | Zahl: Bruch | doppelte Genauigkeit, numerisch. Beschränkt auf 1,78E+308 | dynamisch, real, doppelt |
nvarchar(max) | Alle Zeichenfolgentypen (ntext, nvarchar, char, uniqueidentifier...) | ja | Zeichenfolge | Zeichen variierend, Text | dynamisch, Zeichenfolge |
datetime | datetime, datetime2, datetimeoffset, alle Zeichenfolgentypen ( ntext, nvarchar, char, ...) | ja | In eine Zeichenfolge gemäß ISO 8601-Standard konvertierte Angabe von Datum/Uhrzeit | Zeitstempel, Uhrzeit. Option "Zeitzone" wird unterstützt, aber es wird keine Zeitzone bereitgestellt. | dynamic, string, datetime |
Bit (Kompatibilitätsgrad 1.2 und höher) | bigint, int, smallint, tinyint, bit, alle Zeichenfolgentypen (ntext, nvarchar, char, ...) | ja | Boolescher Wert: 1 wird in true, 0 in false konvertiert. | bit | dynamic, bool |
record | Nicht unterstützt, die Zeichenfolge "Record" wird ausgegeben. | Nicht unterstützt, die Zeichenfolge "Record" wird ausgegeben. | JSON-Objekt | Nicht unterstützt | dynamic, bool, long, datetime, byte array, real, double, string |
array | Nicht unterstützt, die Zeichenfolge "Array" wird ausgegeben. | Nicht unterstützt, die Zeichenfolge "Array" wird ausgegeben. | JSON-Objekt | Nicht unterstützt | dynamisch, Zeichenfolge |