Visión general de Kusto Query Language (KQL)
Kusto Query Language es una potente herramienta para explorar los datos y descubrir patrones, identificar anomalías y valores atípicos, crear modelado estadístico, etc.
¿Qué es una consulta de Kusto?
Una consulta Kusto es una solicitud de sólo lectura para procesar datos y devolver resultados. La solicitud se indica en texto sin formato, utilizando un modelo de flujo de datos que es fácil de leer, crear y automatizar. Las consultas Kusto se realizan de una o más sentencias de consulta.
¿Qué es una sentencia de consulta?
Hay dos tipos de sentencias de consulta de usuario
- Una sentencia de expresión tabular
- A [let statement]-Actualmente no está soportado, consulte Diferencia de soporte.
El tipo más común de sentencia de consulta es una sentenciade expresión tabular, que significa que tanto la entrada como la salida constan de tablas o conjuntos de datos tabulares. Las sentencias tabulares contienen cero o más operadores, cada uno de los cuales empieza con una entrada tabular y devuelve una salida tabular. Los operadores se ordenan mediante un | (conducto). Los flujos de datos, o se canalizado, de un operador a otro. Los datos se filtran o manipulan en cada paso y, a continuación, se introducen en el paso siguiente.
Es como un embudo, donde empiezas con toda una tabla de datos. Cada vez que los datos pasan a través de otro operador, se filtran, se reorganizan o se resumen. Puesto que la canalización de la información de un operador a otro es secuencial, el orden del operador de consulta es importante y puede afectar tanto a los resultados como al rendimiento. Al final del embudo, te queda una salida refinada.
Veamos una consulta de ejemplo. Tenga en cuenta que KQL distingue entre mayúsculas y minúsculas para todos los nombres de tabla, nombres de columna de tabla, operadores, funciones, etc.
events_all
| project original_time, user_id
| where original_time > ago(5m) and user_id contains "user"
| count
Resultados
| Total |
|---|
| 28 |
Esta consulta tiene una única sentencia de expresión tabular. La sentencia empieza con una referencia a una tabla denominada events_all. Esta simple sentencia realmente significa, ir a buscar todos los datos para todo el tiempo, sin restricciones. Aunque es muy útil, es muy costoso por lo que debe estar limitado con operadores adicionales en todo momento.
events_all
La segunda sentencia es aplicar el operador project para especificar sólo las columnas en las que estamos interesados. En el caso de events_all, hay más de 400 columnas y sólo necesitamos 2 para completar esta consulta, por lo que incluir las otras incurriría en un coste enorme sin ningún beneficio. Incluya siempre una sentencia de proyecto.
| project original_time, user_id
La tercera sentencia aplica where para restringir los datos de la proyección especificando una lista de predicados. A continuación, estamos indicando que sólo necesitamos registros que fueron generados por fuentes de datos en los últimos cinco minutos Y el user_id contiene los caracteres "user".
| where original_time > ago(5m) and user_id contains "user"
Esta consulta también se puede escribir para dividir la sentencia and lógica en dos líneas. Esto es útil para la claridad, y juega con la fuerza de la naturaleza altamente iterativa de KQL. Una consideración aquí al aprovechar varias cláusulas where , es una sentencia and implícita. Estos dos ejemplos de where son idénticos.
| where original_time > ago(5m)
| where user_id contains "user"
La sentencia final aplica el recuento. Esto toma todos los registros coincidentes de la cláusula where y realiza una agregación simple. La salida es una tabla con un único valor largo.
| count
| Total |
|---|
| 28 |