Tutorial: Información sobre operadores comunes

Lenguaje de consulta Kusto (KQL) se usa para escribir consultas en Azure Data Explorer, Azure Monitor Log Analytics, Azure Sentinel, etc. Este tutorial es una introducción a los operadores de KQL esenciales que se usan para acceder a los datos y analizarlos.

Para obtener instrucciones más específicas sobre cómo consultar registros en Azure Monitor, consulte Introducción a las consultas de registro.

Nota

¿No encuentra lo que busca? Este artículo se ha dividido recientemente, como se indica a continuación:

En este tutorial, aprenderá a:

En los ejemplos de este tutorial se usa la StormEvents tabla , que está disponible públicamente en el clúster de ayuda. Para explorar con sus propios datos, cree su propio clúster gratuito.

Requisitos previos

  • Una cuenta de Microsoft o Microsoft Entra identidad de usuario para iniciar sesión en el clúster de ayuda

Contar filas

Empiece por usar el operador count para buscar el número de registros de storm en la StormEvents tabla.

StormEvents 
| count

Salida

Count
59066

Ver un ejemplo de datos

Para obtener una idea de los datos, use el operador take para ver una muestra de registros. Este operador devuelve un número especificado de filas arbitrarias de la tabla, que puede ser útil para obtener una vista previa de la estructura de datos y el contenido generales.

StormEvents 
| take 5

En la tabla siguiente solo se muestran 6 de las 22 columnas devueltas. Para ver la salida completa, ejecute la consulta.

StartTime EndTime EpisodeId EventId State EventType ...
2007-09-20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 FLORIDA Tornado ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 MISISIPÍ Viento de tormenta ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEORGIA Viento de tormenta ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLÁNTICO SUR Tromba de agua ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Lluvia intensa ...

Seleccionar un subconjunto de columnas

Use el operador project para simplificar la vista y seleccionar un subconjunto específico de columnas. El uso project de suele ser más eficaz y fácil de leer que ver todas las columnas.

StormEvents
| take 5
| project State, EventType, DamageProperty

Salida

State EventType DamageProperty
ATLÁNTICO SUR Tromba de agua 0
FLORIDA Lluvia intensa 0
FLORIDA Tornado 6200000
GEORGIA Viento de tormenta 2000
MISISIPÍ Viento de tormenta 20000

Enumerar valores únicos

Parece que hay varios tipos de tormentas en función de los resultados de la consulta anterior. Use el operador distinct para enumerar todos los tipos de tormenta únicos.

StormEvents 
| distinct EventType

Hay 46 tipos de tormentas en la tabla. Este es un ejemplo de 10 de ellos.

EventType
Viento de tormenta
Granizo
Riada
Sequía
Clima de invierno
Tormenta invernal
Nieve pesada
Viento fuerte
Escarcha/congelación
Inundación
...

Filtrar por condición

El operador where filtra las filas de datos en función de determinados criterios.

La consulta siguiente busca eventos de storm en un específico State de un específico EventType.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| project StartTime, EndTime, State, EventType, DamageProperty

Hay 146 eventos que coinciden con estas condiciones. Este es un ejemplo de 5 de ellos.

StartTime EndTime State EventType DamageProperty
2007-01-13T08:45:00Z 2007-01-13T10:30:00Z TEXAS Inundación 0
2007-01-13T09:30:00Z 2007-01-13T21:00:00Z TEXAS Inundación 0
2007-01-13T09:30:00Z 2007-01-13T21:00:00Z TEXAS Inundación 0
2007-01-15T22:00:00Z 2007-01-16T22:00:00Z TEXAS Inundación 20000
2007-03-12T02:30:00Z 2007-03-12T06:45:00Z TEXAS Inundación 0
... ... ... ... ...

Ordenar resultados

Para ver las inundaciones principales en Texas que causaron más daños, use el operador de ordenación para organizar las filas en orden descendente en función de la DamageProperty columna. El criterio de ordenación predeterminado es descendente. Para ordenar en orden ascendente, especifique asc.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| sort by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty

Salida

StartTime EndTime State EventType DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z TEXAS Inundación 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z TEXAS Inundación 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z TEXAS Inundación 1000000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z TEXAS Inundación 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z TEXAS Inundación 750000
... ... ... ... ...

Obtención de las n primeras filas

El operador top devuelve las primeras n filas ordenadas por la columna especificada.

La consulta siguiente devuelve las cinco inundaciones de Texas que causaron la propiedad más dañada.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty

Salida

StartTime EndTime State EventType DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z TEXAS Inundación 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z TEXAS Inundación 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z TEXAS Inundación 1000000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z TEXAS Inundación 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z TEXAS Inundación 750000

Nota

El orden de los operadores es importante. Si lo pone top aquí where , obtendrá resultados diferentes. Esto se debe a que cada operador transforma los datos en orden. Para más información, consulte instrucciones de expresión tabular.

Crear columnas calculadas

Los operadores de proyecto y extensión pueden crear columnas calculadas.

Use project para especificar solo las columnas que desea ver y use extend para anexar la columna calculada al final de la tabla.

La consulta siguiente crea una columna calculada Duration con la diferencia entre y StartTimeEndTime. Dado que solo queremos ver algunas columnas de selección, usar project es la mejor opción en este caso.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| project StartTime, EndTime, Duration = EndTime - StartTime, DamageProperty

Salida

StartTime EndTime Duration DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z 1.01:30:00 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z 12:00:00 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z 05:00:00 1000000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z 08:00:00 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z 03:00:00 750000

Si echa un vistazo a la columna calculada Duration , es posible que observe que la inundación que provocó el mayor daño también fue la inundación más larga.

Use extend para ver la columna calculada Duration junto con todas las demás columnas. La Duration columna se agrega como la última columna.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| extend Duration = EndTime - StartTime

Salida

StartTime EndTime ... Duration
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z ... 1.01:30:00
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z ... 12:00:00
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z ... 05:00:00
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z ... 08:00:00
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z ... 03:00:00

Asignación de valores de un conjunto a otro

La asignación estática es una técnica útil para cambiar la presentación de los resultados. En KQL, una manera de realizar la asignación estática es mediante un diccionario dinámico y descriptores de acceso para asignar valores de un conjunto a otro.

let sourceMapping = dynamic(
  {
    "Emergency Manager" : "Public",
    "Utility Company" : "Private"
  });
StormEvents
| where Source == "Emergency Manager" or Source == "Utility Company"
| project EventId, Source, FriendlyName = sourceMapping[Source]

Salida

EventId Source FriendlyName
68796 Administrador de emergencia Público
... ... ...
72609 Compañía de utilidades Privados
... ... ...

Paso siguiente

Ahora que está familiarizado con los aspectos básicos de la escritura de consultas de Kusto, vaya al siguiente tutorial y aprenda a usar las funciones de agregación para obtener información más detallada sobre los datos.