Övning – Filtrera data med hjälp av operatorn where

Slutförd

Kom ihåg att du har filtrerat vissa kolumner in eller ut ur de visade resultaten. I den här lektionen får du lära dig hur du svarar på frågor om vilka typer av meteorologiska händelser som ägde rum i olika regioner eller tidsintervall och vilka typer av händelser som orsakade skador.

Använda operatorn where

Fram tills nu har alla operatorer som du har använt returnerat markerade kolumner. Nu ska vi ta en titt på specifika rader med data.

Operatorn where filtrerar resultat som uppfyller ett visst villkor. I det här första exemplet jämför du en heltalskolumn med ett minsta värde med hjälp av den numeriska operatorn större än (>). Mer specifikt vill du bara se stormar som skadade egenskaper, så du tittar på rader med data där skadorna på egenskapen är större än noll.

  1. Kör följande fråga:

    Kör frågan

    StormEvents
    | where DamageProperty > 0
    | project State, EventType, DamageProperty
    | take 10
    
  2. Du bör få resultat som ser ut som följande bild:

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

  3. Observera att alla returnerade rader faktiskt har DamageProperty-värden som är större än noll.

  4. På samma sätt kan du filtrera var tidpunkten för en händelse inträffade för mer än ett visst antal dagar sedan. Kör till exempel följande fråga, vilket 365d innebär 365 dagar:

    Kör frågan

    StormEvents
    | where DamageProperty > 0
    | where StartTime > ago(365d)
    | project State, EventType, DamageProperty
    
  5. Observera att den här frågan inte returnerar några resultat. Eftersom data är från 2007 finns det inga poster från det senaste året.

Filtrera med hjälp av ett strängvärde

Det verkar som om en hel del typer av stormar har orsakat skador över hela USA. Låt oss begränsa det till stormar som hände på en viss plats, som delstaten Florida.

  1. Kör följande fråga, som använder en andra where operator med strängvärdet "FLORIDA":

    Kör frågan

    StormEvents
    | where DamageCrops > 0
    | where State == "FLORIDA"
    | project State, EventType, DamageCrops
    
  2. Du bör få resultat som ser ut som följande bild:

    Screenshot of query results for two where operators.

  3. Observera att alla poster som returneras från den här frågan kommer från Florida och har beskärningsskador som är större än noll.

Filtrera med operatorn has

En av händelsetyperna i den senaste frågans resultat kallas åskväder. Låt oss se om det finns några andra typer av vind som orsakade egendomsskador i Florida. Vi söker efter en strängmatchning av wind med hjälp av operatorn has . Operatorn has är en skiftlägeskänslig sökning som matchar på en fullständig term.

  1. Kör följande fråga:

    Kör frågan

    StormEvents
    | where DamageProperty > 0
    | where State == "FLORIDA"
    | where EventType has "wind"
    | project StartTime, EventType, DamageProperty
    
  2. Du bör få resultat som ser ut som följande bild:

    Screenshot of query results for where and has operators.

  3. Observera i resultaten att händelser som tornador inte längre visas, men åskväder och stark vind-händelsetyper visas.

Operatorn contains liknar has, men den matchar på alla delsträngar. Följande fråga returnerar till exempel resultat som Frysning av dimma och Frost/Frysning.

StormEvents | where EventType contains "free"

Operatorn has är mer högpresterande än operatorn contains , så du bör använda has var du än har ett val mellan de två.

Filtrera efter datetime värden

Låt oss titta närmare på den skada som åsamkats under första halvåret av kalenderåret. Det kan vara användbart att begränsa sökningen till händelser inom ett visst tidsintervall. Vissa gränssnitt med Kusto-frågespråk har en listrutetidsväljare, men andra kräver att du införlivar datumfiltret i själva frågan.

Eftersom tidsintervall begränsas av två extremvärden är det mest effektivt att skapa en fråga där du väljer ett värde som är mellan dessa två gånger.

Syntaxen för att konstruera det här datumintervallet är följande:

wherevärde för tidsvärdebetween(datetime()..datetime())

  1. Nu ska vi införliva det här datetime intervallet i en typ av fråga som du redan har sett. Kör följande fråga:

    Kör frågan

    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. Du bör få resultat som ser ut som följande bild:

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

  3. Observera att alla datum är inom första halvåret, månader ett till sex. Du kanske också märker att även om du har valt händelser från delstaten Florida visas inte delstaten som en utdatakolumn eftersom den inte har angetts i operatorn project .