Ejercicio: Filtrado de datos mediante el operador where

Completado

Recuerde que ha filtrado determinadas columnas en los resultados mostrados. En esta unidad va a aprender a responder a preguntas sobre qué tipo de eventos meteorológicos se han producido en distintas regiones o intervalos temporales, y qué tipos de eventos han causado daños.

Use el operador where.

Hasta este momento todos los operadores que ha usado han devuelto columnas seleccionadas. Ahora vamos a examinar filas específicas de los datos.

El operador where filtra los resultados que satisfacen una condición determinada. En este primer ejemplo va a comparar una columna de enteros con un valor mínimo mediante el operador numérico mayor que (>). En concreto, solo queremos ver las tormentas que han dañado propiedades, por lo que vamos a examinar las filas de datos en las que el valor de los daños a la propiedad es mayor que cero.

  1. Ejecute la siguiente consulta:

    Ejecución de la consulta

    StormEvents
    | where DamageProperty > 0
    | project State, EventType, DamageProperty
    | take 10
    
  2. Debería obtener resultados similares a la imagen siguiente:

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

  3. Observe que todas las filas devueltas tienen, de hecho, valores DamageProperty mayores que cero.

  4. Del mismo modo, puede filtrar por donde un evento ha tenido lugar hace más de un número determinado de días. Por ejemplo, ejecute la consulta siguiente, donde 365d significa 365 días:

    Ejecución de la consulta

    StormEvents
    | where DamageProperty > 0
    | where StartTime > ago(365d)
    | project State, EventType, DamageProperty
    
  5. Observe que esta consulta no devuelve ningún resultado. Puesto que los datos son de 2007, no hay registros del año pasado.

Filtrar mediante un valor de cadena

Parece que bastantes tipos de tormentas han causado daños en todo EE. UU. Vamos a limitar a las tormentas que se han producido en una ubicación determinada, como el estado de Florida.

  1. Ejecute la consulta siguiente, que usa un segundo operador where con el valor de cadena "FLORIDA":

    Ejecución de la consulta

    StormEvents
    | where DamageCrops > 0
    | where State == "FLORIDA"
    | project State, EventType, DamageCrops
    
  2. Debería obtener resultados similares a la imagen siguiente:

    Screenshot of query results for two where operators.

  3. Observe que todos los registros devueltos por esta consulta son de Florida y tienen un valor de daños a los cultivos mayor que cero.

Filtrado mediante el operador has

El nombre de uno de los tipos de evento de los resultados de la consulta anterior es Viento de tormenta. Vamos a ver si hay algún otro tipo de viento que haya causado daños a la propiedad en Florida. Vamos a buscar una coincidencia de cadena de wind mediante el operador has. El operador has es una búsqueda que no distingue mayúsculas de minúsculas y que busca coincidencias con un término completo.

  1. Ejecute la siguiente consulta:

    Ejecución de la consulta

    StormEvents
    | where DamageProperty > 0
    | where State == "FLORIDA"
    | where EventType has "wind"
    | project StartTime, EventType, DamageProperty
    
  2. Debería obtener resultados similares a la imagen siguiente:

    Screenshot of query results for where and has operators.

  3. En los resultados, observe que ya no aparecen eventos como tornados, pero sí tipos de eventos Thunderstorm Wind y Strong Wind.

El operador contains es similar a has, aunque busca coincidencias con cualquier subcadena. Por ejemplo, la consulta siguiente devuelve resultados como Freezing fog y Frost/Freeze.

StormEvents | where EventType contains "free"

El operador has tiene más utilidad que contains, así que debe usar has siempre que pueda elegir entre los dos.

Filtrado por valores datetime

Vamos a examinar más detenidamente los daños causados en la primera mitad del año natural. Puede ser útil limitar la búsqueda a los eventos de un intervalo de tiempo concreto. Algunas interfaces del lenguaje de consulta Kusto tienen un selector de hora desplegable, pero otras exigen que se incorpore el filtro de fecha en la propia consulta.

Dado que los intervalos de tiempo están limitados por dos extremos, es más eficaz construir una consulta en la que se elija un valor que esté entre estas dos horas.

La sintaxis para construir este intervalo de fechas es la siguiente:

wherehorabetween(datetime(valor)..datetime(valor))

  1. Vamos a incorporar este intervalo datetime a un tipo de consulta que ya ha visto. Ejecute la siguiente consulta:

    Ejecución de la 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. Debería obtener resultados similares a la imagen siguiente:

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

  3. Observe que todas las fechas están dentro de la primera mitad del año, meses 1 a 6. También puede ver que, aunque ha seleccionado eventos del estado de Florida, el estado no aparece como una columna de salida, ya que no se ha especificado en el operador project.