在Grafana 10中基于InfluxDB 2.7的字段创建变量
从InfluxDB字段创建Grafana变量的正确Flux查询
场景1:获取指定measurement的所有字段名
如果需要提取VMwareRawData14这个measurement下的所有字段名称作为Grafana变量,使用官方提供的schema.fieldValues函数最直接高效,无需遍历时间范围数据:
import "influxdata/influxdb/schema" schema.fieldValues( bucket: "Vbuck", measurement: "VMwareRawData14" )
这个函数和你用来提取标签值的schema.tagValues用法一致,专门用于字段名提取。
场景2:获取特定字段的所有唯一值
如果需要提取VMwareRawData14中Policy_Type字段的所有不同值作为变量,修正后的查询如下:
from(bucket: "Vbuck") |> range(start: -30d) |> filter(fn: (r) => r["_measurement"] == "VMwareRawData14") |> filter(fn: (r) => r["_field"] == "Policy_Type") // 过滤出目标字段 |> distinct(column: "_value") // 提取字段的唯一值(字段值存在于_value列) |> keep(columns: ["_value"]) |> rename(columns: {_value: "Policy_Type"}) // 可选:将列名重命名为直观名称
原查询失效的原因:
- 未过滤目标字段
_field,导致查询包含该measurement下所有字段的数据,逻辑混乱 - InfluxDB中字段值实际存储在
_value列,而非直接以字段名作为列名,原查询针对错误的列执行distinct - 多余的
group操作无意义,可直接省略
内容的提问来源于stack exchange,提问作者ivbtar
相关产品推荐
相关产品推荐

