一、说明
本文来给大家介绍下InfluxDB常用函数中的第二部分--选择(Selectors)类函数。
二、函数介绍
1)TOP()函数
作用:返回一个字段中最大的N个值,字段类型必须是长整型或float64类型。
语法:SELECT TOP(<field_name>[,<tag_key(s)>],<N>) [,<tag_key(s)>|<field_key(s)>] [INTO_clause] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]
clause 从句,分句; 条款,款项;
> select top("table_online_regions",3) from hbase_tables
这个例子返回表中 table_online_regions字段中最大的三个值。
2)BOTTOM()函数
作用:返回一个字段中最小的N个值。字段类型必须是长整型或float64类型。
语法:SELECT BOTTOM(<field_name>[,<tag_name>],<N>)[,<tag_keys>] FROM[WHERE<stuff>] [GROUP BY<stuff>]
> select bottom("table_online_regions",3) from hbase_tables
这个例子返回表中 table_online_regions字段中最小的三个值。 也可将关联tag放在一起查询,但如果tag值少于N的值,则返回的值的个数只会取tag中字段值少的那个。
3)FIRST()函数
作用:返回一个字段中最老的取值。
语法:SELECT FIRST(<field_key>)[,<tag_key(s)>] FROM<measurement_name>[WHERE <stuff>] [GROUP BY<stuff>]
> select first(table_online_regions) from hbase_tables where table_name='AdSystemResource'
time=1524553049815000000/1000000=2018/4/24 14:57:29
这个语句返回了在table_name='AdSystemResource',最旧的那个table_online_regions的取值和时间
4)LAST()函数
作用:返回一个字段中最新的取值。
语法:SELECT LAST(<field_name>)[,<tag_key(s)>] FROM<measurement_name>[WHERE<stuff>] [GROUP BY<stuff>]
> select last(table_online_regions) from hbase_tables where table_name='AdSystemResource'
time=152704734226700000/1000000=2018/5/23 11:49:02
5)MAX()函数
作用:返回一个字段中的最大值。该字段类型必须是长整型,float64,或布尔类型。
语法:SELECT MAX(<field_name>)[,tag_name(s)] FROM<measurement_name>[WHERE<stuff>] [GROUP BY<stuff>]
> select max(table_online_regions) from hbase_tables where table_name='AdSystemResource'
6)MIN()函数 作用:返回一个字段中的最小值。该字段类型必须是长整型,float64,或布尔类型。
语法:SELECT MIN(<field_name>)[,tag_name(s)] FROM<measurement_name>[WHERE<stuff>] [GROUP BY<stuff>]
> select min(server_requests_per_second) from hbase_servers where server_name='159v71'
> select min(server_requests_per_second),server_name from hbase_servers
7)PERCENTILE()函数
作用:返回排序值排位为N的百分值。字段的类型必须是长整型或float64。 百分值是介于100到0之间的整数或浮点数,包括100。
SELECT PERCENTILE(<field_key>,<N>)[,tag_key(s)] FROM<measurement_name>[WHERE<stuff>] [GROUP BY<stuff>]
> select percentile(server_requests_per_second,5),server_name from hbase_servers
> select percentile(server_requests_per_second,10),server_name from hbase_servers
> select percentile(server_requests_per_second,90),server_name from hbase_servers
从实践结果来看,排序方法为大数在前