目前,获取最后一个已知值的最可靠方法是使用 AggregateSeries API。
您可以在计算最后一个事件属性和最后一个时间戳属性的变量中使用 last() 聚合。您必须在查询中提供搜索范围,因此您仍然必须“猜测”最新值何时出现。
一些选项是始终具有比您可能需要的更大的搜索范围(例如,如果传感器每天发送数据,您可以输入一周的搜索范围以确保安全)或使用可用性 API 获取时间范围和分布跨所有 TSID 的整个数据集,并将其用作搜索范围。请记住,具有较大的搜索范围会影响查询的性能。
下面是一个 LKV 查询示例:
"aggregateSeries": {
"searchSpan": {
"from": "2020-02-01T00:00:00.000Z",
"to": "2020-02-07T00:00:00.000Z"
},
"timeSeriesId": [
"motionsensor"
],
"interval": "P30D",
"inlineVariables": {
"LastValue": {
"kind": "aggregate",
"aggregation": {
"tsx": "last($event['motion_detected'].Bool)"
}
},
"LastTimestamp": {
"kind": "aggregate",
"aggregation": {
"tsx": "last($event.$ts)"
}
}
},
"projectedVariables": [
"LastValue",
"LastTimestamp"
]
}