使用Cumulocity API进行自定义日期查询

时间:2015-11-05 08:15:22

标签: iot cumulocity

是否可以在标准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端点,它只会给我所有系列,甚至是那些我不想要的系列,以及每小时和每天都有聚合选项(据我所知)。
  5. 有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

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

  1. 使用例如,从设备发送时标记第十五次测量。另一种类型。
  2. 我通常会使用2.它实际上非常有效,它类似于传统SQL中的物化视图,而且您可以在任何地方和所有小部件中使用数据。

    祝你好运: - )

    干杯, 安德烈

答案 1 :(得分:1)

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

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

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

第3点的另一个想法是:

您可以使用SmartREST创建包含查询字符串的模板,并将dateFrom和dateTo保留为占位符。 从客户端,您必须使用SmartREST中的填充功能只发出一个请求。 在服务器端,这仍将转换为单个请求,因此您无法获得任何速度。