7

我的 appInsights 遥测中有一个自定义属性,它是一个键/值对的 json 数组。我想要做的是投影出那个键/值对,似乎一起使用parsejsonmvexpand是如何实现这一点的;但是,我似乎遗漏了一些东西。我的表达式的最终结果是一个名为 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 的问题,我的请求在将属性投影为列时的输出如下所示。

在此处输入图像描述

4

2 回答 2

10

我最近有同样的问题。可能您的属性已经是 type dynamic,但它是动态String的,而不是数组。parsejson不起作用,因为它转换Stringdynamic,而不是动态转换为另一个动态。要解决这个问题,我建议您先尝试将您的属性转换为String然后再次解析它。

请尝试以下示例。它可以帮助你,因为它帮助了我:

requests 
| project customDimensions 
| extend type=parsejson(tostring(customDimensions.['Media Types']))
| mvexpand type
| project type.type, type.['count']
于 2017-06-30T11:04:38.690 回答
1

所做的是将您mvexpand的数组分解为行,因此每行将有一个来自数组的项目。如果要将每个项目分成列,则需要尝试以下操作:

requests 
| project customDimensions 
| extend type=parsejson(customDimensions.['Media Types'])
| mvexpand bagexpansion=array type 
| project type = type.type, count_ = type["count"]
于 2017-06-21T11:11:29.257 回答