Azure 应用程序见解 - Kusto 的"parse_json"不适用于自定义维度



我希望能够分析存储在向应用程序见解发出的自定义遥测事件的自定义维度中的结构化数据,并获得一些奇怪的行为。似乎 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}
  1. 您能否演示一个未正确解析的示例记录?
  2. 推测(在看到数据之前(:您是否验证了此处的最后一段不适用于您的案件?

使用描述属性包的 JSON 字符串有点常见,其中一个"槽"是另一个 JSON 字符串。[...]在这种情况下,不仅需要调用parse_json两次,而且还要确保在第二次调用中将使用tostring。否则,对 parse_json 的第二次调用将简单地将输入按原样传递给输出,因为其声明的类型为 dynamic

customDimensions的类型是dynamic的,因此从中访问像customDimensions.json这样的属性将返回一个类型为dynamic的字符串。

您必须将其显式转换为字符串,然后解析它:

todynamic(tostring(customDimensions.json)).property

我认为文档中的"注释"部分正是问题所在,正如 Yoni L. 在之前的回答中提到的。

最新更新