Kusto 查询语言 (KQL):它是什么?

发布日期:2026-06-19 09:10:05   来源 : 杭州电子商务研究院    作者 :Pluralsight 内容团队    浏览量 :11
Pluralsight 内容团队 杭州电子商务研究院 发布日期:2026-06-19 09:10:05  
11

想知道什么是 KQL,以及是否有人在键盘上输入了错误的 SQL?在本文中,我们将介绍所有基础知识:什么是 KQL、它与 SQL 有何不同以及人们使用它来做什么。我们还将分享如何开始使用一些基本 KQL 查询示例。

什么是 KQL?

Kusto 查询语言 (KQL) 是一种只读请求语言,用于为 Azure 数据资源管理器 (ADX)、Azure Monitor Log Analytics、Azure Sentinel 等编写查询。请求以纯文本形式陈述,使用易于阅读、编写和自动化的数据流模型。

在 KQL 中,运算符通过 |(竖线)进行排序,数据在每个步骤中都会经过筛选或处理,然后才会进入下一步。这种信息的顺序管道使得查询运算符的顺序变得非常重要,这会影响结果和性能。 

每个查询由一个或多个查询语句组成,这些查询语句可以是表格表达式语句、let 语句或 set 语句,所有语句之间用分号分隔。

KQL 是由 Microsoft 开发的,旨在纠正 SQL 的设计决策,并提供更直观、更强大的查询功能。例如,SQL 的结构以 SELECT 子句开头,这被视为阻碍了查询编写的自然流程。此外,SQL 的僵化结构需要繁琐的嵌套,并且针对不同场景的各种过滤子句也被视为令人困惑。 

KQL 用于什么?

由于 KQL 不会修改数据,因此它仅用于获取、筛选、分析和可视化数据。KQL 擅长处理大量结构化和半结构化数据,并且在 Azure 数据资源管理器中特别有用,它可以快速、交互式地分析大量数据。

然而,KQL 除了数据探索之外还有其他优势,例如:

  • 故障排除和诊断:凭借处理日志和遥测数据的能力,KQL 在识别异常、追踪错误和诊断系统问题方面发挥着至关重要的作用。

  • 实时分析: KQL 擅长分析实时数据流,使其成为物联网数据分析、用户行为分析、应用程序性能监控等应用的理想选择。

  • 数据可视化: KQL 查询可与 Azure 数据资源管理器和 Azure 仪表板结合使用,以创建直观、实时的数据可视化。

KQL 与 SQL:KQL 与 SQL 有何不同?

乍一看,SQL 和 KQL 除了名称之外还有很多相似之处。它们都用于检索数据,并且围绕数据库、表和列具有相似的层次结构。然而,它们的设计目的截然不同,因此在结构、用法和功能方面存在重大差异。

底层模型: KQL 使用数据流模型,其中每个步骤的输出和输入都是表格数据集,因此操作的顺序很重要。

用途: SQL 旨在管理关系数据库中的结构化数据。KQL 旨在查询实时分析场景中的大量结构化和半结构化数据,包括日志和遥测数据。

数据修改功能: SQL 是一种读写语言,这意味着它既可以获取也可以修改数据库中的数据。相比之下,KQL 是只读的,这意味着它只能用于查询和分析数据,而不能进行任何修改。

复杂性和学习曲线: SQL 以其复杂性而闻名,具有多个子句、子查询和复杂的连接功能,因此学习曲线更陡峭。相反,KQL 的设计更简单,专注于易于编写的日志查询,并提供内置函数来分析时间序列数据。

与 Azure 数据资源管理器集成: KQL 与 Azure 数据资源管理器原生集成,这意味着它在 Azure 生态系统中提供了更简化的性能和功能。SQL 虽然功能强大,但它是一种更通用的语言,并不专门与单个生态系统绑定。

从 SQL 过渡到 KQL

借助Microsoft 提供的便捷备忘单,您可以更轻松地从 SQL 过渡到 KQL ,该备忘单将 SQL 命令和概念映射到相应的 KQL。此备忘单涵盖了各种类别,例如从表中选择数据、空值评估、比较运算符、分组、聚合等。对于已经熟悉 SQL 并想学习 KQL 的人来说,这是一款很棒的工具。

微软还提供了将 SQL 查询转换为 KQL 的方法。通过在 SQL 查询前面添加注释行 -- 和关键字explain,您可以看到查询的 KQL 版本,这可以帮助您理解 KQL 语法和概念。

如何使用 KQL

