如何在KQL中为数组输入生成合并动态输出列?
解决KQL函数处理数组输入并合并输出的问题
当然支持数组输入,你可以通过array_for_each结合make_bag实现需求,修改后的KQL代码如下:
let T = datatable(a:string, b:dynamic) [ "hello", dynamic({"A":1,"B":2,"value1":3}), "world", dynamic({"value1":4,"value2":5}), ]; let F = (T:(b:dynamic), input: dynamic) { T | extend new_output_column = make_bag(array_for_each(input, x => bag_pack(x, b.value1))) }; let input= dynamic(["input1", "input2"]); T | invoke F(input)
代码说明:
array_for_each(input, x => bag_pack(x, b.value1)):遍历输入数组的每个元素x,将x作为键、当前行的b.value1作为值,生成单个键值对的动态对象。make_bag:将array_for_each生成的多个小动态对象合并成完整的动态列,即你需要的new_output_column。
执行后输出完全符合预期:
a b new_output_column hello {"A":1,"B":2,"value1":3} {"input1":3,"input2":3} world {"value1":4,"value2":5} {"input1":4,"input2":4}
内容的提问来源于stack exchange,提问作者DxG
相关产品推荐
相关产品推荐

