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

Kusto查询动态传入列名作为参数的可行性及实现问题

Kusto 动态传入列名参数的解决方案

问题原因

你当前的写法存在两处问题:

  1. 代码中['column']属于硬编码,实际是引用名为column的固定列,和你传入的column参数没有关联,无法实现动态指定列的效果
  2. 你写的调用示例仅传入了1个参数,不符合你定义的函数需要传入timespan类型时间范围、string类型列名两个入参的要求

实现方法

Kusto 完全支持动态传入列名作为参数的需求,通过内置的column()函数即可实现,该函数接收字符串类型的列名参数,返回对应名称的列值。

修正后的可运行代码如下:

let foo = (duration: timespan, colName:string) {
    SigninLogs
    | where TimeGenerated >= ago(duration) 
    | summarize totalPerCol = count() by column(colName)
};
// 调用示例:统计最近7天按UserPrincipalName列分组的登录次数
foo(7d, 'UserPrincipalName')

注意事项

  • 传入的列名必须和目标表中的实际列名完全匹配(大小写敏感),否则会返回空结果或者运行报错
  • 如果需要给动态生成的分组列设置固定别名,可以在summarize后增加重命名逻辑,示例:
    let foo = (duration: timespan, colName:string) {
        SigninLogs
        | where TimeGenerated >= ago(duration) 
        | summarize totalPerCol = count() by column(colName)
        | extend 统计维度 = column(colName)
        | project-away column_colName // 移除默认生成的动态列名
    };
    
  • 该方法同样适用于extend、where、project等其他算子的动态列引用场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:06:05