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

Kusto/ADX技术问询:能否在函数中通过参数重命名列?

在Kusto/ADX自定义函数中通过参数实现列重命名的方案

Kusto的project-rename运算符确实不支持直接使用变量作为新列名——它属于静态语法元素,查询解析阶段就需要确定列名,而变量是运行时才会求值的,所以无法直接适配。

要实现通过参数动态重命名列,可以用以下两种可行方案:

方案1:借助字典包与bag_unpack

通过动态构造包含目标列名的字典,再将字典展开为列,实现重命名效果:

.create-or-alter function XYZ(column_name: string) {
    let newColumnName = strcat(column_name, '_starDate');
    // 替换为你的实际数据源/查询逻辑
    datatable(oldColumnName: datetime)
    [
        datetime(2023-01-01),
        datetime(2023-01-02)
    ]
    | extend temp_bag = dynamic({})
    | extend temp_bag = bag_set_key(temp_bag, newColumnName, oldColumnName)
    | project-away oldColumnName
    | evaluate bag_unpack(temp_bag)
}

调用示例:

XYZ("order")

执行后会生成名为order_starDate的列,值对应原oldColumnName的数据。

方案2:用pack函数简化字典构造

如果不需要保留其他列,可以直接用pack生成包含目标列的字典,再展开:

.create-or-alter function XYZ(column_name: string) {
    let newColumnName = strcat(column_name, '_starDate');
    // 替换为你的实际数据源/查询逻辑
    datatable(oldColumnName: datetime)
    [
        datetime(2023-01-01),
        datetime(2023-01-02)
    ]
    | project pack(newColumnName, oldColumnName)
    | evaluate bag_unpack(pack1)
}

这两种方案都能在运行时根据传入的参数动态生成列名,替代project-rename无法支持变量的局限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:43:14