Esercizio - Contare gli eventi usando la funzione count
È possibile usare una query Kusto per esplorare i set di dati e ottenere informazioni dettagliate. È disponibile un set di dati meteorologici e si vuole confrontare gli eventi per ottenere informazioni dettagliate su questi dati. Qui si scoprirà quanti eventi di un determinato tipo si sono verificati in una determinata area.
Usare la funzione count
Il database di esempio usato include una voce per ogni evento tempesta negli Stati Uniti nel 2007, per un totale di circa 60.000 record.
Per raggruppare questi eventi in blocchi di informazioni, si userà l'operatore summarize
. summarize
viene usato per tutte le funzioni che aggregano i gruppi di valori di più righe per formare un singolo valore di riepilogo. È possibile riepilogare l'intera tabella, ad esempio, contando il numero di risultati usando la query seguente:
È anche possibile riepilogare i dati in gruppi di tipi di eventi simili specificando il modo in cui si vuole raggruppare l'aggregazione. Ad esempio, per contare gli eventi in base allo stato, è possibile scrivere una query per summarize
count
tramite state
. La frase precedente è in effetti molto simile alla query stessa. Si userà la funzione di aggregazione denominata count()
, che conta il numero di righe per gruppo. Questa funzione genera una nuova colonna che fornisce il numero di eventi raggruppati per stato, rinominati all'interno della query dal nome predefinito count_ a EventCount. La ridenominazione di nuove colonne è una procedura consigliata per rendere le query e i risultati più leggibili.
Copiare e incollare la query nell'editor di query.
StormEvents | summarize EventCount = count() by State | sort by EventCount
Eseguire la query selezionando il pulsante Esegui sopra la finestra della query oppure premendo MAIUSC+INVIO.
Dovrebbero essere visualizzati risultati simili all'immagine seguente:
Usare le funzioni dcount()
e countif()
La query precedente ha restituito il numero di eventi per stato. Esistono tuttavia modi più sofisticati per contare gli eventi.
- Ad esempio, è possibile contare solo determinati tipi di eventi. La funzione
countif()
conta i record per i quali un predicato è true. La query che usacountif(DamageCrops > 0)
conta il numero di record per i quali il danno alle colture è maggiore di zero. - È anche possibile contare tipi distinti di eventi usando la funzione
dcount()
.
È stata creata una query che usa l'operatore summarize
con queste funzioni count per rispondere alle domande seguenti:
- Quanti eventi di tempesta si sono verificati in ogni stato?
- Quanti eventi in ogni stato hanno causato danni?
- Quanti tipi diversi di eventi si sono verificati in ogni stato?
Si noti che tutti gli elementi all'interno dell'operatore summarize sono separati da virgole e sono raggruppati per la stessa colonna, in questo caso State (Stato). Le colonne non denominate nell'operatore summarize
vengono eliminate. Se si desidera includere altre colonne, denominarle in base a quella in cui vengono riepilogati i dati.
Eseguire la query riportata di seguito:
StormEvents | summarize count(), EventsWithDamageToCrops = countif(DamageCrops > 0), Count = dcount(EventType) by State | sort by Count
Dovrebbero essere visualizzati risultati simili all'immagine seguente:
Si notino i nomi delle colonne nei risultati. Quale parte della query corrisponde a ciascuna colonna? È possibile notare che la funzione
dcount()
ha creato una nuova colonna e le ha assegnato il nome Count. Si noterà anche che questo nome è stato usato come colonna per l'operatoresort
nella query. Quanti tipi diversi di tempeste si sono verificati in Texas?
Usando l'operatore distinct
.
La query precedente ha restituito un conteggio distinto di 27 tipi diversi di tempeste in Texas durante il periodo di tempo coperto da questi dati. Sarebbe interessante eseguire il drill-down e vedere i nomi di tutti questi tipi di tempeste. Per visualizzare un elenco di ogni tipo di evento diverso in Texas, usare l'operatore distinct()
, che elenca i valori distinti di una determinata colonna.
Eseguire la query riportata di seguito:
StormEvents | where State == "TEXAS" | distinct EventType | sort by EventType asc
Dovrebbero essere visualizzati risultati simili all'immagine seguente:
Esaminare l'elenco risultante. Alcuni tipi di tempesta sono più sorprendenti di altri?