我正在尝试对INFLUX-DB进行查询以获取唯一值。下面是我使用的查询,
select host AS Host,(value/100) AS Load from metrics where time > now() - 1h and command='Check_load_current' and value>4000;
查询的输出是
我真正想要的是唯一的“主机”值。例如,即使负载值不同,我也希望“ host-1”作为输出仅重复一次(最新值)。如何实现此目的?任何帮助都会大有帮助。
答案 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