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

Kusto映射遍历dynamic数组返回表而非动态数组问题咨询

Kusto dynamic数组映射遍历实现方案

原有实现的问题

自定义函数中使用range+summarize的管道逻辑默认返回单列表结构,而非标量dynamic类型数组,不符合调用预期。原有实现代码如下:

let ArrayMap = (arr: dynamic) {
    range x from 0 to array_length(arr) - 1 step 1
    | summarize x = make_list(strcat('--', arr[x], '--'))
};
ArrayMap(dynamic(["a", "b", "c"]))

推荐方案:使用内置array_map函数

当前Kusto已原生提供array_map高阶函数,可直接对数组元素做遍历映射,无需自行实现索引遍历逻辑,返回结果直接为dynamic类型数组。lambda表达式内可编写任意符合Kusto语法的元素处理逻辑,支持类型判断、数值计算、字符串处理等各类操作。
示例代码:

// 直接调用内置函数实现元素前后拼接--的需求
print mapped_result = array_map((elem) { strcat("--", elem, "--") }, dynamic(["a", "b", "c"]))

执行后返回的mapped_result值为dynamic(["--a--", "--b--", "--c--"]),为标准标量数组值,可直接在后续逻辑中引用。

兼容方案:修正自定义函数

若所在集群版本较低不支持array_map,可在原有自定义函数逻辑外层增加toscalar()函数,将表格返回结果转换为标量值,修改后代码如下:

let ArrayMap = (arr: dynamic) {
    toscalar(
        range x from 0 to array_length(arr) - 1 step 1
        | summarize make_list(strcat('--', arr[x], '--'))
    )
};
// 调用示例
print result = ArrayMap(dynamic(["a", "b", "c"]))

注意:自定义实现中不要给make_list生成的列设置与range索引变量同名的别名,避免出现变量引用歧义。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:12:18