我有一个通量查询,在过滤函数中有多个“或”条件。是这样的。
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
提前致谢
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"]))