Influxdb 使用XDB子查询减去值

Influxdb 使用XDB子查询减去值,influxdb,grafana,Influxdb,Grafana,我有一个流入数据库,里面充满了值。这些值由Grafana提供。我需要的是根据选定的时间间隔获取实际值 目前,我对单个指标有以下查询: SELECT mean("value") FROM "table" WHERE $timeFilter GROUP BY time($interval) fill(null) 我想要的是从这个区间中减去最小的值,所以它只计算这个区间内的值。因此,图表需要从零开始。要从该间隔中获取最低值,我使用: SELECT min("value") FROM "table"

我有一个流入数据库,里面充满了值。这些值由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)

不幸的是,这不起作用。查询不被接受为子查询。

这可以使用XDB的内置函数:

SELECT cumulative_sum(difference((mean("value")))) FROM "table" WHERE $timeFilter GROUP BY time($interval) fill(null)
这将获取连续数据点之间的差值(忽略绝对值),并在选定的时间范围内累计求和


我不完全确定,但是这个查询需要一个额外的
mean()
groupby
子句关联。也许最好使用
max
first
,这取决于您的需要。

您使用的是什么版本的Influx?原则上,在1.2中应该可以这样做。我使用的是XDB外壳版本:1.2.0。我知道子查询是可能的,但就文档而言,只在“FROM”部分。文档中没有给出其他类型子查询的示例。您完全正确,看起来这是不可能的。我想在一些黑客中用grafana做模板,但它不起作用,因为它显示的是时间戳而不是
min(“count”)
。我想你能得到的最好结果就是计算最小值并从查询中减去常数:(谢谢你的确认。你说“减去常数”是什么意思?你能解释一下这是怎么回事吗?我的意思是:
SELECT mean(“value”)-123 from…