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

如何解析含未知键值对的字符串并生成动态Bag?

动态解析未知键值对到Bag的方法

假设你有一列Column1,里面存的是key1=value1, key2=value2,...这种格式的键值对,而且你既不知道键的名字,也不确定有多少个键值对,要把这些内容解析出来,打包成一个Bag类型的列(比如Bag1),比如把Column1: 'key1=value1, key2=value2'转成Bag1: { "key1": "value1", "key2": "value2" }。

用Kusto的话,不用依赖需要固定键名的parse运算符,按下面的步骤来:

完整查询示例

// 模拟测试数据
datatable(Column1:string)
[
    'key1=value1, key2=value2',
    'foo=bar, baz=qux, xyz=123'
]
// 1. 把整串键值对拆成单个条目数组
| extend KeyValuePairs = split(Column1, ', ')
// 2. 把数组展开成每行一个键值对
| mv-expand KeyValuePairs to typeof(string)
// 3. 自动解析每个键值对,提取键和值
| parse kv KeyValuePairs into Key, Value
// 4. 把同一原始行的键值对打包成Bag,聚合回原行
| summarize Bag1 = bag_pack(Key, Value) by Column1

步骤说明

  • split(Column1, ', '):按, 把Column1的字符串拆成单个键值对组成的数组
  • mv-expand KeyValuePairs:把数组展开,让每个键值对单独占一行
  • parse kv KeyValuePairs into Key, Value:这个运算符专门用来解析key=value格式的字符串,不用提前知道键名,自动把键和值提取到Key和Value列里
  • summarize Bag1 = bag_pack(Key, Value) by Column1:把同一原始行的所有键值对打包成一个Bag,再按原始的Column1聚合回去,恢复成一行对应一个Bag的格式

注意事项

  • 如果键值对之间的分隔符不是, (比如只有逗号没有空格,或者空格数量不固定),可以先拆分再去空格:把split(Column1, ',')后面加一步| extend KeyValuePairs = trim(' ', KeyValuePairs)
  • 如果值本身包含逗号,这种简单拆分的方法会出错,需要更复杂的逻辑处理,但如果是常规的键值对格式(值不含逗号),上面的方法完全够用

内容的提问来源于stack exchange,提问作者Matthias Güntert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:53:24