使用 Cumulocity API 的自定义日期查询

Custom Date queries using Cumulocity API

是否可以聚合测量值或创建超出标准 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(cumulocity 事件语言)使用最近的 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 端点,它只会给我所有系列,即使是我不想要的系列,也只有每小时和每天的聚合选项(据我所知)。

有更好的方法吗?

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

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

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

祝你好运:-)

干杯, 安德烈

我更喜欢 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 中的批量功能发出一个请求。 在服务器端,这仍然会转换为单个请求,因此您不会获得任何速度。