教學課程:瞭解常見運算子
Kusto 查詢語言 (KQL) 可用來在Azure Data Explorer、Azure 監視器 Log Analytics、Azure Sentinel等等中撰寫查詢。 本教學課程是用來存取和分析資料的基本 KQL 運算子簡介。
在本教學課程中,您將了解如何:
本教學課程中的範例會使用 StormEvents
說明叢集中公開提供的資料表。 若要使用您自己的資料進行探索, 請建立您自己的免費叢集。
必要條件
- 用來登入說明叢集的 Microsoft 帳戶或 Azure Active Directory 使用者身分識別
計數資料列
首先,使用 計數 運算子來尋找資料表中的 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]
輸出
EpisodeId | 來源 | FriendlyName |
---|---|---|
68796 | Emergency Manager | 公開 |
... | ... | ... |
72609 | 公用程式公司 | 私人 |
... | ... | ... |
下一步
現在您已熟悉撰寫 Kusto 查詢的基本概念,請繼續進行下一個教學課程,並瞭解如何使用匯總函式來深入瞭解您的資料。
意見反應
提交並檢視相關的意見反應