Ejercicio: recuento de eventos mediante la función Count
Puede usar una consulta de Kusto para explorar conjuntos de datos y obtener información. Recuerde que tenemos un conjunto de datos meteorológicos y queremos comparar eventos para obtener información de estos datos. Aquí, averiguará cuántos eventos de un tipo determinado se produjeron en un área determinada.
Usar la función count
La base de datos de ejemplo que usamos tiene una entrada para cada evento de tormenta en EE. UU. en 2007, con un total de aproximadamente 60 000 registros.
Para agrupar estos eventos en fragmentos de información, usará el operador summarize
. summarize
se usa para todas las funciones que agregan grupos de valores de varias filas para formar un único valor de resumen. Puede resumir toda la tabla, por ejemplo, contando el número de resultados mediante la consulta siguiente:
También puede resumir los datos en grupos de tipos similares de eventos especificando la forma en que quiere agrupar la agregación. Por ejemplo, para contar eventos por estado, puedes escribir una consulta en summarize
count
porstate
. De hecho, la oración anterior es muy similar a la consulta real. Usará la función de agregación denominada count()
, que cuenta el número de filas por grupo. Esta función genera una nueva columna que proporciona el recuento de eventos agrupados por estado, cuyo nombre se ha cambiado en la consulta pasando del nombre predeterminado count_ a EventCount. El cambio de nombre de las nuevas columnas es una práctica recomendada para hacer que las consultas y sus resultados sean más legibles.
Copie y pegue la consulta en el editor de consultas.
StormEvents | summarize EventCount = count() by State | sort by EventCount
Ejecute la consulta mediante la selección del botón Ejecutar, situado encima de la ventana de consulta, o de Mayús+Entrar.
Debería obtener resultados similares a la imagen siguiente:
Uso de las funciones dcount()
y countif()
La consulta anterior devolvió el número de eventos por estado. Sin embargo, hay formas más sofisticadas de contar eventos.
- Por ejemplo, podría contar solo determinados tipos de eventos. La función
countif()
cuenta los registros para los que un predicado es true. La consulta que usacountif(DamageCrops > 0)
contaría el número de registros para los que el daño en los cultivos fuese mayor que cero. - También puede contar distintos tipos de eventos mediante la función
dcount()
.
Hemos creado una consulta que usa el operador summarize
con estas funciones de recuento para responder a las siguientes preguntas:
- ¿Cuántos eventos de tormenta se produjeron en cada estado?
- ¿Cuántos eventos de cada estado causaron daños?
- ¿Cuántos tipos diferentes de eventos se produjeron en cada estado?
Observe que todos los elementos del operador summarize están separados por comas y se agrupan por la misma columna, en este caso State. Las columnas que no se nombran en el operador summarize
se quitan. Si quiere incluir otras columnas, asígneles el nombre de la columna en la que se resumen los datos.
Ejecute la siguiente consulta:
StormEvents | summarize count(), EventsWithDamageToCrops = countif(DamageCrops > 0), Count = dcount(EventType) by State | sort by Count
Debería obtener resultados similares a la imagen siguiente:
Observe los nombres de columna en los resultados. ¿Qué parte de la consulta corresponde a cada columna? Puede ver que la función
dcount()
creó una nueva columna y le asignó el nombre Count. También observará que usó este nombre como columna para el operadorsort
en la consulta. ¿Cuántos tipos de tormentas diferentes se produjeron en Texas?
Use el operador distinct
.
La consulta anterior devolvió un recuento distinto de 27 tipos diferentes de tormentas en Texas durante el período de tiempo cubierto por estos datos. Sería interesante profundizar más y ver los nombres de todos esos tipos de tormentas. Para ver una lista de cada tipo de evento diferente en Texas, use el operador distinct()
, que enumera los valores distintos de una columna determinada.
Ejecute la siguiente consulta:
StormEvents | where State == "TEXAS" | distinct EventType | sort by EventType asc
Debería obtener resultados similares a la imagen siguiente:
Eche un vistazo la lista resultante. ¿Le sorprendió alguno de los tipos de tormentas?