You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Kusto的let语句转换为Elasticsearch ES|QL语法?

Kusto let 变量转 ES|QL 语法方案

在ES|QL中,对应Kusto里let定义临时结果集的功能是WITH子句(公共表达式CTE),具体转换规则和示例如下:

核心转换逻辑

Kusto用let <变量名> = <查询语句>定义临时数据集,ES|QL则通过WITH <变量名> AS (<ES|QL查询块>)来创建命名的临时结果集,之后在主查询中直接引用该名称即可。

基础示例转换

Kusto 原查询

let myVar = MyTable|summarize count() by blahblah;
// 后续基于myVar的查询
myVar | where count_ > 10

对应的 ES|QL 查询

WITH myVar AS (
    FROM MyTable
    SUMMARIZE count() BY blahblah
)
FROM myVar
WHERE count > 10

注意:ES|QL中count()聚合的默认列名为count,而Kusto中是count_,如果需要统一列名,可以显式指定别名:

WITH myVar AS (
    FROM MyTable
    SUMMARIZE count() AS count_ BY blahblah
)
FROM myVar
WHERE count_ > 10

多变量场景转换

如果有多个let变量,ES|QL的WITH子句支持用逗号分隔多个临时结果集:

Kusto 原查询

let errorLogs = Logs | where Level == "Error";
let errorCount = errorLogs | summarize count() by ServiceName;
errorCount | where count_ > 50

对应的 ES|QL 查询

WITH errorLogs AS (
    FROM Logs
    WHERE Level == "Error"
),
errorCount AS (
    FROM errorLogs
    SUMMARIZE count() BY ServiceName
)
FROM errorCount
WHERE count > 50

关键语法差异提示

  • Kusto的过滤关键字是where,ES|QL标准用WHERE(大小写不敏感,但推荐大写)
  • Kusto的summarize在ES|QL中完全兼容,也可以使用STATS实现相同聚合功能
  • 临时结果集在ES|QL中属于CTE,作用域覆盖整个后续查询,和Kusto的let变量作用域一致

内容的提问来源于stack exchange,提问作者moutonjr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:44:52