如何在 key/value 对的 json 数组上使用 mvexpand
How to use mvexpand on an json array of key/value pairs
我的 appInsights 遥测中有一个自定义 属性,它是 json 对 key/value 数组。我想做的是预测出 key/value 对,似乎一起使用 parsejson and mvexpand 是实现这一目标的方法;但是,我似乎遗漏了一些东西。我的表达式的最终结果是一个名为 type 的列,它是原始 json。尝试向表达式添加任何 属性 会导致空列。
Json编码属性
[{"type":"text/xml","count":1}]
AIQL
requests
| project customDimensions
| extend type=parsejson(customDimensions.['Media Types'])
| mvexpand bagexpansion=array type
2017 年 6 月 30 日更新
为了回答 EranG 的问题,将属性投影为列时我的请求输出如下所示。
mvexpand
所做的是获取您的数组并将其分解为行,因此每一行都将包含数组中的一个项目。
如果您想将每个项目分解为列,您需要尝试类似的方法:
requests
| project customDimensions
| extend type=parsejson(customDimensions.['Media Types'])
| mvexpand bagexpansion=array type
| project type = type.type, count_ = type["count"]
我最近遇到了同样的问题。可能您的 属性 已经是 dynamic
类型,但它的动态 String
不是数组。 parsejson
不起作用,因为它将 String
转换为 dynamic
,而不是动态转换为另一个动态。要解决此问题,我建议您先尝试将 属性 转换为 String
,然后再次解析它。
请尝试以下示例。它可能对您有所帮助,因为它对我有帮助:
requests
| project customDimensions
| extend type=parsejson(tostring(customDimensions.['Media Types']))
| mvexpand type
| project type.type, type.['count']
我的 appInsights 遥测中有一个自定义 属性,它是 json 对 key/value 数组。我想做的是预测出 key/value 对,似乎一起使用 parsejson and mvexpand 是实现这一目标的方法;但是,我似乎遗漏了一些东西。我的表达式的最终结果是一个名为 type 的列,它是原始 json。尝试向表达式添加任何 属性 会导致空列。
Json编码属性
[{"type":"text/xml","count":1}]
AIQL
requests
| project customDimensions
| extend type=parsejson(customDimensions.['Media Types'])
| mvexpand bagexpansion=array type
2017 年 6 月 30 日更新
为了回答 EranG 的问题,将属性投影为列时我的请求输出如下所示。
mvexpand
所做的是获取您的数组并将其分解为行,因此每一行都将包含数组中的一个项目。
如果您想将每个项目分解为列,您需要尝试类似的方法:
requests
| project customDimensions
| extend type=parsejson(customDimensions.['Media Types'])
| mvexpand bagexpansion=array type
| project type = type.type, count_ = type["count"]
我最近遇到了同样的问题。可能您的 属性 已经是 dynamic
类型,但它的动态 String
不是数组。 parsejson
不起作用,因为它将 String
转换为 dynamic
,而不是动态转换为另一个动态。要解决此问题,我建议您先尝试将 属性 转换为 String
,然后再次解析它。
请尝试以下示例。它可能对您有所帮助,因为它对我有帮助:
requests
| project customDimensions
| extend type=parsejson(tostring(customDimensions.['Media Types']))
| mvexpand type
| project type.type, type.['count']