InfluxDB + Flux:通过 Python API 获取测量的最新时间戳

InfluxDB + Flux: Get most recent timestamp for a measurement via Python API

我需要使用 Python API.

通过 Flux 查询语言获取 InfluxDB 2.0 中特定测量的最高(又名最新)时间戳

我已经使用下面的查询来获取时间戳,但我不确定如何确保我通过这种方法提取的时间戳确实是最新的。

特别是,我使用的索引 last_data[0] 是任意的,因为 last_data 是像 <influxdb_client.client.flux_table.FluxTable object at 0x00000193FA906AC8> 这样的对象列表,我不确定如何解释。时间戳似乎没有排序。

from influxdb_client import InfluxDBClient, WriteOptions

client = InfluxDBClient(url=self.influx_url, token=self.token, org=self.org_id, debug=False)

last_data = client.query_api().query(
    f'from(bucket:"{self.influx_bucket}") |> range(start: -100d) |> filter(fn: (r) => r["_measurement"] == "{devices[0]}") |> last()'
)
timestamp = last_data[0].records[0]["_stop"]
print(timestamp)

首先,_stop用来告诉你时间范围的结束。在您的情况下,它只是查询执行时间的时间戳,因为您没有输入范围的结束日期。要获取测量时间戳,您需要使用 _time。 要获得您想要的结果,您可能需要在调用 last 函数之前添加 |> group()。所以会是

last_data = client.query_api().query(
    f'from(bucket:"{self.influx_bucket}") |> range(start: -100d) |> filter(fn: (r) => r["_measurement"] == "{devices[0]}") |> group() |> last()'