使用 版本 下拉選單切換服務。 了解更多關於導航的資訊。
Apply to: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
本文概述 了 Kusto 查詢語言(KQL) 及 管理指令 參考文件中所遵循的語法慣例。
學習 Kusto 查詢語言的一個好起點是了解整體的查詢結構。 當你查看 Kusto 查詢時,首先會注意到的是管子符號(|)。 Kusto 查詢的結構從取得資料來源資料開始,然後將資料傳遞到 管線中,每個步驟都提供一定程度的處理,然後再將資料傳到下一步。 在流程結束時,你會得到最終結果。 實際上,這就是我們的流程:
Get Data | Filter | Summarize | Sort | Select
將資料沿管線傳遞的概念,讓整個結構直覺易懂,因為在每個步驟中都能輕鬆建立出資料的心像。
為了說明這點,我們來看看以下查詢,它檢視的是 Microsoft Entra 的登入日誌。 當你閱讀每一行時,可以看到關鍵字,代表資料的變化。 我們在每行都以註解形式標註了相關階段。
備註
你可以在查詢中的任何一行加上雙斜線(//)。
SigninLogs // Get data
| evaluate bag_unpack(LocationDetails) // Ignore this line for now; we'll come back to it at the end.
| where RiskLevelDuringSignIn == 'none' // Filter
and TimeGenerated >= ago(7d) // Filter
| summarize Count = count() by city // Summarize
| sort by Count desc // Sort
| take 5 // Select
由於每個步驟的輸出同時作為下一步驟的輸入,步驟的順序可以決定查詢的結果並影響其效能。 你必須根據你想從查詢中獲得什麼來排序步驟。
小提示
- 一個不錯的經驗法則是提早篩選資料,這樣你只會把相關資料傳到流程中。 這大幅提升效能,確保你不會在摘要步驟中意外加入無關資料。
- 本文指出了一些其他值得注意的最佳實務。 欲獲得更完整的清單,請參閱 查詢最佳實務。
語法慣例
| 慣例 | Description |
|---|---|
Block |
字串字面值必須完全按照圖示輸入。 |
| 斜體 | 參數在使用函式或指令時提供值。 |
| [ ] | 表示隨附物品為可選。 |
| ( ) | 表示至少需要其中一項物品。 |
| |(笛聲) | 用方括號或圓括號表示你可以指定用管子字元分隔的項目之一。 在此形式下,管線等同於邏輯上的 OR 運算子。 當 在區塊中|(),管線是 KQL 查詢語法的一部分。 |
[, ...] |
表示前一個參數可以重複多次,並以逗號分隔。 |
; |
查詢陳述句終止符。 |
範例
純量函數
此範例展示了 雜湊函數的語法及範例使用,接著說明每個語法元件如何轉譯成範例用法。
語法
hash(
來源 [,模組])
範例使用方式
hash("World")
- 函數
hash名稱 、 及開頭括號均如圖所示輸入。 - 「世界」作為所需 來源 參數的參數傳遞。
- mod 參數不 需參數,該參數可選,如方括號所示。
- 括號的輸入方式完全如圖所示。
表格運算子
此範例展示了 排序運算子的語法及範例用法,接著說明每個語法元件如何轉換成範例用法。
語法
T| sort by欄目 [asc | desc] [nulls first | nulls last] [, ...]
範例使用方式
StormEvents
| sort by State asc, StartTime desc
- StormEvents 表格會作為所需 T 參數的參數傳遞。
-
| sort by輸入方式完全如圖所示。 在這種情況下,pipe 字元是 表格表達式語句 語法的一部分,由區塊文字表示。 欲了解更多,請參閱 「什麼是查詢陳述」。 - State 欄位作為所需 欄位 參數的參數,並附加可選
asc旗標。 - 逗號後,會傳遞另一組參數:帶有可選
desc標誌的 StartTime 欄位。 [,...] 語法表示可以傳遞更多參數集,但並非必須。
使用可選參數
若要為緊接於另一個選用參數後的可選參數提供參數,必須為先前的參數提供參數。 此要求是因為參數必須遵循語法中指定的順序。 如果你沒有特定參數要傳遞的值,就使用同類型的空值。
序列可選參數範例
請參考 http_request 外掛的語法:
evaluate
http_request
(
Uri [ RequestHeaders,]]
RequestHeaders 與 Options是動態型別的可選參數。 若要為 Options 參數提供參數,也必須為 RequestHeaders 參數提供參數。 以下範例說明如何為第一個可選參數 RequestHeaders 提供空值,以便能指定第二個可選參數 Options 的值。
evaluate http_request ( "https://contoso.com/", dynamic({}), dynamic({ EmployeeName: Nicole }) )