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

使用Kusto Union算子保留所有聚合字段的技术求助

解决KQL中合并多聚合查询字段丢失/报错的问题

方案1:单次SUMMARIZE计算所有聚合(推荐)

无需拆分查询再合并,直接在一次summarize中同时计算所有需要的聚合值,既能保留所有字段,又能提升查询效率:

Values
| where ts between(datetime(2024-01-01T08:30:32.406Z) .. datetime(2024-09-30T23:45:32.406Z)) 
  and id in ('123') 
  and key in ('1', '2')
| summarize 
    avg_val = avg(val),
    min_val = min(val)
  by id, key, bin(ts, 1min)
| project id, key, ts, avg_val, min_val
| order by id, key, ts

方案2:补全UNION子查询的字段结构(需拆分查询时使用)

如果必须拆分查询再合并,需确保每个子查询的字段结构完全一致,缺失字段用dynamic(null)填充:

// 计算平均值,补全min_val字段为null
Values
| where ts between(datetime(2024-01-01T08:30:32.406Z) .. datetime(2024-09-30T23:45:32.406Z)) 
  and id in ('123') 
  and key in ('1', '2')
| summarize avg_val = avg(val) by id, key, bin(ts, 1min)
| project id, key, ts, avg_val, min_val = dynamic(null)
| union (
  // 计算最小值,补全avg_val字段为null
  Values
  | where ts between(datetime(2024-01-01T08:30:32.406Z) .. datetime(2024-09-30T23:45:32.406Z)) 
    and id in ('123') 
    and key in ('1', '2')
  | summarize min_val = min(val) by id, key, bin(ts, 1min)
  | project id, key, ts, avg_val = dynamic(null), min_val
)
| order by id, key, ts

你之前遇到的问题分析

  1. 第一种尝试字段丢失:第一个查询末尾的分号;将其标记为独立查询,后续union仅处理第二个查询,因此结果中看不到avg_val。去掉分号后虽能合并,但字段结构不一致会导致缺失字段显示为null,不如上述方案直观。
  2. 第二种尝试报错:
    • 'union' operator: Failed to resolve table expression named 'avg_data':多为let语句语法问题,需确保每个let语句末尾分号正确,且最后一行是执行合并的语句。
    • 'project' operator: Failed to resolve scalar expression named 'avg_val':summarize中未给聚合结果命名为avg_val,需改为summarize avg_val = avg(val)才能在project中引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:59:54