你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Kusto 查询语言 (KQL) 概述

适用于:✅Microsoft FabricAzure 数据资源管理器Azure MonitorMicrosoft Sentinel

Kusto 查询语言(KQL)是一种功能强大的工具,用于浏览数据和发现模式、识别异常和离群值、创建统计建模等。 KQL 是一种简单而强大的语言,用于查询结构化、半结构化和非结构化数据。 语言具有表达性、易于阅读和理解查询意向,并针对创作体验进行优化。 Kusto 查询语言最适合用于查询遥测、指标和日志,并深度支持文本搜索和分析、时序运算符和函数、分析和聚合、地理空间、矢量相似性搜索,以及许多其他语言构造,为数据分析提供最佳语言。 该查询使用在类似于 SQL 的层次结构中组织的架构实体:数据库、表和列。

本文提供查询语言的说明,并提供实际练习来帮助你开始编写查询。 若要访问查询环境,请使用 Azure 数据资源管理器 Web UI。 若要了解如何使用 KQL,请参阅 教程:了解常见运算符

本文提供查询语言的说明,并提供实际练习来帮助你开始编写查询。 若要访问查询环境,请使用 KQL 查询集。 若要了解如何使用 KQL,请参阅 教程:了解常见运算符

什么是 Kusto 查询?

Kusto 查询是处理数据和返回结果的只读请求。 该请求使用易于读取、创作和自动化的数据流模型以纯文本形式声明。 Kusto 查询由一个或多个查询语句组成。

什么是查询语句?

有三种类型的用户 查询语句

所有查询语句都用 ;(分号)分隔,并且只影响手头的查询。

注意

有关应用程序查询语句的信息,请参阅 应用程序查询语句

最常见的查询语句类型是表格表达式 语句,这意味着其输入和输出都包含表或表格数据集。 表格语句包含零个或多个 运算符,每个运算符以表格输入开头,并返回表格输出。 运算符按 |(管道)排序。 数据流,或通过管道从一个运算符到下一个运算符。 在每个步骤中筛选或操作数据,然后馈送到以下步骤中。

这就像漏斗图,从整个数据表开始。 每次数据通过另一个运算符时,都会对其进行筛选、重新排列或汇总。 由于从一个运算符到另一个运算符的信息的管道是连续的,因此查询运算符顺序非常重要,并且可能会影响结果和性能。 漏斗图结束时,会留下一个优化输出。

让我们看看一个示例查询。

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

注意

KQL 对于所有内容都区分大小写 - 表名、表列名、运算符、函数等。
关键字可以通过将关键字括在括号和引号([''][""])中来用作标识符。 例如,['where']。 有关详细信息,请参阅 标识符命名规则

此查询具有单个表格表达式语句。 该语句以对名为 stormEvents 的表的引用开头,并包含多个运算符,wherecount,每个运算符由管道分隔。 源表的数据行按 StartTime 列的值进行筛选,然后按 State 列的值进行筛选。 在最后一行中,查询返回一个表,其中包含一列和一行,其中包含剩余行的计数。

若要尝试更多 Kusto 查询,请参阅 教程:编写 Kusto 查询。

管理命令

与 Kusto 查询不同,管理命令 是向 Kusto 请求处理或修改数据或元数据。 例如,下面的管理命令创建一个新的 Kusto 表,其中包含两列,LevelText

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

管理命令有自己的语法,这不是 Kusto 查询语言语法的一部分,尽管两者共享了许多概念。 具体而言,管理命令通过命令文本中的第一个字符是点(.)字符(无法启动查询)来区分查询。 这种区别可以防止多种安全攻击,只是因为它阻止在查询中嵌入管理命令。

并非所有管理命令都修改数据或元数据。 从 .show开始的大型命令类用于显示元数据或数据。 例如,.show tables 命令返回当前数据库中所有表的列表。

有关管理命令的详细信息,请参阅 管理命令概述

其他服务中的 KQL

KQL 由许多其他Microsoft服务使用。 有关在这些环境中使用 KQL 的具体信息,请参阅以下链接: