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

如何在Kusto中用变量引用列列表实现summarize汇总?

用变量引用列列表实现KQL汇总统计的可行方案

问题背景

需要通过变量引用列列表实现KQL的summarize分组统计,而非逐个指定列。

原始工作代码

let data = datatable(Category: string, Category2: string)
[
    'A', 'X',
    'A', 'X',
    'A', 'X',
    'B', 'Y',
    'B', 'Y',
    'B', 'Y',
    'B', 'Y',
    'C', 'Z',
    'C', 'Z',
    'C', 'Z',
    'C', 'Z',
    'C', 'T'
];
data
| summarize count() by Category, Category2

错误尝试及报错

尝试用pack_array定义列列表直接分组,代码如下:

let data = datatable(Category: string, Category2: string)
[
    'A', 'X',
    'A', 'X',
    'A', 'X',
    'B', 'Y',
    'B', 'Y',
    'B', 'Y',
    'B', 'Y',
    'C', 'Z',
    'C', 'Z',
    'C', 'Z',
    'C', 'Z',
    'C', 'T'
];
let columns = pack_array('Category', 'Category2');
data
| summarize count() by columns

运行报错:

Summarize group key '' is of a 'dynamic' type. Please use an explicit cast (for example, 'summarize ... by tostring()') as grouping by a 'dynamic' type is not supported.

可行解决方案

KQL不支持直接用动态数组作为summarize by的参数,但可以通过以下两种方法实现需求:

方法1:用make_tuple打包列后分组再展开

let data = datatable(Category: string, Category2: string)
[
    'A', 'X',
    'A', 'X',
    'A', 'X',
    'B', 'Y',
    'B', 'Y',
    'B', 'Y',
    'B', 'Y',
    'C', 'Z',
    'C', 'Z',
    'C', 'Z',
    'C', 'Z',
    'C', 'T'
];
let columns = dynamic(['Category', 'Category2']);
data
| extend group_key = make_tuple(*columns)
| summarize count() by group_key
| evaluate bag_unpack(group_key)
  • 逻辑:先将指定列打包成元组作为临时分组键,完成统计后再用bag_unpack将元组展开为原始列。

方法2:用pack打包成动态对象后分组再展开

let data = datatable(Category: string, Category2: string)
[
    'A', 'X',
    'A', 'X',
    'A', 'X',
    'B', 'Y',
    'B', 'Y',
    'B', 'Y',
    'B', 'Y',
    'C', 'Z',
    'C', 'Z',
    'C', 'Z',
    'C', 'Z',
    'C', 'T'
];
let columns = dynamic(['Category', 'Category2']);
data
| extend group_bag = pack(columns)
| summarize count() by group_bag
| evaluate bag_unpack(group_bag)
  • 逻辑:将指定列打包成动态键值对对象,按对象分组统计后,再展开对象为原始列。

补充说明

如果需要更灵活的动态查询场景(比如列列表来自外部输入),还可以通过字符串拼接生成KQL语句,再用execute操作符执行,但上述两种方法更适合常规场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:31:18