You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

InfluxDB 1.8中Flux查询filter多OR条件的简化方法咨询

简化InfluxDB 1.8 Flux查询中的多OR过滤条件

在InfluxDB 1.8的Flux语法中,你可以使用**contains()**核心函数替代多个or拼接的过滤条件,实现类似"值在数组中"的判断逻辑,大幅简化查询语句。

简化后的过滤写法

将原来的多OR条件:

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

替换为:

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

完整查询示例

修改后的完整Flux查询如下:

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

用法说明

  • contains()函数接收两个参数:
    • set:要检查的目标值数组(比如示例中的["155", "150"])
    • value:需要匹配的字段值(比如r["idDispositivo"])
  • 当字段值存在于set数组中时,函数返回true,否则返回false,完全等价于多个or条件的逻辑。

动态生成场景适配

如果需要动态生成查询,只需要动态构建set参数的数组即可,相比拼接大量or条件,这种方式代码更简洁、可读性更高,也更容易维护。

内容的提问来源于stack exchange,提问作者Rirro Romeu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:02:51