Vistas materializadas y funciones almacenadas
Aunque a menudo puede alcanzar los objetivos analíticos consultando tablas y usando funciones y operadores integrados, KQL proporciona algunas características avanzadas que puede usar para crear nuevos objetos que encapsulen datos o lógicas que necesite usar con frecuencia.
Vistas materializadas
Una vista materializada es un resumen de los datos de una tabla de origen o de otra vista materializada. La vista encapsula una instrucción de resumen.
Por ejemplo, la siguiente instrucción crea una vista materializada que contiene el número de viajes de cada proveedor cada día.
.create materialized-view TripsByVendor on table Automotive
{
Automotive
| summarize trips = count() by vendor_id, pickup_date = format_datetime(pickup_datetime, "yyyy-MM-dd")
}
Al ejecutar esta instrucción se crea una vista materializada, pero no se rellena inmediatamente con los datos de la tabla existente. La vista se rellenará a medida que se ingieren nuevos datos en la tabla de origen. Para ingerir datos existentes, puede usar una operación asincrónica para crear la vista materializada con la opción de reposición, de la siguiente manera:
.create async materialized-view with (backfill=true)
TripsByVendor on table Automotive
{
Automotive
| summarize trips = count() by vendor_id, pickup_date = format_datetime(pickup_datetime, "yyyy-MM-dd")
}
Después de crear y rellenar la vista materializada, puede consultarla igual que una tabla.
TripsByVendor
| project pickup_date, vendor_id, trips
| sort by pickup_date desc
Las vistas materializadas se muestran en la carpeta Vistas materializadas de la base de datos KQL donde las definió en la página de eventhouse.
Funciones almacenadas
KQL incluye la capacidad de encapsular una consulta como una función, lo que facilita la repetición de consultas comunes. También puede especificar parámetros para una función, por lo que puede repetir la misma consulta con valores variables.
Para crear una función, use el comando KQL función .create-or-alter. Por ejemplo, la siguiente función recupera el id. de viaje y la hora de recogida de los viajes con al menos el número de pasajeros especificado:
.create-or-alter function trips_by_min_passenger_count(num_passengers:long)
{
Automotive
| where passenger_count >= num_passengers
| project trip_id, pickup_datetime
}
Para llamar a la función, úsela como una tabla. En este ejemplo, la función trips_by_min_passenger_count se usa para buscar 10 viajes con al menos tres pasajeros:
trips_by_min_passenger_count (3)
| take 10