Panoramica su Kusto Query Language (KQL)
Kusto Query Language è un potente strumento per esplorare i tuoi dati e scoprire modelli, identificare anomalie e valori anomali, creare modelli statistici e altro ancora.
Cos' è una query Kusto?
Una query Kusto è una richiesta di sola lettura per elaborare dati e restituire risultati. La richiesta è indicata in testo semplice, utilizzando un modello di flusso di dati facile da leggere, creare e automatizzare. Le query Kusto sono costituite da una o più istruzioni di query.
Cos' è un'istruzione query?
Esistono due tipi di istruzioni Query utente
- Un' istruzione di espressione tabulare
- A [ let statement] - Attualmente non supportato, vedi Differenza di supporto.
Il tipo più comune di istruzione della query è un'espressione tabulare istruzione, che indica che sia l'input che l'output sono costituiti da tabelle o dataset tabulari. Le istruzioni tabulari contengono zero o più operatori, ognuno dei quali inizia con un input tabulare e restituisce un output tabulare. Gli operatori sono ordinati in sequenza da un | (pipe). I dati fluiscono, o vengono trasmessi, da un operatore all'altro. I dati vengono filtrati o manipolati ad ogni fase e quindi inseriti nella fase successiva.
È come un imbuto, dove si inizia con un'intera tabella di dati. Ogni volta che i dati passano attraverso un altro operatore, vengono filtrati, riorganizzati o riepilogati. Poiché il pipe delle informazioni da un operatore all'altro è sequenziale, l'ordine dell'operatore della query è importante e può influire sia sui risultati che sulle prestazioni. Alla fine dell'imbuto, si viene lasciati con un output raffinato.
Si osservi una query di esempio. Si noti che KQL è sensibile al maiuscolo / minuscolo per ogni elemento - nomi di tabelle, nomi di colonne di tabelle, operatori, funzioni e così via.
events_all
| project original_time, user_id
| where original_time > ago(5m) and user_id contains "user"
| count
Risultati
| Quantità |
|---|
| 28 |
Questa query ha una singola istruzione di espressione tabulare. L'istruzione inizia con un riferimento a una tabella denominata events_all. Questa semplice istruzione significa davvero, andare a recuperare tutti i dati per tutto il tempo, senza vincoli. Anche se molto utile, è molto costoso quindi deve essere vincolato con ulteriori operatori in ogni momento.
events_all
La seconda istruzione è di applicare l'operatore project per specificare solo le colonne a cui si è interessati. Nel caso di events_all, ci sono più di 400 colonne e sono necessarie solo 2 per completare questa query in modo che includendo le altre si avrebbe un costo enorme senza alcun vantaggio. Includi sempre un'istruzione del progetto.
| project original_time, user_id
La terza istruzione si applica a dove per vincolare i dati nella proiezione specificando un elenco di predicati. Di seguito, si indica che sono necessari solo record generati da origini dati negli ultimi cinque minuti E user_id contiene i caratteri "user".
| where original_time > ago(5m) and user_id contains "user"
Questa query può anche essere scritta per interrompere l'istruzione logica and su due righe. Questo è utile per la chiarezza e gioca sulla forza della natura altamente iterativa di KQL. Una considerazione qui quando si utilizzano più clausole where , è un'istruzione and implicita. Questi due esempi di where sono identici.
| where original_time > ago(5m)
| where user_id contains "user"
L'istruzione finale applica il conteggio. Questo prende tutti i record corrispondenti dalla clausola where ed esegue una semplice aggregazione. L'output è una tabella con un singolo valore long.
| count
| Quantità |
|---|
| 28 |