CREATE TABLE (Stream Analytics)
L’instruction CREATE TABLE est utilisée pour définir le schéma de la charge utile des événements entrants dans Azure Stream Analytics. L'utilisateur peut ainsi définir explicitement les types de données de chaque colonne nommée pour la charge utile des événements entrants. Cela informera le travail du schéma d’entrée et empêchera l’inférence de type.
Notes
Pour comparer les différentes options disponibles pour la conversion de type, consultez cast des données
Il est important de comprendre que CREATE TABLE ne crée pas réellement de table. CREATE TABLE définit uniquement le type de données de chaque colonne dans la charge utile d’un alias d’entrée. Cet alias d’entrée est celui qui a été créé dans la section « Ajouter une entrée » du portail. À défaut d'une telle instruction, le compilateur déduit le type de données des colonnes.
En cas d’erreurs de conversion, CREATE TABLE supprime les lignes du flux. Les lignes en erreur sont déplacées vers les journaux de diagnostic avec la classification suivante :
"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"
Cela signifie que CREATE TABLE ne peut pas être utilisé pour convertir des types entre le format d’origine (CSV, JSON..) et les nouveaux. CREATE TABLE ne peut être utilisé que pour informer explicitement le compilateur des types à attendre, de sorte que les écarts peuvent être supprimés du flux. Si une conversion doit être effectuée, elle doit être effectuée dans une étape de requête ultérieure à l’aide de CAST ou de TRY_CAST.
Syntaxe
CREATE TABLE
table_name
( column_name <data_type> [ ,...n ] );
Arguments
table_name
Nom du flux d'entrée d'où proviennent les données. Ce nom doit correspondre à l’alias d’entrée créé dans la section « Ajouter une entrée » du portail Azure Stream Analytics.
column_name
Nom de la colonne dans la charge utile de l'événement entrant. S’il n’y a aucun nom de colonne dans la charge utile, les noms par défaut de column1, column2, ... sont générés par le système et doivent être utilisés ici dans l’instruction CREATE TABLE.
data_type
Types de données pris en charge par Azure Stream Analytics. Consultez Types de données (Azure Stream Analytics).
Exemples
Avec le schéma d’entrée (JSON) suivant :
{
"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
}
Nous pouvons utiliser l’instruction CREATE TABLE suivante :
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)