我的appInsights遥测中有一个自定义属性,它是一个键/值对的json数组。我想要做的是预测出那个键/值对,似乎一起使用parsejson和mvexpand是如何实现这一点的;但是,我似乎错过了一些东西。我的表达式的最终结果是一个名为type的列,它是原始json。尝试向表达式添加任何属性会导致空列。
Json编码属性
{
"aps" : {
"alert" : "You got your emails.",
"badge" : 0,
"sound" : "bingbong.aiff"
},
}
AIQL
[{"type":"text/xml","count":1}]
更新6/30/17
要回答EranG的问题,在将属性作为列投影时,我的请求输出如下所示。
答案 0 :(得分:4)
我最近遇到了同样的问题。可能您的属性已经是dynamic
类型,但其动态String
不是数组。 parsejson
无法正常工作,因为它会将String
转换为dynamic
,而非动态转换为其他动态。要解决此问题,我建议您先尝试将您的属性转换为String
,然后再次解析。
请尝试以下示例。它可以帮助你,因为它帮助了我:
requests
| project customDimensions
| extend type=parsejson(tostring(customDimensions.['Media Types']))
| mvexpand type
| project type.type, type.['count']
答案 1 :(得分:1)
mvexpand
做的是取出你的数组并将其分解为线条,因此每一行都有一个来自数组的项目。
如果你想将每个项目分成列,你需要尝试类似:
requests
| project customDimensions
| extend type=parsejson(customDimensions.['Media Types'])
| mvexpand bagexpansion=array type
| project type = type.type, count_ = type["count"]