Oefening: gebeurtenissen tellen met behulp van de functie Aantal
U kunt een Kusto-query gebruiken om gegevenssets te verkennen en inzichten te verkrijgen. Zoals u weet, hebben we een meteorologische gegevensset en willen we gebeurtenissen vergelijken om inzicht te krijgen in deze gegevens. Hier leert u hoeveel van een bepaald type gebeurtenis zich in een bepaald gebied heeft voorgedaan.
De functie count
gebruiken
De voorbeelddatabase die we gebruiken, heeft een vermelding voor elke stormgebeurtenis in de VS in 2007, voor een totaal van ongeveer 60 duizend records.
Als u deze gebeurtenissen wilt groeperen in gegevenssegmenten, gebruikt u de summarize
operator.
summarize
wordt gebruikt voor alle functies waarmee groepen waarden van meerdere rijen worden samengevoegd om één samenvattingswaarde te vormen. U kunt bijvoorbeeld de hele tabel samenvatten door het aantal resultaten te tellen met behulp van de volgende query:
U kunt gegevens ook samenvatten in groepen van vergelijkbare typen gebeurtenissen door de manier op te geven waarop u de aggregatie wilt groeperen. Als u bijvoorbeeld gebeurtenissen wilt tellen op status, kunt u een query naar maken summarize
count
state
. In feite is de vorige zin vergelijkbaar met de werkelijke query. U gebruikt de aggregatiefunctie die wordt aangeroepen count()
, waarmee het aantal rijen per groep wordt geteld. Met deze functie wordt een nieuwe kolom gegenereerd waarmee het aantal gebeurtenissen wordt gegroepeerd op status, waarvan de naam in de query is gewijzigd van de standaardnaam count_ naar EventCount. Het wijzigen van de naam van nieuwe kolommen is een aanbevolen procedure om query's en hun resultaten beter leesbaar te maken.
Kopieer en plak de query in uw query-editor.
StormEvents | summarize EventCount = count() by State | sort by EventCount
Voer de query uit door de knop Uitvoeren boven het queryvenster te selecteren of door op Shift+Enter te drukken.
U krijgt resultaten die eruitzien als de volgende afbeelding:
dcount()
De en countif()
functies gebruiken
De vorige query heeft het aantal gebeurtenissen per status geretourneerd. Er zijn echter geavanceerdere manieren om gebeurtenissen te tellen.
- U kunt bijvoorbeeld alleen bepaalde typen gebeurtenissen tellen. De
countif()
functie telt records waarvoor een predicaat waar is. De query die wordt gebruiktcountif(DamageCrops > 0)
, telt het aantal records waarvoor de schade aan gewassen groter is dan nul. - U kunt ook verschillende typen gebeurtenissen tellen met behulp van de
dcount()
functie.
We hebben een query gemaakt die gebruikmaakt van de summarize
operator met deze aantalfuncties om de volgende vragen te beantwoorden:
- Hoeveel storm gebeurtenissen zijn er in elke staat gebeurd?
- Hoeveel gebeurtenissen in elke staat hebben schade veroorzaakt?
- Hoeveel verschillende soorten gebeurtenissen zijn er in elke status gebeurd?
U ziet dat alle elementen binnen de samenvattende operator worden gescheiden door komma's en zijn gegroepeerd op dezelfde kolom, in dit geval Staat. Kolommen die niet in de summarize
operator worden genoemd, worden verwijderd. Als u andere kolommen wilt opnemen, geeft u deze een naam na de kolom waarop de gegevens worden samengevat.
Voer de volgende query uit.
StormEvents | summarize count(), EventsWithDamageToCrops = countif(DamageCrops > 0), Count = dcount(EventType) by State | sort by Count
U krijgt resultaten die eruitzien als de volgende afbeelding:
Let op de kolomnamen in de resultaten. Welk deel van de query komt overeen met elke kolom? U kunt zien dat de
dcount()
functie een nieuwe kolom heeft gemaakt en de naam Count heeft gegeven. U ziet ook dat u deze naam hebt gebruikt als de kolom voor desort
operator in de query. Hoeveel verschillende soorten stormen zijn er in Texas opgetreden?
distinct
De operator gebruiken
De vorige query heeft een uniek aantal van 27 verschillende soorten stormen in Texas geretourneerd tijdens de periode die door deze gegevens wordt gedekt. Het zou interessant zijn om verder in te zoomen en de namen van al die soorten stormen te bekijken. Als u een lijst wilt zien van elk ander type gebeurtenis in Texas, gebruikt u de distinct()
operator, waarin de afzonderlijke waarden van een bepaalde kolom worden vermeld.
Voer de volgende query uit.
StormEvents | where State == "TEXAS" | distinct EventType | sort by EventType asc
U krijgt resultaten die eruitzien als de volgende afbeelding:
Bekijk de resulterende lijst. Verraste een van de stormtypen je?