我有一个充满价值的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)
不幸的是,这不起作用。该查询不被接受为子查询。
答案 0 :(得分:0)
@Pigueiras:
我很难知道我的设置正在运行哪个版本的InfluxDB。实际上,整个工作流程是由我以前的同事开发的,包括InfluxDB(用于存储时间序列数据)+ Grafana(用于查询和可视化前端数据)。
然而,我发现我的Grafana是v4.5.2
我还想在Grafana中使用子查询,如下所示:
我不确定它是否因版本不匹配或其他原因而失败。
非常感谢您的支持。
巴拉
答案 1 :(得分:0)
使用InfluxDB的内置功能可以做到这一点:
SELECT cumulative_sum(difference((mean("value")))) FROM "table" WHERE $timeFilter GROUP BY time($interval) fill(null)
这将取连续数据点之间的差(忽略绝对值),并在选定的时间范围内累计该总和。
我不确定,但是此查询需要与mean()
子句关联的附加GROUP BY
。也许根据您的需要改用max
或first
。