2017-04-04 139 views
9

我有一个充满了值的Influx数据库。这些值由Grafana提供。我需要的是取决于所选时间间隔的实际值。使用InfluxDB子查询来减去值

目前,我有单个指标以下查询:

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

您使用的是什么版本的Influx?原则上1.2应该可以做到这样的事情。 – Pigueiras

+0

我正在使用InfluxDB shell版本:1.2.0。 我知道subquerys是可能的,但只要文档只在'FROM'部分。该文档没有给出其他类型的子查询的例子。 – Nhz

+2

你完全正确,看起来不可能。我认为在一些黑客使用grafana进行模板化,但它不起作用,因为它显示时间戳而不是'min(“count”)'。我猜你可以得到的最好的结果是计算最小值和减去从查询中得到的常数:( – Pigueiras

回答

0

@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"

我不知道,如果它失败的堂妹版本不匹配或其他。

您的支持,将不胜感激。

Bala