KQL effectief gebruiken

Voltooid

KQL-databases in eventhouses zijn geoptimaliseerd voor grote hoeveelheden realtime gegevens. Om de beste resultaten te krijgen, moet u rekening houden met een aantal goede procedures.

Tabellen op basis van gegevensstromen in realtime kunnen groot worden. Het minimaliseren van de gegevens die door een query worden geretourneerd, kan helpen de prestaties te optimaliseren en fouten te voorkomen vanwege overschreden gegevenslimieten.

Kolommen filteren

Gebruik het trefwoord project om alleen de kolommen op te halen die u nodig hebt. De volgende query retourneert bijvoorbeeld slechts vier kolommen met gegevens:

Automotive
| project trip_id, vendor_id, pickup_datetime, fare_amount

Rijen filteren

Gebruik het trefwoord waar u de rijen wilt filteren die worden geretourneerd op basis van specifieke criteria. De volgende query retourneert bijvoorbeeld alleen gegevens voor reizen die in de huidige maand zijn opgetreden:

Automotive
| where getmonth(pickup_datetime) == getmonth(now())
  and getyear(pickup_datetime) == getyear(now())
| project trip_id, vendor_id, pickup_datetime, fare_amount

Let op het gebruik van de getmonth functies getyear in dit voorbeeld. Aangezien realtime gegevens meestal een tijdelijk element (op basis van tijd) omvat, biedt KQL sterke ondersteuning voor filteren op basis van tijd. De volgende query gebruikt bijvoorbeeld de functie ago om de resultaten te beperken tot alleen de gebeurtenissen die in de afgelopen 30 minuten zijn opgetreden.

Automotive
| where pickup_datetime > ago(30min)
| project trip_id, vendor_id, pickup_datetime, fare_amount

Wanneer de gegevens permanent worden geladen vanuit een streamingbron (bijvoorbeeld door een eventstream), kunt u de functie ingestion_time gebruiken om te filteren op basis van wanneer de gegevens in de tabel zijn geladen, zelfs als de gegevens geen op tijd gebaseerde waarde bevatten waarop moet worden gefilterd. Met de volgende query worden bijvoorbeeld de gebeurtenissen opgehaald die in het afgelopen uur in de tabel zijn geladen.

Automotive
| where ingestion_time() > ago(1h)
| project trip_id, vendor_id, pickup_datetime, fare_amount

Gegevens samenvatten

Soms hoeft u geen gegevens op het niveau van de afzonderlijke gebeurtenis op te halen. In plaats daarvan kunt u de gegevens samenvatten om patronen te analyseren, vaak op basis van tijdsintervallen.

Met de volgende query wordt bijvoorbeeld het gemiddelde tarief opgehaald dat door elke taxileverancier per uur wordt verzameld in de gebeurtenissen die in de afgelopen dag zijn opgenomen.

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