Cvičení – počítání událostí pomocí funkce count
K prozkoumání datových sad a získání přehledů můžete použít dotaz Kusto. Vzpomeňte si, že máme meteorologickou datovou sadu a chceme porovnat události, abychom získali přehledy z těchto dat. Tady zjistíte, kolik z určitého typu události se v určité oblasti stalo.
Použití funkce count
Ukázková databáze, která používáme, obsahuje záznam pro každou událost stormu v USA v roce 2007, celkem asi 60 tisíc záznamů.
Pokud chcete tyto události seskupit do bloků informací, použijete summarize
operátor. summarize
se používá pro všechny funkce, které agregují skupiny hodnot více řádků a tvoří jednu souhrnnou hodnotu. Celou tabulku můžete shrnout například tak, že spočítáte počet výsledků pomocí následujícího dotazu:
Data můžete také shrnout do skupin podobných typů událostí zadáním způsobu seskupení agregace. Pokud chcete například spočítat události podle stavu, napíšete dotaz podle summarize
count
state
. Ve skutečnosti je předchozí věta velmi podobná skutečnému dotazu. Použijete funkci agregace s názvem count()
, která spočítá počet řádků podle skupiny. Tato funkce vygeneruje nový sloupec, který poskytuje počet událostí seskupených podle stavu, které jsme v dotazu přejmenovali z výchozího názvu count_ na EventCount. Přejmenování nových sloupců je doporučeným postupem, jak vytvářet dotazy a jejich výsledky čitelnější.
Zkopírujte a vložte dotaz do editoru dotazů.
StormEvents | summarize EventCount = count() by State | sort by EventCount
Spusťte dotaz tak , že vyberete tlačítko Spustit nad oknem dotazu nebo stisknete Shift+Enter.
Měli byste získat výsledky, které vypadají jako na následujícím obrázku:
Použití funkcí dcount()
a countif()
funkcí
Předchozí dotaz vrátil počet událostí na stav. Existují ale sofistikovanější způsoby, jak spočítat události.
- Můžete například spočítat pouze určité typy událostí. Funkce
countif()
spočítá záznamy, pro které je predikát pravdivý. Dotaz, který používácountif(DamageCrops > 0)
, spočítá počet záznamů, pro které bylo poškození plodin větší než nula. - Pomocí funkce můžete také spočítat různé typy událostí
dcount()
.
Vytvořili jsme dotaz, který pomocí operátoru summarize
s těmito funkcemi počtu odpovídá na následující otázky:
- Kolik událostí stormu se stalo v každém stavu?
- Kolik událostí v každém stavu způsobilo poškození?
- Kolik různých typů událostí se v každém stavu stalo?
Všimněte si, že všechny prvky v operátoru sumarizace jsou oddělené čárkami a jsou seskupené podle stejného sloupce, v tomto případě State. Sloupce, které nejsou v operátoru summarize
pojmenované, se zahodí. Pokud chcete zahrnout další sloupce, pojmenujte je za sloupec, na kterém se data shrnují.
Spusťte tento dotaz:
StormEvents | summarize count(), EventsWithDamageToCrops = countif(DamageCrops > 0), Count = dcount(EventType) by State | sort by Count
Měli byste získat výsledky, které vypadají jako na následujícím obrázku:
Všimněte si názvů sloupců ve výsledcích. Která část dotazu odpovídá jednotlivým sloupcům? Vidíte, že
dcount()
funkce vytvořila nový sloupec a dala jí název Count. Všimněte si také, že jste tento název použili jako sloupec operátorasort
v dotazu. Kolik různých typů bouřek došlo v Texasu?
Použití operátoru distinct
Předchozí dotaz vrátil jedinečný počet 27 různých typů bouřek v Texasu během časového období pokrytého daty. Bylo by zajímavé přejít k podrobnostem a podívat se na názvy všech těchto typů bouřek. Pokud chcete zobrazit seznam jednotlivých různých typů událostí v Texasu, použijte distinct()
operátor, který uvádí jedinečné hodnoty konkrétního sloupce.
Spusťte tento dotaz:
StormEvents | where State == "TEXAS" | distinct EventType | sort by EventType asc
Měli byste získat výsledky, které vypadají jako na následujícím obrázku:
Podívejte se na výsledný seznam. Překvapoval vás některý z typů bouře?