Azure Query Analytics对列中的所有值取平均值

时间:2018-09-11 14:18:01

标签: azure azure-application-insights

我正在使用应用程序见解来记录有关我们应用程序的自定义度量。我有一个customEvent,其数据存储在customMeasurements对象中。该对象包含4个键值对。我有很多这些customEvents,我试图对所有事件的键值对取平均值,并将结果显示在2列表中。

  

我想要一个包含2列的表。第一列是键   名称,以及所有事件的键值中的第二列   平均

例如,事件1的key1值设置为 2 。 event2的key1的值设置为 6 。如果这是我在过去7天内收到的仅有的两个事件,我希望我的表在包含key1数据的行中显示数字 4

每个查询我只能平均1个键,因为我不能在1个查询中放入多个汇总...这是我要对customMeasurements对象中的第一个键求平均的结果:

customEvents
| where name == "PerformanceMeasurements"
| where timestamp > ago(7d) 
| summarize key1average=avg(toint(customMeasurements.key1))
| project key1average

但是我需要平均该对象内的所有所有键,并如上所述构建1个表。

作为参考,我附上了customEvent customMeasurements对象Here is one event's customMeasurement data

的屏幕截图。

1 个答案:

答案 0 :(得分:1)

如果键的数量有限且事先已知,那么我建议在| summarize运算符中使用多个聚合,并用逗号将它们分开:

| summarize key1average=avg(toint(customMeasurements.key1)), key2average=avg(toint(customMeasurements.key2)), key3average=avg(toint(customMeasurements.key3))

如果键可能有所不同,那么您首先要使用|mvexpand operator展平自定义尺寸:

customEvents
| where timestamp > ago(1h)
| where name == "EventName" 
| project customDimensions 
| mvexpand bagexpansion=array customDimensions
| extend Key = customDimensions[0], Value = customDimensions[1]
| summarize avg(toint(Value)) by tostring(Key)

在这种情况下,customDimensions中的每个键-值对都将成为其自己的行,您将可以对具有标准查询语言构造的键/值对进行操作。