Viste materializzate e funzioni archiviate
Sebbene sia spesso possibile raggiungere gli obiettivi analitici eseguendo query sulle tabelle e usando funzioni e operatori predefiniti, KQL offre alcune funzionalità avanzate che è possibile sfruttare per creare nuovi oggetti che incapsulano i dati o la logica da utilizzare di frequente.
Viste materializzate
una vista materializzata è un riepilogo dei dati di una tabella di origine o di un'altra vista materializzata. La vista incapsula un'istruzione summarize.
Ad esempio, l'istruzione seguente crea una vista materializzata che contiene il numero di viaggi per ogni fornitore ogni giorno.
.create materialized-view TripsByVendor on table Automotive
{
Automotive
| summarize trips = count() by vendor_id, pickup_date = format_datetime(pickup_datetime, "yyyy-MM-dd")
}
L'esecuzione di questa istruzione crea una vista materializzata, ma non la popola immediatamente con i dati nella tabella esistente. La vista verrà popolata man mano che vengono inseriti nuovi dati nella tabella di origine. Per inserire dati esistenti, è possibile usare un'operazione asincrona per creare la vista materializzata con l'opzione backfill, come illustrato di seguito:
.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")
}
Dopo aver creato e popolato la vista materializzata, è possibile eseguirne una query esattamente come una tabella.
TripsByVendor
| project pickup_date, vendor_id, trips
| sort by pickup_date desc
Le viste materializzate sono elencate nella cartella Viste materializzate per il database KQL in cui sono state definite nella pagina eventhouse.
Funzioni archiviate
KQL include la possibilità di incapsulare una query come funzione, semplificando la ripetizione di query comuni. È anche possibile specificare i parametri per una funzione, in modo da poter ripetere la stessa query con valori di variabile.
Per creare una funzione, usare il comando KQL della funzione .create-or-alter. Ad esempio, la funzione seguente recupera l'ID del viaggio e l'orario di partenza per i viaggi con almeno il numero di passeggeri specificato:
.create-or-alter function trips_by_min_passenger_count(num_passengers:long)
{
Automotive
| where passenger_count >= num_passengers
| project trip_id, pickup_datetime
}
Per chiamare la funzione, usarla come una tabella. In questo esempio, la funzione trips_by_min_passenger_count viene usata per trovare 10 viaggi con almeno tre passeggeri:
trips_by_min_passenger_count (3)
| take 10