Udostępnij za pośrednictwem


Samouczek: poznaj typowe operatory

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:

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.

Wymagania wstępne

  • Konto Microsoft lub tożsamość użytkownika Microsoft Entra w celu zalogowania się do klastra pomocy

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.