如何使Application Insights Rest Api返回所有数据,即使它不存在?

时间:2017-08-23 09:59:35

标签: rest azure azure-application-insights

所以我试图使用演示凭证使用GET请求每小时在最后一天获取浏览器异常的数量:

https://api.applicationinsights.io/beta/apps/DEMO_APP/metrics/exceptions/browser?timespan=P1D&interval=PT1H

但它不会返回所有数据,它只返回已设置的数据,如下所示:

{ 
  start: '2017-08-22T13:00:00.000Z',
  end: '2017-08-22T14:00:00.000Z',
  'exceptions/browser': { sum: 1 } 
}
{ 
  start: '2017-08-23T04:00:00.000Z',
  end: '2017-08-23T05:00:00.000Z',
  'exceptions/browser': { sum: 1 } 
}

我该怎么做才能返回每一位数据,即使总和为0?例如:

{ 
  start: '2017-08-22T13:00:00.000Z',
  end: '2017-08-22T14:00:00.000Z',
  'exceptions/browser': { sum: 1 } 
}
{ 
  start: '2017-08-23T14:00:00.000Z',
  end: '2017-08-23T15:00:00.000Z',
  'exceptions/browser': { sum: 0 } 
}
{ 
  start: '2017-08-23T15:00:00.000Z',
  end: '2017-08-23T16:00:00.000Z',
  'exceptions/browser': { sum: 0 } 
}
{ 
  start: '2017-08-23T16:00:00.000Z',
  end: '2017-08-23T17:00:00.000Z',
  'exceptions/browser': { sum: 1 } 
}

2 个答案:

答案 0 :(得分:1)

这需要使用查询API,并使用Analytics Query Language形式化您的查询 我正在运行以获取您想要的相同数据的查询是:

exceptions
| where timestamp >= ago(24h)
| where client_Type=="Browser"
| make-series count() default=0 on timestamp in range(ago(24h), now(), 1h)
| mvexpand count_ to typeof(long), timestamp to typeof(datetime)

很少有事情需要注意:

  • 我使用client_Type=="Browser"进行过滤,以匹配exceptions/browser查询
  • 为了“填空”,您必须使用make-series而不是summarize
  • 查询的最终网址为:https://api.applicationinsights.io/beta/apps/DEMO_APP/query?query=exceptions%7C%20where%20timestamp%20%3E%3D%20ago(24h)%7C%20where%20client_Type%3D%3D%22Browser%22%7C%20make-series%20count()%20default%3D0%20on%20timestamp%20in%20range(ago(24h)%2C%20now()%2C%201h)%7C%20mvexpand%20count_%20to%20typeof(long)%2C%20timestamp%20to%20typeof(datetime)

答案 1 :(得分:0)

您正在使用API​​的指标部分,请使用查询部分。

查询仍然会返回Jason但是in odata标准。这意味着需要涉及分页。

查询调用将允许您返回所有列和所有行。