提问人:Aladin 提问时间:9/22/2018 最后编辑:Aladin 更新时间:9/22/2018 访问量:1696
Influxdb GROUP BY time 聚合错误时间间隔或存储桶的数据
Influxdb GROUP BY time aggregates data on wrong time intervals or buckets
问:
最近,我们遇到了一个非常烦人的 InfluxDB 的 GROUP BY time 问题。事实证明,如果我们尝试每 30 天聚合一次数据,InfluxDB 会按意外的时间桶聚合我们的数据。
例如,以下查询:
SELECT COUNT(user_id) AS result FROM measurement1 WHERE time > '2017-12-31 23:59:59' AND time < '2019-01-01 23:59:59' GROUP BY time(30d) FILL(0);
然后我们得到以下响应(以毫为单位的纪元时间):
time result
---- ------
1513728000000000000 0
1516320000000000000 0
1518912000000000000 0
1521504000000000000 0
1524096000000000000 0
1526688000000000000 0
1529280000000000000 0
1531872000000000000 0
1534464000000000000 4
1537056000000000000 1
1539648000000000000 0
1542240000000000000 0
1544832000000000000 0
好吧,在将纪元时间转换为正常日期后,我们发现返回的间隔是在 20/12/17、19/01/18 到 15/12/18(每 30 天)。
据我了解,聚合点是由 influxdb 根据时间中的第一个值 (GROUP BY time(value)) 预定义的。它甚至在文档中被提及,但规模要小得多——“预设时间边界”。但是,这些示例处理的是分钟和 1 天聚合,并且很容易使用偏移参数进行修复,因为这些刻度的默认聚合间隔位于午夜。
这很酷,但在这里我们正在处理多天。在我们的例子中,我们不能使用偏移参数,因为我们无法知道 GROUP BY 返回的时间间隔。
是否有任何来源/公式/算法或任何东西可以帮助我们预测这些时间间隔,以便我们可以抵消它们?如果没有这样的事情,那么我们如何克服这个问题呢?
我想这一切的原因是性能,但很奇怪的是,他们的文档中没有提到这个问题,因为这不是一种直观的行为。
编辑:我想我发现了涌入如何决定这些时间间隔 - 它总是从 0 纪元时间开始。如果这是真的,那么我们可以在拍摄查询之前随心所欲地使用偏移量。我希望将其添加到他们的文档中,因为这可以为其他人节省大量时间 + 这将确认下一个版本中不会出现任何重大更改。
答: 暂无答案
评论