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 的資料表參考,包含數個運算子,where
和 count
而且每個運算子都以管道分隔。 接著會篩選來源資料表的資料列,先依 StartTime 資料行的值篩選,再以 State 資料行的值篩選。 在最後一行中,查詢會傳回具有單一資料行的資料表,以及包含其餘資料列計數的單一資料列。
若要嘗試更多 Kusto 查詢,請參閱 教學課程:撰寫 Kusto 查詢。
管理命令
相較於 Kusto 查詢, 管理命令 是 Kusto 處理或修改資料或元數據的要求。 例如,下列管理命令會建立具有兩個數據行的新 Kusto 資料表, Level
以及 Text
:
.create table Logs (Level:string, Text:string)
管理命令有自己的語法,這不屬於 Kusto 查詢語言 語法的一部分,雖然兩者共用許多概念。 特別是,管理命令與查詢不同,方法是命令文字中的第一個字元是點 () .
字元 (無法啟動查詢) 。
這項區別可防止許多種類的安全性攻擊,只是因為它會防止在查詢內嵌管理命令。
並非所有管理命令都會修改數據或元數據。 以 .show
開頭的大型命令類別,會用來顯示中繼資料或資料。 例如,.show tables
命令會傳回目前資料庫中所有資料表的清單。
如需管理命令的詳細資訊,請參閱 管理命令概觀。
其他服務中的 KQL
KQL 是由許多其他 Microsoft 服務使用。 如需在這些環境中使用 KQL 的特定資訊,請參閱下列連結:
- Azure 監視器中的記錄查詢
- Microsoft Sentinel 中的 Kusto 查詢語言
- 了解 Azure Resource Graph 查詢語言
- 透過 Microsoft 365 Defender 中的進階搜捕主動搜捕威脅
- CMPivot 查詢
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應