在 Influxdb 中按时间查询获取组中的最后一个时间戳



我在InfluxDB中有一个数据库,其中包含以纳秒为单位的价格和时间戳。当我像这样按时间分组时:

select first(price),last(price) from priceseries where time>=1496815212834974866 and time<=1496865599580302882 group by time(1s)

我收到了一个时间列,其中时间戳与组的第二个开头对齐。例如,时间戳将为 08:00:00,下一个时间戳将为 08:00:01

如何

  1. 对记录时间戳本身应用聚合函数,例如上次(时间)或第一次(时间),以便拥有组的真实的第一个和最后一个时间戳(我可以在我的组中有很多价格)?
  2. 以及响应中的time列如何成为结束的第二而不是开始的第二,也就是说,如果组从 08:00:00 到 08:00:01,我希望在我的time列中看到 08:00:01 而不是我现在看到的 08:00:00?
  1. 使用聚合函数时不行,这意味着使用group by

select first(price), last(price) where time >= <..> and time <= <..>将为您提供该时间范围内的第一个和最后一个价格。

当查询具有分组依据时,聚合仅适用于间隔内的值。值本身是落在 08:00:00 - 08:00:01 区间内的实际值,只是显示的时间戳是间隔本身,而不是实际值。

这意味着在 08:00:00 和08:00:01 之间没有分组依据的查询和同一时间段内具有分组依据time(1s)的查询将给出相同的结果。唯一的区别是没有分组依据的查询将具有值的实际时间戳,而分组依据查询将具有间隔的时间戳。

  1. 使用分组依据时的时间戳表示间隔的开始时间。由此,您可以计算结束时间是开始时间+间隔。要显示的时间戳在查询语言中不可配置。

最新更新