azure - 使用 Azure TimeSeries Insights 获取时间序列的最后一个值
问题描述
我如何查询时间序列中的最后一个(最近的)事件及其时间戳?
这里描述的方法对我不起作用,因为我不能保证最近的事件在固定的时间窗口内。就我而言,该事件可能已在数小时或数天前收到。
LAST() 函数返回最后一个事件,Get Series API 应该根据文档保留实际的事件时间戳,但我对从这个 API 返回的结果有点困惑。我得到了多个结果(有时甚至没有按时间戳排序)并且必须自己找出最新的值。我还注意到查询结果实际上并没有反映最新的摄取值。如果我多次摄取该值,则仅在结果集中包含最新摄取的值。
是否有任何更直接或可靠的方法可以使用 Azure 时序见解获取时序的最后一个值?
解决方案
目前,获取最后一个已知值的最可靠方法是使用 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"
]
}
推荐阅读
- python - 为什么我有一个'int' object is not iterable 错误?
- camera - ROS相机校准找不到set_camera_info服务
- c - 使用 fgets 进行子字符串搜索
- sql - MonetDB 中的 SQL UPDATE-with-Join
- sql - 使用索引进行搜索时,“AND”运算符如何工作?
- vue.js - TypeError:this.getOptions 不是函数
- python - 用 Python 编写 Discord 机器人 - 如何让机器人 ping @everyone?
- javascript - 将自定义对象数组添加到 redux 状态后,未调用我的 mapStateToProps
- r - 无法完全运行重复循环:D [,1]中的错误:维度数不正确
- linux - 我们如何才能准确地编写一个包含在 yocto 中的 Linux 测试项目的配方?