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

Kusto中如何筛选dynamic列合法JSON值供evaluate bag_unpack使用

解决方案

bag_unpack执行失败的核心原因是输入的dynamic值里混有非合法JSON对象的内容,只要提前把无效值清洗掉,只传入合法JSON结构的动态值即可解决。
直接用内置的try_parse_json()函数做容错解析就行:这个函数会尝试把输入内容解析为标准JSON动态值,遇到HTML、语法残缺的JSON这类非法输入时,会直接返回null,不会抛出异常中断查询。


可直接套用的代码模板

// 替换为实际的表名、存JSON内容的dynamic列名即可
<你的业务表名>
| extend clean_bag = try_parse_json(tostring(<你的dynamic列名>))
// 要丢弃含无效值的行就保留下面这行,要保留无效行仅让解包字段留空就注释掉
| where isnotnull(clean_bag)
| evaluate bag_unpack(clean_bag)

对你给出的示例数据的处理说明

示例里的4行数据会按如下规则处理,全程不会抛错:

  • {"message":"msg1","code":"1"}:合法JSON,正常解包出message、code两个字段,对应值分别为msg1、1
  • <html><body>Server Down</body></html>:非JSON格式内容,解析为null,不传入解包逻辑
  • {"message":"msg2","code":2"}:JSON语法错误(数字2后存在冗余引号),解析为null,不传入解包逻辑
  • {"message":"msg3","code":"3"}:合法JSON,正常解包出message、code两个字段,对应值分别为msg3、3

注意点

  • 禁止直接对原始未清洗的dynamic列调用bag_unpack:只要列中存在1个不符合JSON对象规范的值,整个解包操作就会直接失败。
  • 过滤掉无效null值的写法性能更好,不需要保留无效行的话建议加上where isnotnull(clean_bag)条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:24:14