Materializovaná zobrazení a uložené funkce
Teď, když rozumíte základním technikám dotazování a optimalizace KQL, pojďme prozkoumat materializovaná zobrazení a uložené funkce v eventhouses.
Vysvětlení materializovaných zobrazení
Materializovaná zobrazení jsou předpočítané agregace, které řeší běžné problémy s výkonem v databázích KQL. Databáze KQL v eventhouse často obsahují miliony nebo miliardy řádků ze streamovaných zdrojů dat, jako jsou senzory IoT, protokoly aplikací a další události. Spouštění agregačních dotazů napříč těmito velkými datovými sadami může trvat značné množství času a výpočetních prostředků.
Materializovaná zobrazení ukládají předem připravené výsledky agregace a automaticky je aktualizují při příchodu nových dat. Místo přepočítání metrik ze všech historických dat při každém dotazování udržuje materializované zobrazení výsledky a zpracovává pouze nová data za účelem aktualizace agregací. To poskytuje okamžité výsledky pro řídicí panely a sestavy i při práci s obrovskými datovými sadami.
Jak fungují automatické aktualizace
Materializované zobrazení se skládá ze dvou částí, které společně poskytují vždy aktuální výsledky:
- Materializovaná část: Předpočítané výsledky agregace z dat, která již byla zpracována
- Rozdíl: Nová data, která přišla od poslední aktualizace na pozadí
Při dotazování materializovaného zobrazení systém automaticky zkombinuje obě části v době dotazu, abyste získali čerstvé výsledky up-to-date. To znamená, že materializovaná zobrazení vždy vrací aktuální data bez ohledu na to, kdy se proces materializace na pozadí naposledy spustil. Mezitím proces na pozadí pravidelně přesouvá data z rozdílové části do materializované části a udržuje předem předpočítané výsledky aktuální. Tento přístup poskytuje rychlost předem připravených výsledků s aktuálností dat v reálném čase.
Vytváření materializovaných zobrazení
Materializované zobrazení zapouzdřuje příkaz sumarizace KQL, který se automaticky aktualizuje při příchodu nových dat. Tady je příklad, který sleduje metriky jízdy podle dodavatele a dne:
.create materialized-view TripsByVendor on table TaxiTrips
{
TaxiTrips
| summarize trips = count(), avg_fare = avg(fare_amount), total_revenue = sum(fare_amount)
by vendor_id, pickup_date = format_datetime(pickup_datetime, "yyyy-MM-dd")
}
Dotazování materializovaných zobrazení
Po vytvoření se materializovaná zobrazení dají dotazovat jako běžné tabulky:
TripsByVendor
| where pickup_date >= ago(7d)
| project pickup_date, vendor_id, trips, avg_fare, total_revenue
| sort by pickup_date desc, total_revenue desc
Principy uložených funkcí
KQL zahrnuje možnost zapouzdření dotazu jako funkce, což usnadňuje opakování běžných dotazů. Můžete také zadat parametry pro funkci, takže stejný dotaz můžete opakovat s hodnotami proměnných.
Uložené funkce jsou užitečné v eventhouse, kde máte streamovaná data a více lidí, kteří zapisují dotazy. Místo opakovaného zápisu stejné logiky filtrování nebo transformace ji můžete definovat jednou jako funkci a znovu ji použít v různých dotazech. Funkce také pomáhají zajistit, aby se výpočty prováděly konzistentně, když na data musí použít stejnou logiku různí členové týmu.
Vytvoření funkce
.create-or-alter function trips_by_min_passenger_count(num_passengers:long)
{
TaxiTrips
| where passenger_count >= num_passengers
| project trip_id, pickup_datetime
}
Pokud chcete funkci volat, použijte ji jako tabulku. V tomto příkladu se funkce trips_by_min_passenger_count používá k vyhledání 10 cest s alespoň třemi cestujícími:
trips_by_min_passenger_count(3)
| take 10