InfluxDB Flux - 过滤字段匹配值的位置

Posted

技术标签:

【中文标题】InfluxDB Flux - 过滤字段匹配值的位置【英文标题】:InfluxDB Flux - Filter where field matches value 【发布时间】:2021-01-29 11:10:25 【问题描述】:

我正在使用InfluxDB 和Grafana,并且我有一个名为items 的测量值,其中包含一些标签和一个名为itemType 的字段。我需要过滤 itemType 是某个字符串的行。以下 InfluxQL 查询正是我所需要的:

SELECT * FROM "items" WHERE "itemType" = 'example'

我怎样才能在Flux 中做同样的事情?

我目前有以下查询,除了按字段过滤之外,它可以执行所有操作:

from(bucket: "dbname/autogen")
    |> range(start: 2020-10-12T01:56:34Z, stop: 2020-10-12T02:54:10Z)
    |> filter(fn:(r) => r._measurement == "items")
    |> aggregateWindow(every: 5m, fn: count)

但是用 filter(fn:(r) => r._measurement == "items" and r.itemType == "example") 替换 filter 函数不会返回任何结果,即使上面的 InfluxQL 查询在 InfluxDB CLI 中使用时确实返回数据。

【问题讨论】:

【参考方案1】:

如果 itemType 是标签,则您指定的通量查询将起作用,但是,因为它是一个字段,使查询起作用的方法之一是将字段名称及其值设置为如下:

from(bucket: "dbname/autogen")
    |> range(start: 2020-10-12T01:56:34Z, stop: 2020-10-12T02:54:10Z)
    |> filter(fn:(r) => r._measurement == "items" and r._field == "itemType" and r._value == "example")
    |> aggregateWindow(every: 5m, fn: count)

【讨论】:

以上是关于InfluxDB Flux - 过滤字段匹配值的位置的主要内容,如果未能解决你的问题,请参考以下文章

从 InfluxDB 测量中删除具有不需要的字段值的点

InfluxDB - 使用 Flux 按系列数限制查询结果

InfluxDB 2.0.8 安装使用flux查询数据可视化

InfluxDB 2.1.1 安装使用flux查询数据可视化

InfluxDB 2.1.1 安装使用flux查询数据可视化

influxdb 查询:通过正则表达式指定或过滤标签