Použití operátoru summarize
Operátor sumarizace použijete s jinými operátory, jako je operátor count. Operátor count s jeho variantami vytvoří nový sloupec s počítaným výsledkem pro zadaná pole.
První příkaz níže vrátí jeden sloupec, který je jedinečným seznamem hodnot sloupce Aktivita.
Druhý příkaz vrátí počet řádků SecurityEvent, kde EventID se rovná 4688 a počet je seskupený podle procesu a počítače. Vzhledem k klauzuli By obsahuje sada výsledků tři sloupce: Proces, Počítač, Počet.
Výsledky zobrazíte spuštěním jednotlivých dotazů zvlášť.
SecurityEvent | summarize by Activity
SecurityEvent
| where EventID == "4688"
| summarize count() by Process, Computer
Následující příklad je částečný seznam nejběžnějších jednoduchých agregačních funkcí používaných s operátorem sumarizace.
| Funkce(y) | Popis |
|---|---|
| count(), countif() | Vrátí počet záznamů na skupinu souhrnů. |
| dcount(), dcountif() | Vrátí odhad počtu jedinečných hodnot přijatých skalárním výrazem ve skupině souhrnů. |
| avg(), avgif() | Vypočítá průměr Expr ve skupině. |
| max(), maxif() | Vrátí maximální hodnotu ve skupině. |
| min(), minif() | Vrátí minimální hodnotu ve skupině. |
| percentil() | Vrátí odhad pro zadaný percentil nejbližšího pořadí populace definované pomocí výrazu. Přesnost závisí na hustotě populace v oblasti percentilu. |
| stdev(), stdevif() | Vypočítá směrodatnou odchylku výrazu 'Expr' ve skupině, a považuje skupinu za vzorek. |
| sum(), sumif() | Vypočítá součet výrazů ve skupině. |
| variance(), varianceif() | Vypočítá rozptyl výrazu ve skupině, přičemž skupinu považuje za vzorek. |
Příklad funkce count
Sloupec agregační funkce lze explicitně pojmenovat zahrnutím "fieldname=" před agregační funkcí.
Příkaz KQL vrátí tři sloupce: cnt, AccountType a Computer. Název pole "cnt" nahrazuje výchozí název "count_".
SecurityEvent
| where TimeGenerated > ago(1h)
| where EventID == 4624
| summarize cnt=count() by AccountType, Computer
<Příklad funkce dcount>
Následující příklad vrátí počet jedinečných IP adres.
SecurityEvent
| summarize dcount(IpAddress)
Podívejme se na skutečný příklad
Následující příkaz je pravidlo pro detekci neplatných chyb hesel ve více aplikacích pro stejný účet.
Operátor where pro ResultDescription filtruje sadu výsledků pro výsledky, které zahrnují "Neplatné heslo". Dále příkaz "summarize" vytvoří odlišný počet názvů aplikací a seskupení podle Uživatele a IP adresy. Nakonec se provádí kontrola proti vytvořené proměnné (prahové hodnotě), aby se zjistilo, zda číslo překračuje povolenou mez.
let timeframe = 30d;
let threshold = 1;
SigninLogs
| where TimeGenerated >= ago(timeframe)
| where ResultDescription has "Invalid password"
| summarize applicationCount = dcount(AppDisplayName) by UserPrincipalName, IPAddress
| where applicationCount >= threshold