Informazioni di riferimento sul linguaggio di query per l'analisi di flusso

Analisi di flusso di Azure offre un linguaggio di query SQL per l'esecuzione di trasformazioni e calcoli su flussi di eventi.

Linguaggio di query di Analisi di flusso, un subset della sintassi T-SQL

Questo documento illustra la sintassi, l'utilizzo e le procedure consigliate per il linguaggio di query di Analisi di flusso. Tutti gli esempi usati in questo documento si basano su uno scenario di tipo casello, come illustrato di seguito.

Il linguaggio di query di Analisi di flusso è un subset della sintassi T-SQL standard per l'esecuzione di calcoli di streaming.

Scenario di tipo casello

Un casello è un fenomeno comune, presente in molte autostrade, ponti e gallerie in tutto il mondo. Ogni casello include più cabine, che possono essere manuali, ovvero ci si ferma per pagare il pedaggio a un addetto, oppure automatiche, in cui un sensore posizionato nella parte superiore della barriera analizza una scheda RFID posizionata sul parabrezza del veicolo durante il superamento della barriera. È semplice visualizzare il passaggio dei veicoli nei caselli come un flusso di eventi, sui quali è possibile eseguire alcune operazioni interessanti.

Confronto tra ora di arrivo e tempo applicazione

In qualsiasi sistema temporale come Analisi di flusso di Azure è essenziale comprendere il passare del tempo. Ogni evento che scorre attraverso il sistema include un timestamp a cui è possibile accedere tramite System.Timestamp(). In altre parole ogni evento nel sistema rappresenta un momento specifico. Il timestamp può corrispondere a un tempo applicazione che può essere specificato dall'utente nella query oppure che può essere assegnato dal sistema in base all'ora di arrivo. L'ora di arrivo ha significati diversi a seconda delle origini di input. Per gli eventi dell'hub eventi di Azure, l'ora di arrivo è il timestamp specificato dall'hub eventi; per l'archiviazione BLOB, è l'ultima volta modificata del BLOB. Il timestamp è il punto nel tempo rilevante per l'acquisizione o l'analisi dei dati. Se l'utente vuole usare un tempo dell'applicazione, può farlo usando la parola chiave TIMESTAMP BY . Nello scenario precedente corrisponde all'accesso del veicolo al casello. È fondamentale identificare il "timestamp" nel flusso di dati in ingresso, è necessario assicurarsi che l'ora acquisita conferma anche l'occorrenza di un evento. Ad esempio, se si monitora i contatori di cassa e si vuole contare il numero di clienti fatturati, idealmente il timestamp dell'evento deve essere "pagamento riuscito" anziché "fattura generata" ora.

TIMESTAMP BY

In Analisi di flusso di Azure tutti gli eventi hanno un timestamp ben definito. Se l'utente vuole usare il tempo dell'applicazione, può usare la parola chiave TIMESTAMP BY per specificare la colonna nel payload che deve essere usata per timestampare ogni evento in ingresso per eseguire qualsiasi calcolo temporale, ad esempio Windowing, Join e così via. È consigliabile usare TIMESTAMP BY nel tempo di arrivo come procedura consigliata. La parola chiave TIMESTAMP BY può essere usata su qualsiasi colonna di tipo datetime e sono supportati tutti i formati ISO 8601. System.Timestamp() può essere usato solo in Select.

L'esempio seguente è relativo a TIMESTAMP BY e usa la colonna EntryTime come tempo applicazione per gli eventi:

  
SELECT TollId, EntryTime AS VehicleEntryTime, LicensePlate, State, Make, Model, VehicleType, VehicleWeight, Toll, Tag   
FROM TollTagEntry TIMESTAMP BY EntryTime  
  

Distinzione tra maiuscole e minuscole per i nomi di campo

I nomi di campo per un processo creato usando il livello di compatibilità 1.0 vengono modificati in maiuscole minuscole (senza distinzione tra maiuscole e minuscole) quando vengono elaborati dal motore di Analisi di flusso di Azure. Per i formati di input che supportano lo schema con distinzione tra maiuscole e minuscole, ad esempio JSON, è possibile costruire eventi con campi duplicati quando i nomi dei campi vengono confrontati in modo insensibile. Tali eventi vengono considerati non validi ed eliminati durante l'elaborazione.

La distinzione tra maiuscole e minuscole viene mantenuta per i nomi di campo quando il processo di Analisi di flusso viene creato usando il livello di compatibilità 1.1 o superiore. Per altre informazioni, vedere l'argomento Configura livello di compatibilità .

Contenuto della sezione

Per informazioni dettagliate sull'uso del linguaggio di query di Analisi di flusso, fare riferimento agli argomenti seguenti.

Vedere anche