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:
- 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 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.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla