Esercitazione: Informazioni sugli operatori comuni

Linguaggio di query Kusto (KQL) viene usato per scrivere query in Azure Esplora dati, Log Analytics di Monitoraggio di Azure, Azure Sentinel e altro ancora. Questa esercitazione è un'introduzione agli operatori KQL essenziali usati per accedere e analizzare i dati.

Per indicazioni più specifiche su come eseguire query sui log in Monitoraggio di Azure, vedere Introduzione alle query di log.

Nota

Le informazioni cercate non sono disponibili? Questo articolo è stato diviso di recente, come segue:

In questa esercitazione si apprenderà come:

Gli esempi di questa esercitazione usano la StormEvents tabella, disponibile pubblicamente nel cluster della Guida. Per esplorare con i propri dati, creare un cluster gratuito.

Prerequisiti

  • Un account Microsoft o un'identità utente di Microsoft Entra per accedere al cluster della Guida

Conteggio righe

Iniziare usando l'operatore count per trovare il numero di record storm nella StormEvents tabella.

StormEvents 
| count

Output

Conteggio
59066

Vedere un esempio di dati

Per ottenere un'idea dei dati, usare l'operatore take per visualizzare un esempio di record. Questo operatore restituisce un numero specificato di righe arbitrarie dalla tabella, che può essere utile per visualizzare in anteprima la struttura e il contenuto dei dati generali.

StormEvents 
| take 5

La tabella seguente mostra solo 6 delle 22 colonne restituite. Per visualizzare l'output completo, eseguire la query.

StartTime EndTime EpisodioId EventId State EventType ...
2007-09-20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 FLORIDA Tornado ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 MISSISSIPPI Vento di tempesta ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEORGIA Vento di tempesta ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 SUD ATLANTICO Tromba marina ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Pioggia intensa ...

Selezionare un subset di colonne

Usare l'operatore di progetto per semplificare la visualizzazione e selezionare un subset specifico di colonne. L'uso project è spesso più efficiente e più facile da leggere rispetto alla visualizzazione di tutte le colonne.

StormEvents
| take 5
| project State, EventType, DamageProperty

Output

State EventType DanniProperty
SUD ATLANTICO Tromba marina 0
FLORIDA Pioggia intensa 0
FLORIDA Tornado 6200000
GEORGIA Vento di tempesta 2000
MISSISSIPPI Vento di tempesta 20000

Elencare valori univoci

Sembra che siano presenti più tipi di tempeste in base ai risultati della query precedente. Usare l'operatore distinct per elencare tutti i tipi storm univoci.

StormEvents 
| distinct EventType

Nella tabella sono presenti 46 tipi di tempeste. Ecco un campione di 10 di essi.

EventType
Vento di tempesta
Grandine
Piena improvvisa
Siccità
Meteo invernale
Tempesta invernale
Nevicate
Vento forte
Gelo/Gelo
Alluvione
...

Filtra per condizione

L'operatore where filtra le righe di dati in base a determinati criteri.

La query seguente cerca gli eventi storm in una specifica State di un oggetto specifico EventType.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| project StartTime, EndTime, State, EventType, DamageProperty

Esistono 146 eventi che soddisfano queste condizioni. Ecco un campione di 5 di essi.

StartTime EndTime State EventType DamageProperty
2007-01-13T08:45:00Z 2007-01-13T10:30:00Z TEXAS Alluvione 0
2007-01-13T09:30:00Z 2007-01-13T21:00:00Z TEXAS Alluvione 0
2007-01-13T09:30:00Z 2007-01-13T21:00:00Z TEXAS Alluvione 0
2007-01-15T22:00:00Z 2007-01-16T22:00:00Z TEXAS Alluvione 20000
2007-03-12T02:30:00Z 2007-03-12T06:45:00Z TEXAS Alluvione 0
... ... ... ... ...

Ordinare i risultati

Per visualizzare le inondazioni superiori in Texas che hanno causato il maggior danno, usare l'operatore di ordinamento per disporre le righe in ordine decrescente in base alla DamageProperty colonna. L'ordinamento predefinito è decrescente. Per ordinare in ordine crescente, specificare asc.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| sort by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty

Output

StartTime EndTime State EventType DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z TEXAS Alluvione 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z TEXAS Alluvione 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z TEXAS Alluvione 1000000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z TEXAS Alluvione 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z TEXAS Alluvione 750000
... ... ... ... ...

Ottenere le prime n righe

L'operatore top restituisce le prime n righe ordinate in base alla colonna specificata.

La query seguente restituisce le cinque inondazioni del Texas che hanno causato la proprietà più danneggiata.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty

Output

StartTime EndTime State EventType DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z TEXAS Alluvione 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z TEXAS Alluvione 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z TEXAS Alluvione 1000000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z TEXAS Alluvione 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z TEXAS Alluvione 750000

Nota

L'ordine degli operatori è importante. Se si inserisce top prima where di qui, si otterranno risultati diversi. Ciò è dovuto al fatto che i dati vengono trasformati da ogni operatore in ordine. Per altre informazioni, vedere istruzioni di espressioni tabulari.

Creare colonne calcolate

Gli operatori di progetto ed estensione possono creare colonne calcolate.

Utilizzare project per specificare solo le colonne da visualizzare e usare extend per aggiungere la colonna calcolata alla fine della tabella.

La query seguente crea una colonna calcolata Duration con la differenza tra e EndTimeStartTime . Poiché si vogliono visualizzare solo alcune colonne selezionate, l'uso project di è la scelta migliore in questo caso.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| project StartTime, EndTime, Duration = EndTime - StartTime, DamageProperty

Output

StartTime EndTime Duration DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z 1.01:30:00 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z 12:00:00 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z 05:00:00 1000000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z 08:00:00 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z 03:00:00 750000

Se si esamina la colonna calcolata Duration , è possibile notare che l'alluvione che ha causato il maggior danno è stata anche l'alluvione più lunga.

Utilizzare extend per visualizzare la colonna calcolata Duration insieme a tutte le altre colonne. La Duration colonna viene aggiunta come ultima colonna.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| extend Duration = EndTime - StartTime

Output

StartTime EndTime ... Durata
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z ... 1.01:30:00
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z ... 12:00:00
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z ... 05:00:00
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z ... 08:00:00
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z ... 03:00:00

Eseguire il mapping dei valori da un set a un altro

Il mapping statico è una tecnica utile per modificare la presentazione dei risultati. In KQL, un modo per eseguire il mapping statico consiste nell'usare un dizionario dinamico e le funzioni di accesso per eseguire il mapping dei valori da un set a un altro.

let sourceMapping = dynamic(
  {
    "Emergency Manager" : "Public",
    "Utility Company" : "Private"
  });
StormEvents
| where Source == "Emergency Manager" or Source == "Utility Company"
| project EventId, Source, FriendlyName = sourceMapping[Source]

Output

EventId Source FriendlyName
68796 Responsabile della gestione emergenze Pubblici
... ... ...
72609 Società di utilità Privato
... ... ...

Passaggio successivo

Ora che si ha familiarità con le nozioni di base sulla scrittura di query Kusto, passare all'esercitazione successiva e imparare a usare le funzioni di aggregazione per ottenere informazioni più approfondite sui dati.