influxdb2与influxdb1、tdengine在聚合上的一个小小差异

==问题背景==

发现influxdb2的时间切片聚合结果与其他版本的时序数据有差异。

对比了influxdb1.7版本,tdengine2.6.0.12版本。

这个差异对我们目前双引擎的架构方式带来了一个巨大的挑战,算是一个坑。

 

具体差异如下:

首先看tdengine(2.6.0.12):每个切片的时间为当前切片的开始时间

 

 

其次看influxdb1(1.7):每个切片的时间为当前切片的开始时间

 

 

最后看influxdb2(2.0):每个切片的时间为当前切片的结束时间。(WTF?)

 

 

==解决办法==

花了3个小时翻influxdb2的官网文档,并进行各种惨绝人寰的尝试之后,终于找到解决办法:即在aggregateWindow()中增加timeSrc: "_start"参数。

修改之后的flux查询语句如下:

from(bucket: "db_rexel_20221229131302")
    |> range(start: 2023-03-20T00:00:00Z, stop: 2023-03-21T00:00:00Z)
    |> filter(fn: (r) => r["_measurement"] == "d_20230308110326356_10780_8a4953")
    |> filter(fn: (r) => r["_field"] == "point000005")
    |> aggregateWindow(timeSrc: "_start", every: 1h, fn: last)
    |> sort(columns: ["_time"])
    |> yield(name: "last")

 

==相关文档==

参考文档:https://docs.influxdata.com/flux/v0.x/stdlib/universe/aggregatewindow/#function-type-signature

posted @   大墨垂杨  阅读(699)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示