Partager via


CRÉER TABLE

✅ Azure Stream Analytics ✅ Fabric Eventstream

L’instruction CREATE TABLE permet de définir le schéma de la charge utile des événements entrant dans Azure Stream Analytics. Cela permet à l’utilisateur de définir explicitement les types de données de chaque colonne nommée pour la charge utile des événements entrants. Cela informe le travail du schéma d’entrée et empêche l’inférence de type.

Remarque

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. En l’absence d’une telle déclaration, 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 d’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, afin que les écarts puissent ê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 ] );  
  

Les arguments

  • nom_de_table

    Nom du flux d’entrée à partir duquel les données proviennent. Ce nom doit correspondre à l’alias d’entrée créé dans la section « Ajouter une entrée » du portail Azure Stream Analytics.

  • nom_de_colonne

    Nom de la colonne dans la charge utile de l’événement entrant. S’il n’existe 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.

  • type_de_données

    Types de données pris en charge par Azure Stream Analytics. Consultez types de données.

Exemples

Avec le schéma d’entrée suivant (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
  }

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)