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