Kusto 查詢語言 (KQL) 概觀

Kusto 查詢語言 (KQL) 是一種功能強大的工具,可探索您的資料並探索模式、找出異常狀況和極端值、建立統計模型等。 KQL 是一種簡單但功能強大的語言,可查詢結構化、半結構化和非結構化數據。 語言具有表達性、容易閱讀和了解查詢意圖,並已針對撰寫體驗進行優化。 Kusto 查詢語言 最適合用於查詢遙測、計量和記錄,並深入支援文字搜尋和剖析、時間序列運算符和函式、分析和匯總、地理空間、向量相似度搜尋,以及提供最理想的數據分析語言的其他許多語言建構。 此查詢會使用組織在類似 SQL 的階層架構實體:資料庫、數據表和數據行。

本文提供查詢語言的說明,並提供實用的練習,讓您開始撰寫查詢。 若要存取查詢環境,請使用 Azure Data Explorer Web UI。 若要瞭解如何使用 KQL,請參閱 教學課程:瞭解一般運算符

什麼是 Kusto 查詢?

Kusto 查詢是一種負責處理資料並傳回結果的唯讀要求。 該要求是採用易於理解、撰寫及自動執行的資料流程模型,並採用純文字加以陳述。 Kusto 查詢是由一或多個查詢陳述式所組成。

什麼是查詢陳述式?

有三種使用者 查詢陳述式

所有查詢陳述式都會以 ; 分隔 (分號),並只會影響手中的查詢。

注意

如需應用程式查詢陳述式的詳細資訊,請參閱應用程式查詢陳述式

最常見的查詢陳述式種類是表格式運算式陳述式,這表示其輸入和輸出都是由資料表或表格式資料集所組成。 表格式陳述式包含零或多個運算子,每個運算子的開頭都是表格式輸入,並傳回表格式輸出。 運算子是由 | (管道) 所排序。 資料流程或輸送至下一個運算子的資料流程。 資料會在每個步驟進行篩選或操作,然後再送入下列步驟。

這就像是一種漏斗圖,您可以在圖中開始使用整個資料表。 每次資料通過另一個運算子時,就會進行篩選、重新排列或進行摘要。 因為從某個運算符到另一個運算子的信息管線是循序的,所以查詢運算符順序很重要,而且可能會影響結果和效能。 在漏斗圖的結尾,您會得到一個精簡的輸出。

讓我們看看以下範例查詢。

StormEvents 
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"  
| count 
Count
28

注意

KQL 對所有專案 (資料表名稱、資料表資料行名稱、運算子、函式等等) 都有區分大小寫。

該查詢具有單一表格式運算式陳述式。 陳述式的開頭是名為 StormEvents 的資料表參考,包含數個運算子,wherecount 而且每個運算子都以管道分隔。 接著會篩選來源資料表的資料列,先依 StartTime 資料行的值篩選,再以 State 資料行的值篩選。 在最後一行中,查詢會傳回具有單一資料行的資料表,以及包含其餘資料列計數的單一資料列。

若要嘗試更多 Kusto 查詢,請參閱 教學課程:撰寫 Kusto 查詢

管理命令

相較於 Kusto 查詢, 管理命令 是 Kusto 處理或修改資料或元數據的要求。 例如,下列管理命令會建立具有兩個數據行的新 Kusto 資料表, Level 以及 Text

.create table Logs (Level:string, Text:string)

管理命令有自己的語法,這不屬於 Kusto 查詢語言 語法的一部分,雖然兩者共用許多概念。 特別是,管理命令與查詢不同,方法是命令文字中的第一個字元是點 () . 字元 (無法啟動查詢) 。 這項區別可防止許多種類的安全性攻擊,只是因為它會防止在查詢內嵌管理命令。

並非所有管理命令都會修改數據或元數據。 以 .show 開頭的大型命令類別,會用來顯示中繼資料或資料。 例如,.show tables 命令會傳回目前資料庫中所有資料表的清單。

如需管理命令的詳細資訊,請參閱 管理命令概觀

其他服務中的 KQL

KQL 是由許多其他 Microsoft 服務使用。 如需在這些環境中使用 KQL 的特定資訊,請參閱下列連結: