我在我的项目中使用 InfluxDB 以 5 秒的间隔存储房间的温度读数。但是,我在查询数据时遇到困难,因为我只需要读数的一个子集。为了解决这个问题,我利用 InfluxQL 函数
aggregateWindow(every: 5m, fn: last, createEmpty: false)
来聚合数据并过滤掉不需要的读数。
我的代码:
tables = query_api.query(f'''
from(bucket: "{settings.INFLUX_BUCKET}")
|> range(start: -30d)
|> filter(fn: (r) => r["_measurement"] == "{item_type}")
|> group(columns: ["item_id"])
|> aggregateWindow(every: 5m, fn: last, createEmpty: false)
|> yield(name: "mean")
''')
问题与
_time
领域有关。我的目标是每隔 5 分钟检索一次记录,其中每条记录对应于该持续时间内的最后一个条目。但是,我还需要插入记录的实际时间戳,例如 12:30:10 或 12:15:08。
此查询将生成以下格式的记录:
12:30:05
12:35:09
12:40:10
记录之间的时间间隔一致为5分钟,与每条记录的实际插入时间不对应。