2017-06-20 59 views
2

我在我的appInsights遥测中有一个定制属性,它是一个键/值对的json数组。我想要做的是推出这个键/值对,并且似乎一起使用parsejsonmvexpand是如何实现这一点;然而,我似乎错过了一些东西。我的表达式的最终结果是一个名为type的列,它是原始的json。尝试将表达式结果中的任何属性添加到空列中。如何在键/值对的json数组上使用mvexpand

JSON编码性能

[{"type":"text/xml","count":1}] 

AIQL

requests 
| project customDimensions 
| extend type=parsejson(customDimensions.['Media Types']) 
| mvexpand bagexpansion=array type 

更新17年6月30日

要伸出时回答EranG的问题,我的要求的输出作为列的属性如图所示b elow。

enter image description here

回答

1

最近我有同样的问题。可能您的财产已经是dynamic类型,但其动态String不是阵列。 parsejson不起作用,因为它将String转换为dynamic,而不是动态的到另一个动态。要解决此问题,我建议您先尝试将您的资产转换为String,然后再解析它。

请尝试下面的例子。它可以帮助你,因为它帮助我:

requests 
| project customDimensions 
| extend type=parsejson(tostring(customDimensions.['Media Types'])) 
| mvexpand type 
| project type.type, type.['count'] 
1

mvexpand做什么把你的阵列,并打破它的线条,让每一行都会有从阵列中的单个项目。 如果你想每个项目打破列,你需要尝试类似:

requests 
| project customDimensions 
| extend type=parsejson(customDimensions.['Media Types']) 
| mvexpand bagexpansion=array type 
| project type = type.type, count_ = type["count"] 
+0

不幸的是,当我运行该查询,我结束了相同数量的结果行与指定类型两个空列和count_ – Tedford

+0

你可以告诉你之后的扩展得到了什么? – EranG

相关问题