Uso eficaz de KQL
Las bases de datos KQL en eventhouses están optimizadas para grandes volúmenes de datos en tiempo real. Para obtener los mejores resultados, hay algunos procedimientos recomendados que debe tener en cuenta.
Las tablas basadas en flujos de datos en tiempo real pueden ser grandes. Minimizar los datos devueltos por una consulta puede ayudar a optimizar el rendimiento y evitar errores debido a límites de datos superados.
Columnas de filtro
Use la palabra clave project para recuperar solo las columnas que necesita. Por ejemplo, la consulta siguiente devuelve solo cuatro columnas de datos:
Automotive
| project trip_id, vendor_id, pickup_datetime, fare_amount
Filtrar filas
Use la palabra clave where para filtrar las filas devueltas en función de criterios específicos. Por ejemplo, la consulta siguiente devuelve datos solo para los viajes que se produjeron en el mes actual:
Automotive
| where getmonth(pickup_datetime) == getmonth(now())
and getyear(pickup_datetime) == getyear(now())
| project trip_id, vendor_id, pickup_datetime, fare_amount
Tenga en cuenta el uso de las funciones getmonth
y getyear
en este ejemplo. Dado que los datos en tiempo real suelen implicar un elemento temporal (basado en tiempo), KQL proporciona una gran compatibilidad con el filtrado en función del tiempo. Por ejemplo, la consulta siguiente usa la función ago para restringir los resultados solo a los eventos que se produjeron en los últimos 30 minutos.
Automotive
| where pickup_datetime > ago(30min)
| project trip_id, vendor_id, pickup_datetime, fare_amount
Cuando los datos se cargan perpetuamente desde un origen de streaming (por ejemplo, mediante un eventstream), puede usar la función ingestion_time para filtrar en función de cuándo se cargaron los datos en la tabla, incluso si los datos no incluyen un valor basado en el tiempo en el que se va a filtrar. Por ejemplo, la consulta siguiente recupera los eventos que se han cargado en la tabla en la última hora.
Automotive
| where ingestion_time() > ago(1h)
| project trip_id, vendor_id, pickup_datetime, fare_amount
Resumen de datos
A veces, no es necesario recuperar datos en el nivel de evento individual. En su lugar, puede resumir los datos para ayudarle a analizar patrones, a menudo en función de intervalos de tiempo.
Por ejemplo, la consulta siguiente recupera la tarifa media recopilada por cada proveedor de taxis cada hora en los eventos ingeridos en el último día.
Automotive
| where ingestion_time() > ago(1d)
| summarize average_fare = avg(fare_amount) by vendor_id, pickup_hour = hourofday(pickup_datetime)
| project pickup_hour, vendor_id, average_fare
| sort by pickup_hour