Share via


CREATE TABLE (Analisi di flusso)

L'istruzione CREATE TABLE viene usata per definire lo schema del payload degli eventi in ingresso in Analisi di flusso di Azure. In questo modo, l'utente può definire in modo esplicito i tipi di dati di ogni colonna denominata per il payload degli eventi in arrivo. In questo modo si informerà il processo dello schema di input e si impedirà l'inferenza del tipo.

Nota

Per confrontare le diverse opzioni disponibili per la conversione dei tipi, vedere Cast dei dati

È importante comprendere che CREATE TABLE non crea effettivamente alcuna tabella. CREATE TABLE definisce solo il tipo di dati di ogni colonna nel payload di un alias di input. Questo alias di input è quello creato nella sezione "Aggiungi input" del portale. In assenza di questa dichiarazione, il compilatore dedurrà il tipo di dati delle colonne.

In caso di errori di conversione, CREATE TABLE consentirà di eliminare le righe dal flusso. Le righe in errore verranno spostate nei log di diagnostica con la classificazione seguente:

"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"

Ciò significa che CREATE TABLE non può essere usato per convertire i tipi tra il formato originale (CSV, JSON.) e quelli nuovi. CREATE TABLE può essere usato solo per informare esplicitamente il compilatore dei tipi previsti, in modo che le deviazioni possano essere rimosse dal flusso. Se è necessario eseguire una conversione, deve essere eseguita in un passaggio successivo della query usando CAST o TRY_CAST.

Sintassi

CREATE TABLE   
    table_name   
    ( column_name <data_type> [ ,...n ] );  
  

Argomenti

  • table_name

    Nome del flusso di input da cui provengono i dati. Questo nome deve corrispondere all'alias di input creato nella sezione "Aggiungi input" del portale di Analisi di flusso di Azure.

  • column_name

    Nome della colonna nel payload dell'evento in arrivo. Se non sono presenti nomi di colonna nel payload, i nomi predefiniti di column1, column2, ... vengono generati dal sistema e devono essere usati qui nell'istruzione CREATE TABLE.

  • data_type

    Tipi di dati supportati da Analisi di flusso di Azure. Vedere Tipi di dati (Analisi di flusso di Azure).

Esempio

Con lo schema di input seguente (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
  }

È possibile usare l'istruzione CREATE TABLE seguente:

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)