【问题标题】:InfluxDB + Flux: Get most recent timestamp for a measurement via Python APIInfluxDB + Flux:通过 Python API 获取测量的最新时间戳
【发布时间】:2021-03-09 11:38:49
【问题描述】:

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

【问题讨论】:

    标签: python influxdb flux-influxdb


    【解决方案1】:

    首先,_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()'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      相关资源
      最近更新 更多