Esercizio - Filtrare i dati usando l'operatore where

Completato

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.

  1. Eseguire la query riportata di seguito:

    Eseguire la query

    StormEvents
    | where DamageProperty > 0
    | project State, EventType, DamageProperty
    | take 10
    
  2. Dovrebbero essere visualizzati risultati simili all'immagine seguente:

    Screenshot of query results of a where operator with a numerical operator of greater than zero.

  3. Si noti che tutte le righe restituite hanno valori DamageProperty superiori a zero.

  4. 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:

    Eseguire la query

    StormEvents
    | where DamageProperty > 0
    | where StartTime > ago(365d)
    | project State, EventType, DamageProperty
    
  5. 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.

  1. Eseguire la query seguente, che usa un secondo operatore where con il valore stringa "FLORIDA":

    Eseguire la query

    StormEvents
    | where DamageCrops > 0
    | where State == "FLORIDA"
    | project State, EventType, DamageCrops
    
  2. Dovrebbero essere visualizzati risultati simili all'immagine seguente:

    Screenshot of query results for two where operators.

  3. 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.

  1. Eseguire la query riportata di seguito:

    Eseguire la query

    StormEvents
    | where DamageProperty > 0
    | where State == "FLORIDA"
    | where EventType has "wind"
    | project StartTime, EventType, DamageProperty
    
  2. Dovrebbero essere visualizzati risultati simili all'immagine seguente:

    Screenshot of query results for where and has operators.

  3. Si noti nei risultati che gli eventi come tornado non vengono più visualizzati, ma vengono visualizzati i tipi di eventi Thunderstorm Wind (vento di tempesta) e Strong Wind (vento forte).

L'operatore contains è simile a has, ma corrisponde a qualsiasi substring. Ad esempio, la query seguente restituirà risultati come Freezing fog (nebbia gelata) e Frost/Freeze (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:

wheretempobetween(datetime(valore)..datetime(valore))

  1. Incorporare questo intervallo datetime in un tipo di query già visto. Eseguire la query riportata di seguito:

    Eseguire la query

    StormEvents
    | where StartTime between (datetime(2007-01-01)..datetime(2007-06-01))
    | where DamageProperty > 0
    | where State == "FLORIDA"
    | project StartTime, EventType, DamageProperty
    | take 50
    
  2. Dovrebbero essere visualizzati risultati simili all'immagine seguente:

    Screenshot of query results for where operators that include a time range.

  3. 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.