Esercizio - Filtrare i dati usando l'operatore where
Tenere presente che sono state filtrate determinate colonne all'interno o all'esterno dei risultati visualizzati. In questa unità si apprenderà come rispondere alle domande sui tipi di eventi meteorologici che si sono verificati in aree o periodi temporali diversi e quali tipi di eventi hanno causato danni.
Usando l'operatore where
.
Fino a questo punto, tutti gli operatori usati hanno restituito colonne selezionate. Esaminare ora le righe specifiche dei dati.
L'operatore where
filtra i risultati che soddisfano una determinata condizione. In questo primo esempio si confronta una colonna Integer con un valore minimo usando l'operatore numerico maggiore di (>
). In particolare, si vogliono visualizzare solo tempeste che hanno danneggiato la proprietà, quindi si esamineranno le righe di dati in cui il danno alla proprietà è maggiore di zero.
Eseguire la query riportata di seguito:
StormEvents | where DamageProperty > 0 | project State, EventType, DamageProperty | take 10
Dovrebbero essere visualizzati risultati simili all'immagine seguente:
Si noti che tutte le righe restituite hanno valori DamageProperty superiori a zero.
Analogamente, è possibile filtrare la posizione in cui un evento si è verificato più di un determinato numero di giorni fa. Ad esempio, eseguire la query seguente, dove
365d
significa 365 giorni:StormEvents | where DamageProperty > 0 | where StartTime > ago(365d) | project State, EventType, DamageProperty
Si noti che questa query non restituisce risultati. Poiché i dati sono del 2007, non sono presenti record dell'anno precedente.
Filtrare usando un valore stringa
Sembra che alcuni tipi di tempeste abbiano causato danni in tutti gli Stati Uniti. Restringere la ricerca alle tempeste che si sono verificate in una determinata posizione, come lo Stato della Florida.
Eseguire la query seguente, che usa un secondo operatore
where
con il valore stringa"FLORIDA"
:StormEvents | where DamageCrops > 0 | where State == "FLORIDA" | project State, EventType, DamageCrops
Dovrebbero essere visualizzati risultati simili all'immagine seguente:
Si noti che tutti i record restituiti da questa query provengono dalla Florida e hanno danni al raccolto superiori a zero.
Filtrare usando l'operatore has
Uno dei tipi di eventi nei risultati dell'ultima query è denominato Vento di tempesta. Verificare se ci sono altri tipi di vento che hanno causato danni alle proprietà in Florida. Verrà eseguita una ricerca in una corrispondenza stringa di wind
usando l'operatore has
. L'operatore has
è una ricerca senza distinzione tra maiuscole e minuscole, corrispondente a un termine completo.
Eseguire la query riportata di seguito:
StormEvents | where DamageProperty > 0 | where State == "FLORIDA" | where EventType has "wind" | project StartTime, EventType, DamageProperty
Dovrebbero essere visualizzati risultati simili all'immagine seguente:
Si noti nei risultati che gli eventi come i tornado non vengono più visualizzati, ma vengono visualizzati i tipi di eventi Vento di tempesta e Vento forte.
L'operatore contains
è simile a has
, ma corrisponde a qualsiasi substring. Ad esempio, la query seguente restituisce risultati come Nebbia gelata e Brina/gelata.
StormEvents | where EventType contains "free"
L'operatore has
è più efficiente dell'operatore contains
, quindi usare has
ogni volta in cui è possibile scegliere tra i due.
Filtrare sui valori datetime
Esaminare più attentamente i danni subiti nella prima metà dell'anno. Può essere utile limitare la ricerca agli eventi all'interno di un intervallo di tempo specifico. Alcune interfacce con Linguaggio di query Kusto dispongono di una selezione del tempo con elenco a discesa, ma altre richiedono l'incorporamento del filtro data nella query stessa.
Poiché gli intervalli di tempo sono vincolati da due estremi, è più efficiente creare una query in cui si sceglie un valore compreso tra questi due tempi.
La sintassi per la costruzione di questo intervallo di date è la seguente:
where
orariobetween
(datetime(
valore)..datetime(
valore))
Incorporare questo intervallo
datetime
in un tipo di query già visto. Eseguire la query riportata di seguito:StormEvents | where StartTime between (datetime(2007-01-01)..datetime(2007-06-01)) | where DamageProperty > 0 | where State == "FLORIDA" | project StartTime, EventType, DamageProperty | take 50
Dovrebbero essere visualizzati risultati simili all'immagine seguente:
Si noti che tutte le date rientrano nella prima metà dell'anno, mesi da uno a sei. Si potrebbe anche notare che, anche se sono stati selezionati eventi dello Stato della Florida, lo Stato non viene visualizzato come colonna di output, perché non è stato specificato nell'operatore
project
.