我希望能够分析存储在向应用程序见解发出的自定义遥测事件的自定义维度中的结构化数据,并获得一些奇怪的行为。似乎 JSON 无法正常解析,但如果我通过 strcat
传递它,它就能很好地解析 json。
customEvents
| where name == "PbConfigFilterComponentSaved"
| take 1
| project
jsonType=gettype(customDimensions.Json),
parsedType=gettype(parse_json(customDimensions.Json)),
strcatType=gettype(strcat('', customDimensions.Json)),
strcatParsedType=gettype(parse_json(strcat('', customDimensions.Json)))
结果:
jsonType: string
parsedType: string
strcatType: string
strcatParsedType: dictionary
有没有更好的方法来让parse_json致力于这种价值?
更新
如果它以任何方式相关,这是customDimensions.Json
的价值:
{"filterComponentKey":"CatalystAgeRange","typeKey":"TemporalConstraint","uiConfig":{"name":"Age","displayMode":"Age"},"config":{"dateSelector":"pat.BirthDTS"},"disabledForScenes":false,"disabledForFilters":false}
- 您能否演示一个未正确解析的示例记录?
- 推测(在看到数据之前(:您是否验证了此处的最后一段不适用于您的案件?
使用描述属性包的 JSON 字符串有点常见,其中一个"槽"是另一个 JSON 字符串。[...]在这种情况下,不仅需要调用
parse_json
两次,而且还要确保在第二次调用中将使用tostring
。否则,对parse_json
的第二次调用将简单地将输入按原样传递给输出,因为其声明的类型为dynamic
。
customDimensions
的类型是dynamic
的,因此从中访问像customDimensions.json
这样的属性将返回一个类型为dynamic
的字符串。
您必须将其显式转换为字符串,然后解析它:
todynamic(tostring(customDimensions.json)).property
我认为文档中的"注释"部分正是问题所在,正如 Yoni L. 在之前的回答中提到的。