Exercício – filtrar dados usando o operador where

Concluído

Lembre-se de que você filtrou determinadas colunas, incluindo-as ou retirando-as dos resultados exibidos. Nesta unidade, você aprenderá a responder a perguntas sobre quais tipos de eventos meteorológicos ocorreram em regiões ou períodos de tempo diferentes e quais tipos de eventos causaram danos.

Use o operador where

Até agora, todos os operadores que você usou retornaram colunas selecionadas. Agora, vamos dar uma olhada em linhas específicas dos dados.

O operador where filtra os resultados que atendem a uma determinada condição. Neste primeiro exemplo, você vai comparar uma coluna de inteiros com um valor mínimo usando o operador numérico maior que (>). Especificamente, é desejável exibir apenas tempestades que danificaram propriedades, portanto, verifique as linhas de dados em que o dano à propriedade é maior que zero.

  1. Execute a seguinte consulta:

    Executar a consulta

    StormEvents
    | where DamageProperty > 0
    | project State, EventType, DamageProperty
    | take 10
    
  2. Você deve obter resultados parecidos com a seguinte imagem:

    Captura de tela dos resultados da consulta de um operador where com um operador numérico de maior que zero.

  3. Observe que todas as linhas retornadas têm, de fato, valores de DamageProperty maiores que zero.

  4. Da mesma forma, você pode filtrar onde a hora de um evento ocorreu mais do que um determinado número de dias atrás. Por exemplo, execute a seguinte consulta, em que 365d significa 365 dias:

    Executar a consulta

    StormEvents
    | where DamageProperty > 0
    | where StartTime > ago(365d)
    | project State, EventType, DamageProperty
    
  5. Observe que essa consulta não retorna nenhum resultado. Como os dados são de 2007, não há registros do ano passado.

Filtrar usando um valor de cadeia de caracteres

Parece que alguns tipos de tempestades causaram danos em todos os EUA. Vamos restringir isso a tempestades que ocorreram em um determinado local, como o estado da Flórida.

  1. Execute a seguinte consulta, que usa um operador de where de segundo com o valor de cadeia de caracteres "FLORIDA":

    Executar a consulta

    StormEvents
    | where DamageCrops > 0
    | where State == "FLORIDA"
    | project State, EventType, DamageCrops
    
  2. Você deve obter resultados parecidos com a seguinte imagem:

    Captura de tela dos resultados de consulta para dois operadores where.

  3. Observe que todos os registros retornados dessa consulta são da Flórida e têm danos de plantação maiores que zero.

Filtrar usando o operador has

Um dos tipos de evento nos resultados da última consulta é chamado de Thunderstorm Wind. Vamos ver se há outros tipos de vento que causaram danos à propriedades na Flórida. Pesquisaremos uma correspondência da cadeia de caracteres wind usando o operador has. O operador has é uma pesquisa que não diferencia maiúsculas de minúsculas e que corresponde a um termo completo.

  1. Execute a seguinte consulta:

    Executar a consulta

    StormEvents
    | where DamageProperty > 0
    | where State == "FLORIDA"
    | where EventType has "wind"
    | project StartTime, EventType, DamageProperty
    
  2. Você deve obter resultados parecidos com a seguinte imagem:

    Captura de tela dos resultados da consulta para os operadores where e has.

  3. Observe nos resultados que os eventos como tornados não aparecem mais, mas os tipos de evento Thunderstorm Wind e Strong Wind sim.

O operador contains é semelhante a has, mas coincide em qualquer substring. Por exemplo, a consulta a seguir retornará resultados como Névoa congelante e Geada/Congelamento.

StormEvents | where EventType contains "free"

O operador has é mais eficaz que o operador contains, então use has quando você tiver que escolher entre os dois.

Filtrar valores datetime

Vamos examinar mais de perto os danos causados na primeira metade do ano civil. Pode ser útil limitar a pesquisa a eventos dentro de um intervalo de tempo específico. Algumas interfaces com a linguagem de consulta Kusto têm um seletor de tempo suspenso, mas outras exigem que você incorpore o filtro de data à própria consulta.

Como os intervalos de tempo são limitados por dois extremos, é mais eficiente construir uma consulta na qual escolhemos um valor que esteja entre esses dois tempos.

A sintaxe para construir esse intervalo de datas é a seguinte:

where time between (datetime(value)..datetime(value))

  1. Vamos incorporar esse intervalo datetime em um tipo de consulta que já vimos. Execute a seguinte consulta:

    Executar a consulta

    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. Você deve obter resultados parecidos com a seguinte imagem:

    Captura de tela dos resultados de consulta para operadores where que incluem um intervalo de tempo.

  3. Observe que todas as datas estão no primeiro semestre do ano, do 1º ao 6º mês. Você também pode ver que, embora tenha selecionado eventos do estado da Flórida, o estado não aparece como uma coluna de saída, pois ele não foi especificado no operador project.