0

是否可以聚合度量或创建超出标准查询的自定义dateFrom dateTo查询?

例如,我的测量时间增量为 1 分钟 (2015-01-01T05:05:00, 2015-01-01T05:05:00, 2015-01-01T05:05:00, ...)我想每隔 15 分钟查询一次测量值 (2015-01-01T05:15:00, 2015-01-01T05:30:00, 2015-01-01T05:45:00, ...)

到目前为止,我只提出了以下解决方案:

  1. 使用标准的 api 请求 https://tenant.cumulocity.com/measurement/measurements?dateFrom=2015-10-01&dateTo=2015-11-05 然后丢弃大部分数据将花费大量时间加载数据。
  2. 使用cep(累积事件语言)使用最接近的1分钟测量每15分钟生成一个新测量似乎有点矫枉过正而且不是很优雅。
  3. 批量请求精确的分钟 https://tenant.cumulocity.com/measurement/measurements?dateFrom=2015-11-05T05:15:00%2B01:00&dateTo=2015-11-05T05:16:00%2B01:00 ,这将产生大量 API 请求,而且似乎效率不高。
  4. 使用/measurements/series只会给我所有系列的端点,即使是那些我不想要的,以及只有每小时和每天的聚合选项(据我所知)。

有没有更好的方法来做到这一点?

4

2 回答 2

1

您已经掌握了几乎所有当前可用的机制。还有另一种可能性 - 不确定这是否适合您:

  1. 从设备发送时标记第十五次测量,例如使用不同的类型。

我通常会使用 2。它实际上非常高效,它类似于传统 SQL 中的物化视图,而且您可以在任何地方和所有小部件中使用数据。

祝你好运 :-)

干杯,安德烈

于 2015-11-05T09:32:24.250 回答
1

我更喜欢 CEP 解决方案。规则不会那么复杂。然后,您当然会将这些测量值存储两次,这不是很好,但是使用特定类型或片段进行所需的测量将为您提供查询它的最快方法。

您可以在 CEP 规则中每 15 分钟将一个特殊片段添加到测量中,而不是复制测量。您无法更新测量值,因此您必须每 15 分钟删除一次传入的测量值,然后使用完全相同的值创建一个新测量值,但添加一个片段(例如“aggregatedMeasurement”:{})。

然后您的查询如下所示: https://tenant.cumulocity.com/measurement/measurements?dateFrom=2015-10-01&dateTo=2015-11-05&fragmentType=aggregatedMeasurement

第 3 点的另一个想法:

您可以使用 SmartREST 创建带有查询字符串的模板,并将 dateFrom 和 dateTo 保留为占位符。然后,您只需从客户端使用 SmartREST 中的批量功能发出一个请求。在服务器端,这仍将转换为单个请求,因此您不会获得任何速度。

于 2015-11-05T10:12:27.327 回答