Parte 1 - Introducción a KQL: Primeros pasos con Kusto Query Language
- Ahias Portillo
- Nov 3, 2024
- 2 min read
Updated: Apr 1

¿Qué es KQL y para qué sirve?
Kusto Query Language (KQL) es un lenguaje diseñado por Microsoft para consultar, transformar y analizar grandes volúmenes de datos, en especial aquellos que llegan en forma de eventos, logs, métricas o series temporales. A diferencia de SQL tradicional, que se enfoca más en operaciones transaccionales (crear, modificar, eliminar registros), KQL está pensado exclusivamente para analizar datos existentes de forma rápida, flexible y declarativa.
Es ampliamente utilizado en:
Azure Data Explorer (ADX)
Microsoft Fabric (KQL DB en Real-Time Intelligence)
Azure Monitor / Log Analytics / Application Insights
KQL se ha vuelto muy popular en entornos de análisis operacional y monitoreo en tiempo real, como detectar anomalías, visualizar tendencias, o reaccionar a eventos de negocio casi instantáneamente.
¿En qué se diferencia de SQL?
Aunque visualmente puede parecerse a SQL, KQL trabaja con una sintaxis basada en operadores encadenados por tuberías (|), más parecida a lo que usarías en herramientas como PowerShell o Unix..
Característica | SQL | KQL |
Orientación | Transaccional (OLTP) | Analítica, series temporales, logs |
Escritura de consultas | SELECT ... FROM ... WHERE | `Tabla |
Inserciones/actualizaciones | Sí | No (solo lectura) |
Enfoque en tiempo real | Limitado | Muy optimizado |
Datos semiestructurados | Soporte parcial | Soporte completo con dynamic (JSON) |
Tipos de datos comunes en KQL
En KQL, trabajamos con tipos simples y potentes para análisis de series de tiempo y comportamiento de eventos:
string: texto
int, long: números enteros
real, decimal: decimales
datetime: fechas y horas
timespan: intervalos de tiempo
bool: valores lógicos
dynamic: estructuras JSON (listas, objetos)
Sintaxis básica con ejemplos del mundo financiero
Vamos a imaginar que tenemos una tabla de eventos llamada TransaccionesBancarias, donde cada fila representa una transacción financiera registrada por una entidad bancaria.
Seleccionar columnas específicas
***KQL*** TransaccionesBancarias | project Fecha, ClienteID, Monto, TipoTransaccion |
Muestra solo las columnas que te interesan, útil para inspeccionar datos rápidamente.
where – Filtrar según condiciones
kql TransaccionesBancarias | where TipoTransaccion == "Transferencia" and Monto > 10000 |
Consulta todas las transferencias mayores a $10.000. Esto puede usarse como base para detectar operaciones de alto valor o potencial lavado de dinero.
summarize – Agregar valores
kql TransaccionesBancarias | summarize TotalTransferencias = sum(Monto) by ClienteID |
Agrupa todas las transacciones por cliente y calcula el total transferido.
order by – Ordenar resultados
kql TransaccionesBancarias | summarize Total = sum(Monto) by ClienteID | order by Total desc |
Lista los clientes que más dinero han movido, de mayor a menor.
Top 5 clientes con más retiros en la última semana
kql TransaccionesBancarias | where TipoTransaccion == "Retiro" and Fecha > ago(7d) | summarize TotalRetiros = sum(Monto) by ClienteID | order by TotalRetiros desc | take 5 |
Tendencia de volumen de operaciones por día
kql TransaccionesBancarias | summarize TotalDiario = sum(Monto) by bin(Fecha, 1d) | render timechart Esta consulta agrupa el total de dinero movido cada día, y lo grafica automáticamente como serie temporal. Muy útil para ver comportamiento de clientes, campañas o actividad irregular. |
***Este contenido fue potenciado con IA. Porque cuando el conocimiento humano se encuentra con la inteligencia artificial, surgen mejores ideas.***
Comments