top of page

Parte 2 – Filtrado, agregación y manipulación de datos con KQL

Updated: 6 days ago



En esta segunda entrega vamos a profundizar en las operaciones más utilizadas al trabajar con KQL (Kusto Query Language): cómo filtrar con precisión, cómo agrupar datos temporalmente, cómo calcular métricas agregadas relevantes y cómo aplicar lógica condicional.


Estas técnicas son fundamentales si estás trabajando con informes financieros, KPIs, detección de anomalías o visualización en tiempo real, tanto en Kusto DB (Microsoft Fabric) como en Azure Data Explorer.


Ejemplo de base: tabla TransaccionesFinancieras


Supongamos que estamos analizando una tabla de eventos financieros con la siguiente estructura:



Campo

Tipo

Descripción

Fecha

datetime

Fecha y hora de la transacción

ClienteID

string

ID del cliente

Monto

real

Valor monetario de la transacción

TipoTransaccion

string

"Compra", "Retiro", "Transferencia", etc.

Canal

string

"Web", "App", "Sucursal", "Cajero", etc.

Estado

string

"Exitosa", "Rechazada", "Pendiente"

CategoriaProducto

string

"Cuenta corriente", "Tarjeta", "Crédito", etc.



summarize con by, count(), avg(), percentiles

La operación summarize es la columna vertebral para el análisis agregado en KQL.


  • Total de transacciones por canal

TransaccionesFinancieras

| summarize Total = count() by Canal


  • Promedio de monto por tipo de transacción

TransaccionesFinancieras

| summarize PromedioMonto = avg(Monto) by TipoTransaccion


  • Percentiles de monto por producto financiero

TransaccionesFinancieras

| summarize P50 = percentile(Monto, 50), P95 = percentile(Monto, 95) by CategoriaProduct


Agrupaciones temporales: bin() y ago()


Ideal para generar gráficas de tendencias y series temporales.



  • Monto total por día en la última semana

TransaccionesFinancieras

| where Fecha > ago(7d)

| summarize MontoTotal = sum(Monto) by bin(Fecha, 1d)

| order by Fecha asc

***El operador bin() agrupa las fechas en intervalos regulares. Puedes usar 1h, 15m, 1d, etc.


Filtros más complejos: múltiples condiciones


  • Transacciones sospechosas: altas, por App y con estado pendiente

TransaccionesFinancieras

| where Monto > 10000

and Canal == "App"

and Estado == "Pendiente"


Lógica condicional: case() y iif()

Puedes categorizar datos según reglas lógicas.


  • Clasificación de riesgo por monto

TransaccionesFinancieras

| extend NivelRiesgo = case(

Monto >= 10000, "Alto",

Monto >= 5000, "Medio",

"Bajo")

| summarize Total = count() by NivelRiesgo


Operadores condicionales: has, contains, startswith


  • Buscar transacciones relacionadas con productos "crédito"

TransaccionesFinancieras

| extend NivelRiesgo = case(

    Monto >= 10000, "Alto",

    Monto >= 5000, "Medio",

    "Bajo")

| summarize Total = count() by NivelRiesgo

  • Filtrar transacciones con notas internas que incluyan “revisión manual”

TransaccionesFinancieras

| extend NivelRiesgo = case(

    Monto >= 10000, "Alto",

    Monto >= 5000, "Medio",

    "Bajo")

| summarize Total = count() by NivelRiesgo



Resumen:

  • Las funciones de agregación y filtrado en KQL son poderosas, intuitivas y altamente performantes incluso con millones de registros.

  • El uso de summarize, bin(), case() y contains permite generar insights listos para consumir por analistas o sistemas automatizados.

  • Estos patrones son el corazón de cualquier dashboard financiero operativo, de riesgos o comportamiento transaccional.

  • Comienza con consultas simples y ve optimizándolas: KQL permite refactorizar consultas en tiempo real y encadenar lógicas de análisis sin escribir procedimientos complejos.



***Este contenido fue potenciado con IA. Porque cuando el conocimiento humano se encuentra con la inteligencia artificial, surgen mejores ideas.***












コメント


Empoderando a los entusiastas de los datos en América Latina

Connect with Us

  • YouTube
  • Facebook
  • TikTok
  • Twitter

© 2023 BI LATAM. All Rights Reserved.

bottom of page