CREATE TABLE (Stream Analytics)
Die CREATE TABLE-Anweisung wird verwendet, um das Schema der Nutzlast der Ereignisse zu definieren, die in Azure Stream Analytics eingehen. Dadurch kann der Benutzer die Datentypen jeder benannten Spalte für die Nutzlast eingehender Ereignissen explizit definieren. Dadurch wird der Auftrag des Eingabeschemas informiert und ein Typrückschluss verhindert.
Hinweis
Informationen zum Vergleichen der verschiedenen verfügbaren Optionen für die Typkonvertierung finden Sie unter Umwandeln von Daten.
Es ist wichtig zu verstehen, dass CREATE TABLE keine Tabelle erstellt. CREATE TABLE definiert nur den Datentyp jeder Spalte in der Nutzlast eines Eingabealias. Dieser Eingabealias wurde im Abschnitt "Eingabe hinzufügen" des Portals erstellt. Aufgrund des Fehlens einer solchen Deklaration leitet der Compiler den Datentyp der Spalten ab.
Im Falle von Konvertierungsfehlern löscht CREATE TABLE die Zeilen aus dem Stream. Die Fehlerzeilen werden mit der folgenden Klassifizierung in die Diagnoseprotokolle verschoben:
"Type": "DataError",
"DataErrorType": "InputDeserializerError.InvalidData",
"BriefMessage": "Could not deserialize the input event(s) from resource ... . Some possible reasons: 1) Malformed events 2) Input source configured with incorrect serialization format",
"ErrorCode": "InputDeserializationError",
"ErrorCategory": "DataError"
Dies bedeutet, dass CREATE TABLE nicht verwendet werden kann, um Typen zwischen dem ursprünglichen Format (CSV, JSON..) und neuen Formaten zu konvertieren. CREATE TABLE kann nur verwendet werden, um den Compiler explizit über die zu erwartenden Typen zu informieren, sodass Abweichungen aus dem Stream entfernt werden können. Wenn eine Konvertierung durchgeführt werden muss, sollte dies in einem späteren Abfrageschritt mithilfe von CAST oder TRY_CAST erfolgen.
Syntax
CREATE TABLE
table_name
( column_name <data_type> [ ,...n ] );
Argumente
table_name
Der Name des Eingabedatenstroms, aus dem die Daten stammen. Dieser Name muss mit dem Eingabealias übereinstimmen, der im Abschnitt "Eingabe hinzufügen" des Azure Stream Analytics-Portals erstellt wurde.
column_name
Der Name der Spalte in der Nutzlast des eingehenden Ereignisses. Wenn keine Spaltennamen in der Nutzlast vorhanden sind, werden die Standardnamen column1, column2, ... werden vom System generiert und sollten hier in der CREATE TABLE-Anweisung verwendet werden.
data_type
Die Datentypen, die von Azure Stream Analytics unterstützt werden. Weitere Informationen finden Sie unter Datentypen (Azure Stream Analytics).
Beispiele
Mit dem folgenden Eingabeschema (JSON):
{
"TollId":1,
"EntryTime":"2014-09-10T12:11:00.0000000Z",
"LicensePlate":"NJB 1006",
"State":"CT",
"Make":"Ford",
"Model":"Focus",
"VehicleType":1,
"VehicleWeight":0,
"Toll":4.5,
"Tag":678912345
}
Wir können die folgende CREATE TABLE-Anweisung verwenden:
CREATE TABLE Entry (
TollId bigint,
EntryTime datetime,
LicensePlate nvarchar(max),
State nvarchar(max),
Make nvarchar(max),
Model nvarchar(max),
VehicleType bigint,
VehicleWeight float,
Toll float,
Tag bigint
);
SELECT
DATEADD(hour,-1,System.Timestamp()) AS WindowStart,
System.Timestamp AS WindowEnd,
TollId,
SUM(Toll) AS TollTotal -- guaranteed to be a float
INTO MyOutput
FROM Entry TIMESTAMP BY EntryTime -- guaranteed to be a timestamp
GROUP BY TollId, Tumbling(hour,1)