虽然有关使用 KQL 的全面指南超出了本文的范围,但以下是有关使用该语言的简要概述:

  1. 设置:要开始使用 KQL,您需要有一个 Azure 帐户并设置 Azure 数据资源管理器。

  2. 基本查询:基本 KQL 查询遵循以下模式:<table_name> | where <condition> | project <columns>。例如,StormEvents | where State == "FLORIDA" | project StartTime, EndTime, State, EventType将返回佛罗里达州所有风暴事件的开始时间、结束时间、州和事件类型。

  3. 函数和运算符: KQL 支持各种运算符,用于算术、比较、逻辑运算和字符串操作。它还拥有丰富的函数库,用于数组处理、日期时间操作、机器学习等。

  4. 聚合和连接: KQL 支持通过聚合函数(如汇总、计数、平均值等)汇总数据。您还可以使用连接运算符在表之间执行连接,类似于 SQL

  5. 时间序列分析:使用make-series运算符,您可以创建时间序列并使用各种内置函数进行进一步分析。

在 KQL 中,所有内容都区分大小写,包括表名、表列名、运算符和函数

有关如何开始使用基本 KQL 配方进行 Azure 监控的详细概述,请查看 Amy Coughlin 的文章“如何使用 KQL 进行 Azure 监控(基本配方指南)”。

KQL 查询的一些示例

单语句 KQL 脚本

推文 | 其中语言 == “英语” | 汇总计数 = count() 按标签 | 按计数降序排序 | 取 10

因此,在此查询中,我们将分析一个名为Tweets的假设表,其中包含有关 Tweets 的数据(您猜对了)。以下是此查询的详细说明。

  • Tweets:这指定了我们要查询的表。在本例中,它是包含推文数据的表。
  • 其中 Language == "English":这是一个过滤器,仅选择 Language 列为 English 的行。管道符 | 用于将一个操作的输出传递到下一个操作。
  • 按 Hashtags 汇总 Count = count():按 Hashtags 列对数据进行分组,并计算每组中的行数。每组的计数存储在名为 Count 的新列中。
  • 按 Count desc 排序:按 Count 列的降序对输出进行排序。
  • take 10:这将输出限制为前 10 行。

因此,总而言之,整个查询就是找到英语推文中最常用的 10 个主题标签。

多语句 KQL 脚本

让 TopHashtags = Tweets | 总结 Count = count() 按 Hashtags | 按 Count 降序排序 | 取 10;
TopHashtags | 项目标签

在此示例中,有两个查询语句。第一个语句创建一个名为TopHashtags的变量,该变量保存前 10 个主题标签。第二个语句仅从TopHashtags中投影或选择Hashtags。这两个语句以分号分隔。

使用 KQL 查询检测未签名的驱动程序

下面是一个示例,说明安全分析师如何使用 KQL 通过查询设备事件日志并对数据应用过滤器来检测潜在的安全威胁(例如未签名的驱动程序)。

让 DriverLoads = DeviceImageLoadEvents | 其中 InitiatingProcessFileName == “spoolsv.exe”; DriverLoads

在此查询中,DeviceImageLoadEvents是被查询的表,where 运算符用于筛选数据。查询返回 InitiatingProcessFileName 等于“spoolsv.exe”的所有条目

KQL 命令和控制命令

除了 KQL 查询之外,Kusto 还支持控制命令。这些命令请求 Kusto 处理或修改数据或元数据。例如,控制命令可以创建新的 Kusto 表。 

控制命令有自己的语法,与 KQL 语法不同。它们与查询的区别在于,命令文本中的第一个字符是点 (.) 字符,该字符不能启动查询。这种区别有助于通过禁止在查询中嵌入控制命令来防止安全攻击。

了解有关监视 Azure 数据的详细信息

如果您有兴趣了解 Azure 中可以生成值得使用 KQL 查询的数据的功能,请查看 Amy Coughlin 的 Azure 认证课程,标题为“ AZ-204:为 Microsoft Azure 开发解决方案”。 您还可以查看Pluralsight 的 Azure 数据学习路径,其中有适合所有人的视频课程,从 Azure 初学者到专业人士。

有关 KQL 的其他常见问题解答

KQL 容易学习吗?

是的!与 SQL 相比,KQL 的语法和结构设计得易于阅读和编写,这可能使它比 SQL 更适合新手使用。但是,与任何语言一样,掌握 KQL 需要练习和经验。

KQL 比 SQL 更好吗?

KQL 是否“优于”SQL 在很大程度上取决于具体用例。KQL 的数据流模型比 SQL 的刚性结构更直观、更灵活,尤其是对于复杂的数据分析任务而言。然而,SQL 仍然是关系数据库管理系统的标准,拥有庞大的用户群和生态系统。

 

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据