Influx-DB Uniq查询

时间:2018-06-20 16:42:46

标签: influxdb

我正在尝试对INFLUX-DB进行查询以获取唯一值。下面是我使用的查询,

select host AS Host,(value/100) AS Load from metrics  where time > now() - 1h and command='Check_load_current' and value>4000;

查询的输出是

enter image description here

我真正想要的是唯一的“主机”值。例如,即使负载值不同,我也希望“ host-1”作为输出仅重复一次(最新值)。如何实现此目的?任何帮助都会大有帮助。

2 个答案:

答案 0 :(得分:0)

如果您只想为每个唯一的host标签获取最新值,请执行以下操作:

SELECT host AS Host, last(value)/100 AS Load
FROM metrics
GROUP BY host

答案 1 :(得分:0)

问::我想要每个唯一的“主机”中的最新值,如何实现?

提供以下数据库:

time                host   value
----                ----   -----
1529508443000000000 host01 42.72
1529508609000000000 host05 53.94
1529508856000000000 host01 40.37
1529508913000000000 host02 41.02
1529508937000000000 host01 44.49

A:考虑分解问题。

首先,您可以使用“分组依据” 操作将“标签值”分组到各自的存储桶中。

Select * from number group by "host"

name: number
tags: host=host01
time                value
----                -----
1529508443000000000 42.72
1529508856000000000 40.37
1529508937000000000 44.49

name: number
tags: host=host02
time                value
----                -----
1529508913000000000 41.02

name: number
tags: host=host05
time                value
----                -----
1529508609000000000 53.94

接下来,您将要按降序对每个存储桶中的数据进行排序,然后告诉influxdb仅返回每个存储桶的前1行。

因此,将“按DESC排序”和“限制1”过滤器添加到第一个查询中,它将为您提供所需的结果。

> select * from number group by "host" order by desc limit 1;
name: number
tags: host=host05
time                value
----                -----
1529508609000000000 53.94

name: number
tags: host=host02
time                value
----                -----
1529508913000000000 41.02

name: number
tags: host=host01
time                value
----                -----
1529508937000000000 44.49

参考:

https://docs.influxdata.com/influxdb/v1.5/query_language/data_exploration/#the-group-by-clause

https://docs.influxdata.com/influxdb/v1.5/query_language/data_exploration/#order-by-time-desc

https://docs.influxdata.com/influxdb/v1.5/query_language/data_exploration/#the-limit-and-slimit-clauses