Exercício – filtrar dados usando o operador where
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.
Execute a seguinte consulta:
StormEvents | where DamageProperty > 0 | project State, EventType, DamageProperty | take 10
Você deve obter resultados parecidos com a seguinte imagem:
Observe que todas as linhas retornadas têm, de fato, valores de DamageProperty maiores que zero.
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:StormEvents | where DamageProperty > 0 | where StartTime > ago(365d) | project State, EventType, DamageProperty
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.
Execute a seguinte consulta, que usa um operador de
where
de segundo com o valor de cadeia de caracteres"FLORIDA"
:StormEvents | where DamageCrops > 0 | where State == "FLORIDA" | project State, EventType, DamageCrops
Você deve obter resultados parecidos com a seguinte imagem:
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.
Execute a seguinte consulta:
StormEvents | where DamageProperty > 0 | where State == "FLORIDA" | where EventType has "wind" | project StartTime, EventType, DamageProperty
Você deve obter resultados parecidos com a seguinte imagem:
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 retorna 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
timebetween
(datetime(
value)..datetime(
value))
Vamos incorporar esse intervalo
datetime
em um tipo de consulta que já vimos. Execute a seguinte 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
Você deve obter resultados parecidos com a seguinte imagem:
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
.