教學課程:瞭解常見運算符
Kusto 查詢語言 (KQL) 可用來在 Azure Data Explorer、Azure 監視器 Log Analytics、Azure Sentinel 等等中撰寫查詢。 本教學課程是用來存取和分析數據的基本 KQL 運算符簡介。
如需如何在 Azure 監視器中查詢記錄的詳細指引,請參閱 開始使用記錄查詢。
在本教學課程中,您將了解如何:
本教學課程中的範例會 StormEvents
使用可在 說明 叢集中公開提供的數據表。 若要使用您自己的數據進行探索, 請建立您自己的免費叢集。
必要條件
- 用來登入說明叢集的 Microsoft 帳戶或 Microsoft Entra 使用者身分識別
計數資料列
首先,使用 count 運算符來尋找數據表中的 StormEvents
Storm 記錄數目。
StormEvents
| count
輸出
計數 |
---|
59066 |
查看數據的範例
若要了解數據,請使用 take 運算符來檢視記錄範例。 這個運算符會從數據表傳回指定數目的任意數據列,這對於預覽一般數據結構和內容很有用。
StormEvents
| take 5
下表只顯示22個傳回數據行的6個。 若要查看完整的輸出,請執行查詢。
StartTime | EndTime | EpisodeId | EventId | 州 | EventType | ... |
---|---|---|---|---|---|---|
2007-09-20T21:57:00Z | 2007-09-20T22:05:00Z | 11078 | 60913 | 佛羅里達州 | 龍捲風 | ... |
2007-12-20T07:50:00Z | 2007-12-20T07:53:00Z | 12554 | 68796 | 密西西比州 | Thunderstorm Wind | ... |
2007-12-30T16:00:00Z | 2007-12-30T16:05:00Z | 11749 | 64588 | 喬治亞州 | Thunderstorm Wind | ... |
2007-09-29T08:11:00Z | 2007-09-29T08:11:00Z | 11091 | 61032 | 大西洋南部 | 水龍捲 | ... |
2007-09-18T20:00:00Z | 2007-09-19T18:00:00Z | 11074 | 60904 | 佛羅里達州 | 暴雨 | ... |
選取資料行的子集
使用 項目 運算符來簡化檢視,並選取特定數據行子集。 使用 project
通常比檢視所有數據行更有效率且更容易閱讀。
StormEvents
| take 5
| project State, EventType, DamageProperty
輸出
州 | EventType | DamageProperty |
---|---|---|
大西洋南部 | 水龍捲 | 0 |
佛羅里達州 | 暴雨 | 0 |
佛羅里達州 | 龍捲風 | 6200000 |
喬治亞州 | Thunderstorm Wind | 2000 |
密西西比州 | Thunderstorm Wind | 20000 |
列出唯一值
根據上一個查詢的結果,它似乎有多個類型的 Storm。 使用 相異 運算符來列出所有唯一的 storm 類型。
StormEvents
| distinct EventType
數據表中有 46 種類型的 Storm。 以下是其中10個範例。
EventType |
---|
Thunderstorm Wind |
Hail |
Flash Flood |
乾旱 |
冬季天氣 |
暴風雪 |
大雪 |
強風 |
水/凍結 |
Flood |
... |
依條件篩選
where 運算符會根據特定準則篩選數據列。
下列查詢會在特定 EventType
的特定 中State
尋找 storm 事件。
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| project StartTime, EndTime, State, EventType, DamageProperty
有146個事件符合這些條件。 以下是其中5個範例。
StartTime | EndTime | 州 | EventType | DamageProperty |
---|---|---|---|---|
2007-01-13T08:45:00Z | 2007-01-13T10:30:00Z | 德克薩斯州 | Flood | 0 |
2007-01-13T09:30:00Z | 2007-01-13T21:00:00Z | 德克薩斯州 | Flood | 0 |
2007-01-13T09:30:00Z | 2007-01-13T21:00:00Z | 德克薩斯州 | Flood | 0 |
2007-01-15T22:00:00Z | 2007-01-16T22:00:00Z | 德克薩斯州 | Flood | 20000 |
2007-03-12T02:30:00Z | 2007-03-12T06:45:00Z | 德克薩斯州 | Flood | 0 |
... | ... | ... | ... | ... |
排序結果
若要檢視德州造成最大損壞的頂端水流,請使用 排序 運算符,根據 DamageProperty
數據行以遞減順序排列數據列。 預設排序順序為遞減。 若要以遞增順序排序,請指定 asc
。
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| sort by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty
輸出
StartTime | EndTime | 州 | EventType | DamageProperty |
---|---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | 德克薩斯州 | Flood | 5000000 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | 德克薩斯州 | Flood | 1200000 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | 德克薩斯州 | Flood | 1000000 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | 德克薩斯州 | Flood | 750000 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | 德克薩斯州 | Flood | 750000 |
... | ... | ... | ... | ... |
取得前 n 個數據列
top 運算符會傳回依指定數據行排序的前 n 個數據列。
下列查詢會傳回造成最損毀屬性的五個德州水流。
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty
輸出
StartTime | EndTime | 州 | EventType | DamageProperty |
---|---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | 德克薩斯州 | Flood | 5000000 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | 德克薩斯州 | Flood | 1200000 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | 德克薩斯州 | Flood | 1000000 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | 德克薩斯州 | Flood | 750000 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | 德克薩斯州 | Flood | 750000 |
注意
運算子的順序很重要。 如果您在此放置 top
之前 where
,將會得到不同的結果。 這是因為每個運算子會依序轉換數據。 若要深入瞭解,請參閱 表格式表達式語句。
建立計算結果欄
使用 project
只指定您想要檢視的數據行,並使用 extend
將匯出數據行附加至數據表結尾。
下列查詢會建立計算結果Duration
列,StartTime
EndTime
其與之間的差異。 由於我們只想要檢視幾個選取的數據行,因此在此情況下,使用 project
是較佳的選擇。
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| project StartTime, EndTime, Duration = EndTime - StartTime, DamageProperty
輸出
StartTime | EndTime | 持續時間 | 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 |
如果您查看計算數據 Duration
行,您可能會注意到造成最大損害的災害也是最長的災害。
使用 extend
來檢視導出數據 Duration
行以及所有其他數據行。 數據 Duration
行會新增為最後一個數據行。
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| extend Duration = EndTime - StartTime
輸出
StartTime | EndTime | ... | 持續時間 |
---|---|---|---|
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 |
將值從某個集合對應到另一個集合
靜態對應是變更結果呈現的實用技巧。 在 KQL 中,執行靜態對應的其中一種方式是使用動態字典和存取子,將值從一個集合對應到另一個集合。
let sourceMapping = dynamic(
{
"Emergency Manager" : "Public",
"Utility Company" : "Private"
});
StormEvents
| where Source == "Emergency Manager" or Source == "Utility Company"
| project EventId, Source, FriendlyName = sourceMapping[Source]
輸出
EventId | Source | FriendlyName |
---|---|---|
68796 | Emergency Manager | 公開 |
... | ... | ... |
72609 | 公用程式公司 | 私人 |
... | ... | ... |
後續步驟
既然您已熟悉撰寫 Kusto 查詢的基本概念,請繼續進行下一個教學課程,並瞭解如何使用聚合函數來深入瞭解您的數據。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應