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

如何在KQL中创建空属性包?解析JSON列异常时返回空包

Kusto查询:解析JSON列并返回空属性包的正确实现

问题分析

你原来的写法里直接用{}会报错,是因为Kusto查询语法不支持直接将空对象字面量作为表达式使用。而bag_pack()确实需要至少一个键值对参数,无法直接生成空属性包。

解决方案

这里有几种更合适的实现方式:

  1. 直接使用dynamic({})生成空属性包
    这是最直观的写法,dynamic()函数支持传入空对象字面量,直接返回空属性包:
...
| extend Context = todynamic(iif(ContextStr startswith_cs "{" and ContextStr endswith_cs "}", parse_json(ContextStr), dynamic({})))
  1. 更严谨的JSON合法性判断
    只判断首尾的{}并不够严谨(比如嵌套错误、语法不完整的JSON会被误判),可以利用todynamic()解析失败返回null的特性,结合coalesce()简化逻辑:
...
| extend Context = coalesce(todynamic(ContextStr), dynamic({}))

这个写法会尝试将ContextStr解析为动态对象,若解析失败(返回null),则自动返回空属性包,比首尾判断更可靠。

  1. 官方认可的parse_json("{}")写法
    你之前觉得parse_json("{}")不够规范,但实际上Kusto会对这个表达式做内部优化,不会真的执行字符串解析,而是直接返回空属性包,性能和语法上都是合法的:
...
| extend Context = todynamic(iif(ContextStr startswith_cs "{" and ContextStr endswith_cs "}", parse_json(ContextStr), parse_json("{}")))

内容的提问来源于stack exchange,提问作者Simao Gomes Viana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 03:49:55