Log Analytics中解析自定义维度嵌套Payload的Kusto查询问题
解决Log Analytics中嵌套JSON自定义维度的属性提取问题
你的自定义维度customDimensions包含嵌套的Payload字段,示例Payload如下:
{"Number":"","Number":"123","A":false,"B":true,"C":true,"D":1661507873379}
你需要提取属性A作为单独列用于筛选,但当前查询生成的pay3列始终为空。
问题原因
你的查询中存在重复且不必要的JSON解析操作:parse_json(tostring(parse_json(pay2)))。当customDimensions["Payload"]是JSON格式的字符串时,第一次parse_json(pay)就已经将其转换为结构化的JSON对象,后续的tostring再parse_json会导致解析失效,最终无法提取到属性值。
正确查询语句
traces | where tostring(customDimensions['SN']) == '123' | where message contains "A" | extend pay = customDimensions["Payload"] | extend parsedPayload = parse_json(pay) | extend A_Value = parsedPayload.A // 可根据需要添加筛选条件,比如筛选A为false的记录 | where A_Value == false
额外说明
- 如果
customDimensions["Payload"]本身已经是JSON对象(而非字符串类型),可以直接跳过parse_json步骤,直接用customDimensions["Payload"].A提取属性值 - 注意示例Payload中存在重复的
Number键,根据JSON规范,重复键的处理由序列化工具决定,通常后一个值会覆盖前一个,建议检查Payload的生成逻辑避免此类问题
内容的提问来源于stack exchange,提问作者Teddy
相关产品推荐
相关产品推荐

