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

在Application Insights中使用Kusto提取JSON字段失败求助

Kusto查询提取customDimensions中JSON值为空的排查方案

常见原因及解决方法

  • customDimensions存储类型为字符串而非动态类型
    traces表中的customDimensions字段常被默认存储为字符串格式,而非Kusto原生的dynamic类型。直接通过customDimensions.CurrentPluginContext访问嵌套属性会失效,因为字符串没有层级属性。需要先将整个customDimensions解析为动态类型,再提取目标字段:

    traces 
    | order by timestamp desc
    | project customDimensions = parse_json(customDimensions)
    | project CurrentContext = parse_json(customDimensions.CurrentPluginContext)
    | extend Source = CurrentContext.source
    | project Source
    
  • 键名大小写不匹配
    Kusto对JSON键名区分大小写,如果实际JSON中的键是Source(首字母大写),而查询中用source(小写),就会返回空值。请核对JSON原始结构中的键名大小写,保持查询中的写法完全一致。

  • 部分记录缺失目标字段
    若部分traces记录的customDimensions里没有CurrentPluginContext字段,或该字段对应的JSON中没有source键,查询结果会出现空值。可添加过滤条件只保留有效记录:

    traces 
    | order by timestamp desc
    | project customDimensions = parse_json(customDimensions)
    | where isnotempty(customDimensions.CurrentPluginContext)
    | project CurrentContext = parse_json(customDimensions.CurrentPluginContext)
    | where isnotnull(CurrentContext.source)
    | extend Source = CurrentContext.source
    | project Source
    
  • JSON字符串存在转义问题
    若CurrentPluginContext存储的JSON存在额外转义(比如双引号被转义为\"),会导致parse_json解析失败返回null。可以尝试用replace_string先处理转义字符,再解析:

    traces 
    | order by timestamp desc
    | project customDimensions = parse_json(customDimensions)
    | project CurrentContextStr = replace_string(customDimensions.CurrentPluginContext, '\\"', '"')
    | project CurrentContext = parse_json(CurrentContextStr)
    | extend Source = CurrentContext.source
    | project Source
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:17:13