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

如何不使用parse函数从键值对分隔文本生成对应列?

不用parse函数实现键值对转列的方案

我的输入包含一个带有分隔文本的字段,格式为列名后跟“=”再跟对应值。我希望以“=”前的内容作为列名,“=”后的内容作为值来创建列,请问有没有办法不使用parse函数实现这个需求?

可以通过字符串处理+JSON解析+动态对象展开的组合方式实现,完全不需要用到parse函数。以下是基于Kusto Query Language(KQL)的实现代码:

let Traces = datatable(EventText:string)
[
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=23, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01, previousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=15, lockTime=02/17/2016 08:40:00, releaseTime=02/17/2016 08:40:00, previousLockTime=02/17/2016 08:39:00)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=20, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01, previousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=22, lockTime=02/17/2016 08:41:01, releaseTime=02/17/2016 08:41:00, previousLockTime=02/17/2016 08:40:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=16, lockTime=02/17/2016 08:41:00, releaseTime=02/17/2016 08:41:00, previousLockTime=02/17/2016 08:40:00)"
];
Traces
| project data = replace_string(extract(@"\(([^\)]+)", 1, EventText), "=", ":")
| extend data = parse_json(data)
| evaluate bag_unpack(data)

步骤说明:

  • 提取目标内容:使用extract函数配合正则表达式\(([^\)]+),从EventText中提取括号内的所有键值对文本。
  • 转换为JSON格式:用replace_string把所有=替换为:,将原有的key=value格式转换为JSON兼容的key:value结构。
  • 解析为动态对象:通过parse_json将格式化后的字符串转换为KQL的动态类型(JSON bag)。
  • 展开为列:使用evaluate bag_unpack(data)将动态对象中的每个键值对展开为独立的列,键名作为列名,对应值作为列数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:24:33