Korzystanie z operatora podsumowania

Ukończone

Operator count ze swoimi odmianami tworzy nową kolumnę z wynikiem obliczeniowym dla określonych pól.

Pierwsza instrukcja poniżej zwraca jedną kolumnę, która jest unikatową listą wartości kolumn Działania.

Druga instrukcja zwraca liczbę wierszy SecurityEvent, w których identyfikator EventID jest równy 4688, a liczba jest pogrupowana według procesów i komputerów. Ze względu na klauzulę by zestaw wyników zawiera trzy kolumny: Proces, Komputer, Liczba.

Uruchom każde zapytanie oddzielnie, aby wyświetlić wyniki.

SecurityEvent | summarize by Activity

SecurityEvent
| where EventID == "4688"
| summarize count() by Process, Computer

W poniższym przykładzie przedstawiono częściową listę najpopularniejszych prostych funkcji agregujących używanych z operatorem podsumowania.

Funkcje opis
count(), countif() Zwraca liczbę rekordów na grupę podsumowań
dcount(), dcountif() Zwraca oszacowanie liczby unikatowych wartości pobranych przez wyrażenie skalarne w grupie podsumowania.
avg(), avgif() Oblicza średnią wyrażenia w grupie.
max(), maxif() Zwraca maksymalną wartość w grupie.
min(), minif() Zwraca wartość minimalną w grupie.
percentyl() Zwraca oszacowanie dla określonego percentyla najbliższej rangi populacji zdefiniowanej przez wyrażenie. Dokładność zależy od gęstości populacji w regionie percentyla.
stdev(), stdevif() Oblicza odchylenie standardowe wyrażenia expr w grupie, biorąc pod uwagę grupę jako próbkę.
sum(), sumif() Oblicza sumę wyrażenia w grupie.
variance(), varianceif() Oblicza wariancję wyrażenia expr w grupie, biorąc pod uwagę grupę jako przykład.

przykład funkcji count

Kolumna funkcji agregującej może być jawnie nazwana przez dołączenie "fieldname=" przed funkcją agregacji.

Instrukcja KQL zwraca trzy kolumny: "cnt", "AccountType" i "Computer". Nazwa pola "cnt" zastępuje domyślną nazwę "count_".

SecurityEvent
| where TimeGenerated > ago(1h)
| where EventID == 4624
| summarize cnt=count() by AccountType, Computer

<przykład funkcji dcount>

Poniższy przykład zwraca liczbę unikatowych adresów IP.

SecurityEvent
| summarize dcount(IpAddress)

Przyjrzyjmy się rzeczywistej przykładzie

Poniższa instrukcja to reguła wykrywania nieprawidłowych niepowodzeń haseł w wielu aplikacjach dla tego samego konta.

Operator where dla resultDescription filtruje zestaw wyników, w tym "Nieprawidłowe hasło". Następnie instrukcja "summarize" generuje odrębną liczbę nazw aplikacji i grup według użytkownika i adresu IP. Na koniec jest sprawdzana zmienna utworzona (próg), aby sprawdzić, czy liczba przekracza dozwoloną kwotę.

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