Kusto 查询语言 (KQL) 是一种功能强大的工具,用于探索数据、发现模式、识别异常和离群值、创建统计建模等。 该查询使用以类似于 SQL 的层次结构组织的架构实体:数据库、表和列。
本文提供了查询语言的说明,并提供用于开始编写查询的实用练习。 若要访问查询环境,请使用
Azure 数据资源管理器 Web UI
。
什么是 Kusto 查询?
Kusto 查询是处理数据并返回结果的只读请求。 该请求用纯文本形式表示,使用的数据流模型易于读取、创作和自动执行。 Kusto 查询由一个或多个查询语句组成。
什么是查询语句?
有三种类型的用户
查询语句
:
表格表达式语句
Let 语句
Set 语句
所有查询语句都用
;
(分号)分隔,并且仅影响当前查询。
有关应用程序查询语句的信息,请参阅
应用程序查询语句
。
最常见的查询语句类型为表格表达式语句,这意味着它的输入和输出都包含表或表格数据集。 表格语句包含零个或多个运算符,其中每个运算符都以表格输入开头,并返回表格输出。 运算符按
|
(竖线)进行排序。 数据从一个运算符流向或发送到下一个运算符。 每个步骤都将对数据进行筛选或操作,然后将结果用于接下来的步骤。
这类似于一个漏斗图,开始时可获得一个完整数据表。 每次数据通过另一个运算符时,都会经过筛选、重排或汇总。 由于通过管道将信息从一个运算符发送到另一个运算符是按顺序进行操作,因此查询运算符顺序非常重要,并且可能会影响结果和性能。 在漏斗图的末尾将会得到精简的输出。
接下来看一个示例查询。
StormEvents
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"
| count
KQL 对所有内容(表名、表列名、运算符、函数等)区分大小写。
此查询有一个表格表达式语句。 该语句以对“StormEvents”表的引用开头,并包含多个运算符(where 和 count),每个运算符用竖线进行分隔。 源表的数据行先按 StartTime 列的值进行筛选,然后再按 State 列的值进行筛选。 在上一行中,查询返回包含一列和一行的表,其中包含剩余行的计数。
若要尝试更多 Kusto 查询,请参阅教程:编写 Kusto 查询。
与 Kusto 查询相比, 管理命令 是向 Kusto 发出的处理或修改数据或元数据的请求。 例如,以下管理命令创建一个包含两列 Level 和 Text的新 Kusto 表:
.create table Logs (Level:string, Text:string)
管理命令有自己的语法,这不属于Kusto 查询语言语法,尽管这两个命令有许多概念。 具体而言,管理命令通过命令文本中的第一个字符是点 () . 字符 (无法启动查询) 来区分查询。
这种区别可以防止多种安全攻击,只是因为它可以防止在查询中嵌入管理命令。
并非所有管理命令都会修改数据或元数据。 以 .show 开头的一大类命令用于显示元数据或数据。 例如,.show tables 命令返回一个列表,其中包含当前数据库中的所有表。
有关管理命令的详细信息,请参阅 管理命令概述。
教程:了解常用运算符
教程:使用聚合函数
KQL 快速参考
SQL 到 Kusto 备份单
查询最佳做法
使用 T-SQL 查询数据