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()'
我需要使用 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()'