ZBLOG

influxdb 2.0 获取时间间隔为5s的瞬时值

要获取时间间隔为5s的瞬时值,您可以使用 last() 函数和 window() 函数结合起来。

window() 函数用于将数据划分为固定大小的时间段,并对每个时间段应用聚合函数。例如,如果您想获取过去一小时内某个传感器每5秒钟的平均温度值,您可以使用以下查询:

from(bucket: "my-bucket")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "temperature" and r.sensor_id == "123")
  |> window(every: 5s)
  |> last(column: "_value")

在上面的示例中,我们使用 range() 函数获取过去一小时内所有的温度记录,并通过 filter() 函数过滤出符合条件(测量类型为“temperature”且传感器 ID 为“123”)的记录。然后我们使用 window() 函数将数据划分为每5秒钟一个时间段,并在每个时间段内应用聚合函数(默认是平均值)。最后我们使用 last() 函数返回每个时间段内最新一条记录中 _value 字段的值。

如果你想获取特定时间点到当前时间间隔为5s的瞬时值,你需要将查询语句修改为:

from(bucket: "my-bucket")
  |> range(start: time(v: "2022-01-01T12:00:00Z"))
  |> filter(fn: (r) => r._measurement == "temperature" and r.sensor_id == "123")
  |> window(every: 5s)
  |> last(column: "_value")

在上面的示例中,我们使用 range() 函数指定了一个特定时间点作为开始时间,并将结束时间设置为当前时间。其他部分与前一个查询相同。

请注意,window() 函数会根据数据的时间戳对数据进行划分,因此如果您的数据不是按照固定间隔采集的,则可能需要先使用 mean() 函数对其进行插值处理以获得更准确的结果。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=6186

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?