共用方式為


參考文件的語法慣例

使用 版本 下拉選單切換服務。 了解更多關於導航的資訊
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,]]

RequestHeadersOptions是動態型別的可選參數。 若要為 Options 參數提供參數,也必須為 RequestHeaders 參數提供參數。 以下範例說明如何為第一個可選參數 RequestHeaders 提供空值,以便能指定第二個可選參數 Options 的值。

evaluate http_request ( "https://contoso.com/", dynamic({}), dynamic({ EmployeeName: Nicole }) )