有没有办法以编程方式更改查询中执行的功能?

Is there a way to programmatically change the function performed in a query?

我正在使用带有 InfluxDB 的 Grafana 作为数据库。

假设我有以下查询

SELECT MIN("field_1"), MAX("field_1") FROM "measurement" WHERE $timeFilter 

但我希望用户能够在同一面板中查看 MEAN

SELECT MEAN("field_1") FROM "measurement" WHERE $timeFilter 

有没有办法做到这一点?理想情况下,该解决方案与 field_1 无关,因为我想在具有不同领域的多个面板中使用它。

创建 Grafana 仪表板变量,例如function 与匹配 InfluxDB 函数的值:MIN,MAX,MEAN,COUNT,LAST,... 然后在 Grafana InfluxDB 查询中使用该变量:

SELECT ${function:raw}("field_1") FROM "measurement" WHERE $timeFilter

因此 Grafana 生成正确的 InfluxDB 查询语法。

甚至字段也可以是仪表板变量,可以使用 InfluxDB 查询自动发现 SHOW FIELD KEYS