Influxdb GROUP BY time在错误的时间间隔或存储桶上聚合数据

Influxdb GROUP BY time在错误的时间间隔或存储桶上聚合数据,time,group-by,influxdb,influxql,Time,Group By,Influxdb,Influxql,最近,我们在XDB的团队中遇到了一个非常恼人的问题。事实证明,如果我们试图为每30天聚合一次数据,XDB会按意外的时间段聚合数据 例如,以下查询: 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); 将历元时间转换为正常日期后,我们发现返回的时间

最近,我们在XDB的团队中遇到了一个非常恼人的问题。事实证明,如果我们试图为每30天聚合一次数据,XDB会按意外的时间段聚合数据

例如,以下查询:

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);
将历元时间转换为正常日期后,我们发现返回的时间间隔为2017年12月20日、2018年1月19日至2018年12月15日(每30天一次)

据我所知,聚合点是由XDB根据时间上的第一个值(按时间分组(值))预定义的。文件中甚至提到了这一点,但规模要小得多——“预设时间边界”。但是,这些示例涉及分钟和1天的聚合,并且很容易使用offset参数进行修复,因为这些刻度的默认聚合间隔是在午夜

这很酷,但我们要处理好几天。在我们的例子中,我们无法使用offset参数,因为我们无法知道GROUP by返回的时间间隔

是否有任何来源/公式/算法或任何东西可以帮助我们预测这些时间间隔,以便我们能够抵消它们?如果没有这样的事情,那么我们如何克服这个问题呢

我想这一切的原因是性能,但很奇怪,他们的文档中没有提到这个问题,因为这不是一个直观的行为


编辑:我想我发现了流入是如何决定这些时间间隔的——它总是从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