Cvičení – filtrování dat pomocí operátoru where

Dokončeno

Vzpomeňte si, že jste vyfiltrovali nebo vyfiltrovali určité sloupce ze zobrazených výsledků. V této lekci se dozvíte, jak odpovědět na otázky ohledně toho, jaké druhy meteorologických událostí proběhly v různých oblastech nebo časových rozpětích a jaké typy událostí způsobily poškození.

Použití operátoru where

Až do této chvíle vrátily všechny použité operátory vybrané sloupce. Teď se podíváme na konkrétní řádky dat.

Operátor where filtruje výsledky, které splňují určitou podmínku. V tomto prvním příkladu porovnáte celočíselnou sloupec s minimální hodnotou pomocí číselného operátoru většího než (>). Konkrétně chcete zobrazit pouze bouře, které poškozenou vlastnost, takže se podíváte na řádky dat, ve kterých je poškození vlastnosti větší než nula.

  1. Spusťte tento dotaz:

    Spuštění dotazu

    StormEvents
    | where DamageProperty > 0
    | project State, EventType, DamageProperty
    | take 10
    
  2. Měli byste získat výsledky, které vypadají jako na následujícím obrázku:

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

  3. Všimněte si, že všechny vrácené řádky mají ve skutečnosti hodnoty DamageProperty větší než nula.

  4. Podobně můžete filtrovat, kde došlo k události více než určitý počet dní před. Spusťte například následující dotaz, kde 365d znamená 365 dnů:

    Spuštění dotazu

    StormEvents
    | where DamageProperty > 0
    | where StartTime > ago(365d)
    | project State, EventType, DamageProperty
    
  5. Všimněte si, že tento dotaz nevrací žádné výsledky. Vzhledem k tomu, že data pocházejí z roku 2007, neexistují žádné záznamy z minulého roku.

Filtrování pomocí řetězcové hodnoty

Vypadá to, že několik typů bouří způsobilo škodu po celé USA. Pojďme to zúžit na bouře, které se stalo v určité lokalitě, jako je stát Florida.

  1. Spusťte následující dotaz, který používá druhý where operátor s řetězcovou hodnotou "FLORIDA":

    Spuštění dotazu

    StormEvents
    | where DamageCrops > 0
    | where State == "FLORIDA"
    | project State, EventType, DamageCrops
    
  2. Měli byste získat výsledky, které vypadají jako na následujícím obrázku:

    Screenshot of query results for two where operators.

  3. Všimněte si, že všechny záznamy vrácené z tohoto dotazu jsou z Floridy a mají poškození oříznutí větší než nula.

Filtrování pomocí operátoru has

Jeden z typů událostí ve výsledcích posledního dotazu se nazývá Thunderstorm Wind. Pojďme se podívat, jestli na Floridě nedošlo k nějakým jiným druhům větru, které způsobily poškození majetku. Pomocí operátoru has vyhledáme shodu wind řetězců. Operátor has nerozlišuje malá a velká písmena, které odpovídá úplnému termínu.

  1. Spusťte tento dotaz:

    Spuštění dotazu

    StormEvents
    | where DamageProperty > 0
    | where State == "FLORIDA"
    | where EventType has "wind"
    | project StartTime, EventType, DamageProperty
    
  2. Měli byste získat výsledky, které vypadají jako na následujícím obrázku:

    Screenshot of query results for where and has operators.

  3. Všimněte si ve výsledcích, že události, jako jsou tornády, se již nezobrazují, ale zobrazí se typy událostí Bouře a Silný vítr .

Operátor contains je podobný has, ale odpovídá u jakéhokoli podřetězece. Například následující dotaz vrátí výsledky, jako je mražení mlhy a Mrazo/Ukotvit.

StormEvents | where EventType contains "free"

Operátor has je výkonnější než contains operátor, takže byste měli použít has všude, kde máte na výběr mezi těmito dvěma operátory.

datetime Filtrování hodnot

Pojďme se podrobněji podívat na škody provedené v první polovině kalendářního roku. Může být užitečné omezit vyhledávání na události v určitém časovém rozsahu. Některá rozhraní s dotazovací jazyk Kusto mají rozevírací výběr času, jiné ale vyžadují, abyste do samotného dotazu zahrnuli filtr kalendářních dat.

Vzhledem k tomu, že časové rozsahy jsou ohraničené dvěma extrémními hodnotami, je nejúčinnější vytvořit dotaz, ve kterém zvolíte hodnotu, která je mezi těmito dvěma časy.

Syntaxe pro vytváření tohoto rozsahu kalendářních dat je následující:

where)..datetime(hodnota časubetween(datetime())

  1. Pojďme tuto datetime oblast začlenit do typu dotazu, který jste už viděli. Spusťte tento dotaz:

    Spuštění dotazu

    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. Měli byste získat výsledky, které vypadají jako na následujícím obrázku:

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

  3. Všimněte si, že všechna data jsou v první polovině roku, měsíce 1 až šest. Můžete si také všimnout, že i když jste vybrali události ze státu Florida, stát se nezobrazuje jako výstupní sloupec, protože nebyl zadán v operátoru project .