influxDB过滤函数中的条件逻辑`or`

问题描述 投票:0回答:1

我有一个通量查询,在过滤函数中有多个“或”条件。是这样的。

from(bucket: "my_buck")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "my_measurement")
  |> filter(fn: (r) => r["idDispositivo"] == "155" or r["idDispositivo"] == "150") 
  |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
  |> yield(name: "mean")

该示例只有一个“或”,但在实际查询中可以有多个“或”,并且查询也会动态创建。有办法改变吗

 |> filter(fn: (r) => r["idDispositivo"] == "155" or r["idDispositivo"] == "150") 

对于类似的事情

 |> filter(fn: (r) => r["idDispositivo"] in ["155", "150"]) 

我知道这个语法不正确,但是请问是否有类似的东西可以让我使动态查询变得更容易,而不必使用这么多的“或”

注意:我使用的是 influxDB 版本 1.8

提前致谢

influxdb influxdb-python flux-influxdb
1个回答
0
投票

Flux 中有 contains 函数可以使用。它的性能可能不如使用

or
或正则表达式。

from(bucket: "my_buck")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "my_measurement")
  |> filter(fn: (r) => contains(value: r["idDispositivo"], set: ["155", "150"]))
© www.soinside.com 2019 - 2024. All rights reserved.