使用 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, .. .)
到目前为止我只想到了这些解决方案:
- 使用标准 api 请求
https://tenant.cumulocity.com/measurement/measurements?dateFrom=2015-10-01&dateTo=2015-11-05
然后丢弃大部分数据将花费大量时间加载数据。
- 使用 cep(cumulocity 事件语言)使用最近的 1 分钟测量每 15 分钟生成一次新测量似乎有点矫枉过正而且不是很优雅。
- 批量请求精确分钟
https://tenant.cumulocity.com/measurement/measurements?dateFrom=2015-11-05T05:15:00%2B01:00&dateTo=2015-11-05T05:16:00%2B01:00
这将产生大量 API 请求,而且似乎效率不高。
- 使用
/measurements/series
端点,它只会给我所有系列,即使是我不想要的系列,也只有每小时和每天的聚合选项(据我所知)。
有更好的方法吗?
您几乎掌握了当前可用的所有机制。还有一种可能性——不确定这是否适合您:
- 从设备发送时标记第十五次测量,例如使用另一种类型。
我通常会使用 2。它实际上非常有效,它类似于传统 SQL 中的实体化视图,而且您可以在任何地方和所有小部件中使用数据。
祝你好运:-)
干杯,
安德烈
我更喜欢 CEP 解决方案。规则不会那么复杂。您当然会存储这些测量值两次,这不是很好,但是拥有特定类型或片段的所需测量值将为您提供最快的查询方式。
您可以在 CEP 规则中每 15 分钟向测量添加一个特殊片段,而不是复制测量。您无法更新测量值,因此您必须每 15 分钟删除一次传入的测量值,然后创建一个具有完全相同值但添加碎片的新测量值(例如 "aggregatedMeasurement": {})。
关于第 3 点的另一个想法:
您可以使用 SmartREST 创建带有查询字符串的模板,并将 dateFrom 和 dateTo 保留为占位符。
在客户端,您只需使用 SmartREST 中的批量功能发出一个请求。
在服务器端,这仍然会转换为单个请求,因此您不会获得任何速度。
是否可以聚合测量值或创建超出标准 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, .. .)
到目前为止我只想到了这些解决方案:
- 使用标准 api 请求
https://tenant.cumulocity.com/measurement/measurements?dateFrom=2015-10-01&dateTo=2015-11-05
然后丢弃大部分数据将花费大量时间加载数据。 - 使用 cep(cumulocity 事件语言)使用最近的 1 分钟测量每 15 分钟生成一次新测量似乎有点矫枉过正而且不是很优雅。
- 批量请求精确分钟
https://tenant.cumulocity.com/measurement/measurements?dateFrom=2015-11-05T05:15:00%2B01:00&dateTo=2015-11-05T05:16:00%2B01:00
这将产生大量 API 请求,而且似乎效率不高。 - 使用
/measurements/series
端点,它只会给我所有系列,即使是我不想要的系列,也只有每小时和每天的聚合选项(据我所知)。
有更好的方法吗?
您几乎掌握了当前可用的所有机制。还有一种可能性——不确定这是否适合您:
- 从设备发送时标记第十五次测量,例如使用另一种类型。
我通常会使用 2。它实际上非常有效,它类似于传统 SQL 中的实体化视图,而且您可以在任何地方和所有小部件中使用数据。
祝你好运:-)
干杯, 安德烈
我更喜欢 CEP 解决方案。规则不会那么复杂。您当然会存储这些测量值两次,这不是很好,但是拥有特定类型或片段的所需测量值将为您提供最快的查询方式。
您可以在 CEP 规则中每 15 分钟向测量添加一个特殊片段,而不是复制测量。您无法更新测量值,因此您必须每 15 分钟删除一次传入的测量值,然后创建一个具有完全相同值但添加碎片的新测量值(例如 "aggregatedMeasurement": {})。
关于第 3 点的另一个想法:
您可以使用 SmartREST 创建带有查询字符串的模板,并将 dateFrom 和 dateTo 保留为占位符。 在客户端,您只需使用 SmartREST 中的批量功能发出一个请求。 在服务器端,这仍然会转换为单个请求,因此您不会获得任何速度。