Korzystanie z operatora podsumowania
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