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 Rozpoczynanie pracy z zapytaniami 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 użyto StormEvents 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 Microsoft Entra tożsamość użytkownika, aby zalogować się do klastra pomocy

Zlicz wiersze

Zacznij od użycia operatora count , aby znaleźć liczbę rekordów burzy w StormEvents tabeli.

StormEvents 
| count

Dane wyjściowe

Liczba
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 6 z 22 zwróconych kolumn. Aby wyświetlić pełne dane wyjściowe, uruchom zapytanie.

StartTime EndTime EpisodeId EventId Stan Typ zdarzenia ...
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 Burza z piorunami ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GRUZJA Burza z piorunami ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 POŁUDNIE ATLANTYKU Wodociąg ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Ulewny deszcz ...

Wybierz podzbiór 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

Dane wyjściowe

Stan Typ zdarzenia DamageProperty
POŁUDNIE ATLANTYKU Wodociąg 0
FLORIDA Ulewny deszcz 0
FLORIDA Tornado 6200000
GRUZJA Burza z piorunami 2000
MISSISSIPPI Burza z piorunami 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 operatora distinct , aby wyświetlić listę wszystkich unikatowych typów burzy.

StormEvents 
| distinct EventType

Tabela zawiera 46 typów burz. Oto próbka 10 z nich.

Typ zdarzenia
Burza z piorunami
Grad
Powodzia błyskawiczna
Susza
Pogoda zimowa
Burza zimowa
Ciężki śnieg
Silny wiatr
Mróz/zamrożenie
Powódź
...

Filtruj według warunku

Operator where filtruje wiersze danych na podstawie określonych kryteriów.

Następujące zapytanie wyszukuje zdarzenia burzy w określonym State elemecie 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 Typ zdarzenia DamageProperty
2007-01-13T08:45:00Z 2007-01-13T10:30:00Z TEXAS Powódź 0
2007-01-13T09:30:00Z 2007-01-13T21:00:00Z TEXAS Powódź 0
2007-01-13T09:30:00Z 2007-01-13T21:00:00Z TEXAS Powódź 0
2007-01-15T22:00:00Z 2007-01-16T22:00:00Z TEXAS Powódź 20000
2007-03-12T02:30:00Z 2007-03-12T06:45:00Z TEXAS 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

Dane wyjściowe

StartTime EndTime Stan Typ zdarzenia DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z TEXAS Powódź 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z TEXAS Powódź 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z TEXAS Powódź 1000000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z TEXAS Powódź 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z TEXAS 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

Dane wyjściowe

StartTime EndTime Stan Typ zdarzenia DamageProperty
2007-08-18T21:30:00Z 2007-08-19T23:00:00Z TEXAS Powódź 5000000
2007-06-27T00:00:00Z 2007-06-27T12:00:00Z TEXAS Powódź 1200000
2007-06-28T18:00:00Z 2007-06-28T23:00:00Z TEXAS Powódź 1000000
2007-06-27T00:00:00Z 2007-06-27T08:00:00Z TEXAS Powódź 750000
2007-06-26T20:00:00Z 2007-06-26T23:00:00Z TEXAS 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żdego operatora 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 polecenia project , aby określić tylko kolumny, które chcesz wyświetlić, i użyć polecenia extend , aby dołączyć kolumnę obliczeniową na końcu tabeli.

Poniższe zapytanie tworzy kolumnę obliczeniową Duration z różnicą między wartościami 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

Dane wyjściowe

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

Dane wyjściowe

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 metody 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]

Dane wyjściowe

EventId Source FriendlyName
68796 Menedżer awaryjny Publiczne
... ... ...
72609 Firma użyteczności publicznej Prywatne
... ... ...

Następny krok

Teraz, gdy znasz już podstawy pisania zapytań Kusto, przejdź do następnego samouczka i dowiedz się, jak korzystać z funkcji agregacji, aby uzyskać lepszy wgląd w dane.