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

Get the last timestamps in a group by time query in Influxdb

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

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

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

如何

  1. 在记录时间戳本身上应用聚合函数,如 last(time) 或 first(time) 以便获得组的真正的第一个和最后一个时间戳(我的组中可以有很多价格)?
  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 <= <..> 将为您提供该时间内的第一个和最后一个价格 window。

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

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

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