GitHubContribuisci in GitHub: Modifica in linea

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

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