我有一个充满 Value 的Influx数据库 . 这些值由Grafana提供 . 我需要的是根据选定的时间间隔获取实际值 .
目前,我对单个指标有以下查询:
SELECT mean("value") FROM "table" WHERE $timeFilter GROUP BY time($interval) fill(null)
我想要的是从该间隔中减去最低值,因此它只计算该间隔内的值 . 因此图表需要从零开始 . 要从该间隔获得最低值,我使用:
SELECT min("value") FROM "table" WHERE $timeFilter
所以我认为将这两个(使用子查询)组合起来应该可行:
SELECT mean("value") - (SELECT min("value") FROM "table" WHERE $timeFilter) FROM "table" WHERE $timeFilter GROUP BY time($interval) fill(null)
不幸的是,这不起作用 . 该查询不被接受为子查询 .
2 回答
@Pigueiras:
我很难知道我的设置正在运行哪个版本的InfluxDB . 实际上,整个工作流程都是由我以前的同事开发的,包括InfluxDB(用于存储时间序列数据)Grafana(用于查询和可视化前端数据) .
但是,我发现我的Grafana是v4.5.2
我还想在Grafana中使用子查询,如下所示:
InfluxDB Subqueries in Grafana FAILS with "error parsing query: GROUP BY requires at least one aggregate function"
我不确定它是否因版本不匹配或其他原因而失败 .
非常感谢您的支持 .
巴拉
这可以使用InfluxDB的内置函数:
这取得了连续数据点之间的差异(忽略绝对值),并在选定的时间范围内累计求和 .
我不完全确定,但此查询需要与
GROUP BY
子句关联的附加mean()
. 也许最好根据您的需要使用max
或first
.