Condividi tramite


CREA TABELLA

✅ Flusso di eventi dell'infrastruttura di Analisi ✅ di flusso di Azure

L'istruzione CREATE TABLE viene usata per definire lo schema del payload degli eventi in arrivo 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 ingresso. In questo modo si informerà il processo dello schema di input e si impedirà l'inferenza del tipo.

Annotazioni

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 tale dichiarazione, il compilatore dedurrà il tipo di dati delle colonne.

In caso di errori di conversione, CREATE TABLE esporterà 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 non è possibile usare CREATE TABLE 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

  • nome_tabella

    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 ingresso. 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.

  • tipo di dati

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

Esempi

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)