Samouczek: poznaj typowe operatory
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
język zapytań Kusto (KQL) służy do pisania zapytań w usłudze Azure Data Explorer, Azure Monitor Log Analytics, Azure Sentinel i nie tylko. Ten samouczek stanowi wprowadzenie do podstawowych operatorów KQL używanych do uzyskiwania dostępu do danych i analizowania ich.
Aby uzyskać bardziej szczegółowe wskazówki dotyczące wykonywania zapytań dotyczących dzienników w usłudze Azure Monitor, zobacz Wprowadzenie do zapytań dzienników.
Uwaga
Nie możesz znaleźć, czego szukasz? Ten artykuł został niedawno podzielony w następujący sposób:
- Poznaj typowe operatory (ten artykuł)
- Korzystanie z funkcji agregacji
- Łączenie danych z wielu tabel
- Tworzenie wizualizacji geoprzestrzennych
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
W przykładach w tym samouczku StormEvents
użyto tabeli, która jest publicznie dostępna w klastrze pomocy. Aby eksplorować własne dane, utwórz własny bezpłatny klaster.
W przykładach w tym samouczku użyto StormEvents
tabeli, która jest publicznie dostępna w przykładowych danych analizy pogody.
Wymagania wstępne
Aby uruchomić następujące zapytania, potrzebujesz środowiska zapytań z dostępem do przykładowych danych. Możesz użyć jednej z następujących opcji:
- Konto Microsoft lub tożsamość użytkownika Microsoft Entra w celu zalogowania się do klastra pomocy
- Konto Microsoft lub tożsamość użytkownika Entra firmy Microsoft
- Obszar roboczy sieci szkieletowej z pojemnością z włączoną usługą Microsoft Fabric
Zlicz wiersze
Zacznij od użycia operatora count, aby znaleźć liczbę rekordów burzy w StormEvents
tabeli.
StormEvents
| count
Wyjście
Count |
---|
59066 |
Wyświetlanie próbki danych
Aby zrozumieć dane, użyj operatora take , aby wyświetlić próbkę rekordów. Ten operator zwraca określoną liczbę dowolnych wierszy z tabeli, co może być przydatne do wyświetlania podglądu ogólnej struktury danych i zawartości.
StormEvents
| take 5
W poniższej tabeli przedstawiono tylko 5 z 22 zwracanych kolumn. Aby wyświetlić pełne dane wyjściowe, uruchom zapytanie.
StartTime | EndTime | EpisodeId | EventId | Stan | EventType | ... |
---|---|---|---|---|---|---|
2007-09-20T21:57:00Z | 2007-09-20T22:05:00Z | 11078 | 60913 | FLORIDA | Tornado | ... |
2007-12-20T07:50:00Z | 2007-12-20T07:53:00Z | 12554 | 68796 | MISSISSIPPI | Wiatr i burza | ... |
2007-12-30T16:00:00Z | 2007-12-30T16:05:00Z | 11749 | 64588 | GEORGIA | Wiatr i burza | ... |
2007-09-29T08:11:00Z | 2007-09-29T08:11:00Z | 11091 | 61032 | POŁUDNIE ATLANTYCKIE | Wodopoje | ... |
2007-09-18T20:00:00Z | 2007-09-19T18:00:00Z | 11074 | 60904 | FLORIDA | Ulewny deszcz | ... |
Wybieranie podzbioru kolumn
Użyj operatora projektu, aby uprościć widok i wybrać określony podzbiór kolumn. Użycie project
jest często bardziej wydajne i łatwiejsze do odczytania niż wyświetlanie wszystkich kolumn.
StormEvents
| take 5
| project State, EventType, DamageProperty
Wyjście
Stan | EventType | DamageProperty |
---|---|---|
POŁUDNIE ATLANTYCKIE | Wodopoje | 0 |
FLORIDA | Ulewny deszcz | 0 |
FLORIDA | Tornado | 6200000 |
GEORGIA | Wiatr i burza | 2000 |
MISSISSIPPI | Wiatr i burza | 20000 |
Wyświetlanie listy unikatowych wartości
Wygląda na to, że istnieje wiele typów burz na podstawie wyników poprzedniego zapytania. Użyj odrębnego operatora, aby wyświetlić listę wszystkich unikatowych typów burzy.
StormEvents
| distinct EventType
W tabeli znajduje się 46 typów burz. Oto próbka 10 z nich.
EventType |
---|
Wiatr i burza |
Grad |
Powodzia błyskawiczna |
Susza |
Zimowa pogoda |
Śnieżyca |
Duże opady śniegu |
Silny wiatr |
Mróz/przymrozek |
Powódź |
... |
Filtruj według warunku
Operator where filtruje wiersze danych na podstawie określonych kryteriów.
Poniższe zapytanie wyszukuje zdarzenia storm w określonym State
obiekcie EventType
.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| project StartTime, EndTime, State, EventType, DamageProperty
Istnieją 146 zdarzeń, które spełniają te warunki. Oto próbka 5 z nich.
StartTime | EndTime | Stan | EventType | DamageProperty |
---|---|---|---|---|
2007-01-13T08:45:00Z | 2007-01-13T10:30:00Z | TEKSAS | Powódź | 0 |
2007-01-13T09:30:00Z | 2007-01-13T21:00:00Z | TEKSAS | Powódź | 0 |
2007-01-13T09:30:00Z | 2007-01-13T21:00:00Z | TEKSAS | Powódź | 0 |
2007-01-15T22:00:00Z | 2007-01-16T22:00:00Z | TEKSAS | Powódź | 20000 |
2007-03-12T02:30:00Z | 2007-03-12T06:45:00Z | TEKSAS | Powódź | 0 |
... | ... | ... | ... | ... |
Sortowanie wyników
Aby wyświetlić pierwsze powodzie w Teksasie, które spowodowały największe szkody, użyj operatora sortowania , aby rozmieścić wiersze w kolejności malejącej na DamageProperty
podstawie kolumny. Domyślna kolejność sortowania jest malejąco. Aby posortować w kolejności rosnącej, określ wartość asc
.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| sort by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty
Wyjście
StartTime | EndTime | Stan | EventType | DamageProperty |
---|---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | TEKSAS | Powódź | 5000000 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | TEKSAS | Powódź | 1200000 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | TEKSAS | Powódź | 1000000 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | TEKSAS | Powódź | 750000 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | TEKSAS | Powódź | 750000 |
... | ... | ... | ... | ... |
Pobieranie pierwszych n wierszy
Operator górny zwraca pierwsze n wierszy posortowanych według określonej kolumny.
Poniższe zapytanie zwraca pięć powodzi w Teksasie, które spowodowały najbardziej uszkodzoną właściwość.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty
Wyjście
StartTime | EndTime | Stan | EventType | DamageProperty |
---|---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | TEKSAS | Powódź | 5000000 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | TEKSAS | Powódź | 1200000 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | TEKSAS | Powódź | 1000000 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | TEKSAS | Powódź | 750000 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | TEKSAS | Powódź | 750000 |
Uwaga
Kolejność operatorów jest ważna. Jeśli umieścisz top
je wcześniej where
, uzyskasz różne wyniki. Wynika to z faktu, że dane są przekształcane przez każdy operator w kolejności. Aby dowiedzieć się więcej, zobacz instrukcje wyrażeń tabelarycznych.
Tworzenie kolumn obliczeniowych
Operatory projektu i rozszerzania mogą tworzyć kolumny obliczeniowe.
Użyj project
polecenia , aby określić tylko kolumny, które chcesz wyświetlić, i użyj polecenia extend
, aby dołączyć kolumnę obliczeniową na końcu tabeli.
Poniższe zapytanie tworzy kolumnę obliczeniową Duration
z różnicą między elementami StartTime
i EndTime
. Ponieważ chcemy wyświetlić tylko kilka wybranych kolumn, użycie project
jest lepszym wyborem w tym przypadku.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| project StartTime, EndTime, Duration = EndTime - StartTime, DamageProperty
Wyjście
StartTime | EndTime | Czas trwania | DamageProperty |
---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | 1.01:30:00 | 5000000 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | 12:00:00 | 1200000 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | 05:00:00 | 1000000 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | 08:00:00 | 750000 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | 03:00:00 | 750000 |
Jeśli przyjrzysz się obliczonej Duration
kolumnie, możesz zauważyć, że powódź, która spowodowała największe szkody, była również najdłuższym powodzią.
Służy extend
do wyświetlania kolumny Duration
obliczeniowej wraz ze wszystkimi innymi kolumnami. Kolumna Duration
jest dodawana jako ostatnia kolumna.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| extend Duration = EndTime - StartTime
Wyjście
StartTime | EndTime | ... | Czas trwania |
---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | ... | 1.01:30:00 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | ... | 12:00:00 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | ... | 05:00:00 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | ... | 08:00:00 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | ... | 03:00:00 |
Mapuj wartości z jednego zestawu na inny
Mapowanie statyczne to przydatna technika zmiany prezentacji wyników. W języku KQL jednym ze sposobów wykonywania mapowania statycznego jest użycie słownika dynamicznego i metod dostępu do mapowania wartości z jednego zestawu na inny.
let sourceMapping = dynamic(
{
"Emergency Manager" : "Public",
"Utility Company" : "Private"
});
StormEvents
| where Source == "Emergency Manager" or Source == "Utility Company"
| project EventId, Source, FriendlyName = sourceMapping[Source]
Wyjście
EventId | Źródło | FriendlyName |
---|---|---|
68796 | Menedżer awaryjny | Publiczne |
... | ... | ... |
72609 | Firma użyteczności publicznej | Prywatne |
... | ... | ... |
Następny krok
Teraz, gdy znasz podstawy pisania zapytań Kusto, przejdź do następnego samouczka i dowiedz się, jak używać funkcji agregacji, aby uzyskać lepszy wgląd w dane.