Condividi tramite


Informazioni di riferimento sul linguaggio di query di Analisi di flusso di Azure e Del linguaggio di query eventstream

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

Sottoinsieme della sintassi T-SQL

Questo documento descrive 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 casello, come descritto di seguito.

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

Scenario del casello

Una stazione di pedaggio è un fenomeno comune: li incontriamo in molte vie stradali, ponti e tunnel in tutto il mondo. Ogni stazione a pedaggio ha più caselli, che possono essere manuali, vale a dire che si ferma a pagare il pedaggio a un addetto o automatizzato, dove un sensore posizionato sopra la cabina analizza una scheda RFID affissa al parabrezza del veicolo mentre si passa il casello. È facile visualizzare il passaggio dei veicoli attraverso queste stazioni di pedaggio come flusso di eventi su cui possono essere eseguite operazioni interessanti.

Ora di arrivo e ora applicazione

In qualsiasi sistema temporale come Analisi di flusso di Azure, è essenziale comprendere lo stato di avanzamento del tempo. Ogni evento che scorre attraverso il sistema include un timestamp accessibile tramite System.Timestamp(). In altre parole, ogni evento nel nostro sistema rappresenta un punto nel tempo. Questo timestamp può essere un'ora dell'applicazione che l'utente può specificare nella query o il sistema può assegnare in base all'ora di arrivo. L'ora di arrivo ha significati diversi in base alle origini di input. Per gli eventi dell'hub eventi di Azure, l'ora di arrivo è il timestamp fornito dall'hub eventi; per l'archiviazione BLOB, è l'ora dell'ultima modifica del BLOB. Il timestamp è il punto nel tempo rilevante per l'acquisizione o l'analisi dei dati. Se l'utente vuole usare un'ora dell'applicazione, può farlo usando la parola chiave TIMESTAMP BY . Nello scenario precedente, si tratta dell'ingresso 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 uno monitora i contatori di cassa e vuole contare il numero di clienti fatturati, idealmente il timestamp dell'evento deve essere "pagamento riuscito" anziché "fatturazione generata".

TIMESTAMP DI

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. È possibile usare TIMESTAMP BY in qualsiasi colonna di tipo datetime e sono supportati tutti i formati ISO 8601. System.Timestamp() può essere usato solo in Select.

Di seguito è riportato un esempio TIMESTAMP BY che usa la colonna EntryTime come ora dell'applicazione per gli eventi:

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

Distinzione maiuscole/minuscole del nome campo

I nomi dei campi per un processo creato usando il livello di compatibilità 1.0 vengono modificati in lettere 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 senza distinzione tra maiuscole e minuscole. Tali eventi sono considerati eventi non validi e vengono eliminati durante l'elaborazione.

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

In questa sezione

Per indicazioni sull'uso del linguaggio di query di Analisi di flusso, vedere gli argomenti seguenti.

Vedere anche