KQL 查詢的類型
您已在上一個單元中了解 KQL 查詢的結構。 現在讓我們深入了解 KQL 查詢的不同部分和類型。
本單元提供查詢陳述式和函式的概觀。 在 KQL 中,所有查詢都包含一或多個查詢陳述式。 這些陳述式只會影響使用的特定查詢,除非明確儲存供日後使用。 最常見的查詢陳述式類型是表格式運算式陳述式和 let 陳述式。 除了其內建函式的廣泛程式庫之外,KQL 還允許儲存或定義用於單一查詢的使用者定義函式。
表格式運算式陳述式
大部分查詢至少會使用一個表格式運算式陳述式,這表示其輸入和輸出都包含資料表或表格式資料集。 這些陳述式通常包含運算子,每個運算子的開頭都是表格式輸入,並傳回表格式輸出。
KQL 提供廣泛的運算子,範圍從簡單運算子 (例如 count
、sort
和 where
) 到較複雜的運算子 (例如 parse
、join
和 render
)。
例如,下列查詢包含四個表格式運算式陳述式:
StormEvents // tabular expression statement 1
| where EventType == "Flood" // tabular expression statement 2
| sort by DamageProperty asc // tabular expression statement 3
| take 10 // tabular expression statement 4
let 陳述式
let
陳述式會定義名稱與運算式之間的繫結。 您可以使用 let 陳述式來將長段查詢分解為較易於理解的小型具名部分。
例如,我們使用下列查詢中的 let
陳述式來定義純量值:
let n = 10; // number
let place = "VIRGINIA"; // string
let cutoff = ago(12345d); // datetime
StormEvents
| where StartTime > cutoff and State == place
| take n
內建函式
內建函式是由 KQL 定義的硬式編碼函式,無法修改。 KQL 有豐富的函式程式庫可供使用,您可以在官方 KQL 文件 (英文) 中找到。 函式的範圍從簡單的排序和比對,到複雜的統計和地理空間函式。
例如,下列 strcat()
函式會串連字串引數:
print str = strcat("hello", " ", "world")
使用者自訂函數
使用者定義函式如其名稱,是由使用者所定義。 我們可以將使用者定義的函式分成兩種類型:
預存函式:儲存和管理的資料庫結構描述實體的使用者定義函式,類似於資料表。 不同的產品會使用不同的方式來儲存函式。
例如,Azure 資料總管中的下列查詢會儲存採用參數的函式:
.create function with (docstring = 'Demo function with parameter', folder='Demo') MyFunction2(myLimit: long) {StormEvents | take myLimit}
在其他環境中,例如 Azure 監視器和 Microsoft Sentinel,您可以透過 UI 儲存查詢。
查詢定義的函式:在單一查詢範圍內定義和使用的使用者定義的函式。 這類函式的定義會透過 let 陳述式來完成。
例如,下列查詢會定義,然後使用函式 f:
let f=(a: string, b: string) { strcat(a, " (la la la) ", b) }; print f("hello", "world")