在Kusto中如何从两列创建dynamic类型字典?
问题
现有如下数据表,如何从keys和vals两列创建dynamic类型的字典(示例:{"a":"1", "b":"2", …})?
数据表定义:
let test = datatable ( keys: string, vals: string ) [ "a,b,c,d", "1,2,3,4" ];
已知split()和zip()函数会生成数组的数组,无法直接与todynamic()配合使用。
解决方案
可以通过拼接JSON格式字符串再转换的方式实现,具体代码如下:
let test = datatable ( keys: string, vals: string ) [ "a,b,c,d", "1,2,3,4" ]; test | extend keys_arr = split(keys, ","), vals_arr = split(vals, ",") // 遍历数组,将对应位置的键值对拼接为JSON键值对格式 | extend key_value_pairs = array_map(i, strcat('"', keys_arr[i], '":"', vals_arr[i], '"')) // 拼接成完整的JSON字典字符串,再转为dynamic类型 | extend dict = todynamic(strcat("{", strcat_array(key_value_pairs, ","), "}")) | project keys, vals, dict
步骤说明
- 使用
split()将keys和vals列按逗号拆分为字符串数组keys_arr和vals_arr - 通过
array_map()遍历数组索引,把每个对应位置的键和值拼接成带双引号的标准JSON键值对(如"a":"1") - 用
strcat_array()将所有键值对用逗号连接,再用strcat()包裹大括号,生成完整的JSON字典字符串 - 最后调用
todynamic()将字符串转换为dynamic类型的字典
内容的提问来源于stack exchange,提问作者Motoko
相关产品推荐
相关产品推荐

