InfluxDB 的 Flux 语言可以使用 last
函数来获取每分钟最后一个上报的数据。下面是一个示例查询:
from(bucket: "my_bucket")
|> range(start: -1m)
|> filter(fn: (r) => r["_measurement"] == "my_measurement")
|> last()
|> group(columns: ["_time"])
让我们解释一下这个查询:
from(bucket: "my_bucket")
:从名为 my_bucket
的存储桶中读取数据。range(start: -1m)
:设置时间范围为过去 1 分钟。filter(fn: (r) => r["_measurement"] == "my_measurement")
:过滤掉不属于 my_measurement
的数据。last()
:获取每个时间 bucket 中的最后一个数据点。group(columns: ["_time"])
:将结果按时间分组,以便获取每分钟最后一个数据点。
执行这个查询将返回每分钟最后一个上报的数据点。
如果你想要获取每分钟最后一个数据点的某个字段的值,可以使用 last
函数并指定字段名,例如:
from(bucket: "my_bucket")
|> range(start: -1m)
|> filter(fn: (r) => r["_measurement"] == "my_measurement")
|> last(column: "my_field")
|> group(columns: ["_time"])
这将返回每分钟最后一个数据点的 my_field
字段值。