InfluxDB - 获取最新数据,即使不在提供的时间范围内

标签 influxdb influxdb-2 flux-influxdb

from(bucket: "metrics")
|> range(start: -5m)
|> filter(fn: (r) => r["_measurement"] == "cpu")
|> filter(fn: (r) => r["_field"] == "usage")
|> last()

运行此查询只会返回最近 5 分钟内保存的数据。

我要寻找的是,如果没有提供的时间范围内的数据,则获取最新数据(可能是 10m 前或 5d 前)。我知道 prometheus 确实返回了最后的数据,我们正在尝试从 prometheus 迁移到 influxDB,但遇到了这个问题。

此外,仅将范围增加到 -10d 是行不通的,因为数据量非常大(每秒写入数百条记录)。

我们也在尝试下采样,看看这是否对我们有用,但想知道是否有办法从源存储桶本身获取它。

最佳答案

我也遇到了同样的问题,并找到了可能有帮助的解决方案。

首先使用从 0 到 now() 的所有时间范围 ( influxdb-client-python #172 )
如果日期很大,则需要很长时间。

所以对其添加限制,使用tail()指定n条记录按时间降序查询数据。

这是我的代码:

from(bucket: "future_ticks")
|> range(start: 0, stop: now())
|> filter(fn: (r) => r["_measurement"] == "TXFR1")
|> filter(fn: (r) => r._field == "close")
|> aggregateWindow(every: 1m, fn: last, createEmpty: false, timeSrc: "_start")
|> tail(n: 77)
|> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")

这样我就可以在77分钟内获得所需的数据,而无需指定时间范围。

关于InfluxDB - 获取最新数据,即使不在提供的时间范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72279580/

相关文章:

influxdb - Telegraf 文件计数值未显示在 influxdb 中

database - 在influxdb中合并不同粒度的时间序列

php - InfluxDB 2.0 被 OOM 杀死

influxdb - 如何在 Flux (InfluxDB) 中将字符串列一分为二

InfluxDB Flux - 将最后一个和第一个值作为列获取

InfluxDB 按字段分组(未标记)并获得前 10 名

influxdb - 使用标签子集对连续查询进行下采样

linux - InfluxDB 使用 sensu 写性能统计

aggregate - 具有连续计数器的流入聚合窗口