【大数据】InfluxDB的常用查询及常用函数
通过上篇博客,我们已经简单认识了InfluxDB了,其实在实际使用中,我们最常用的就是查询了,这篇博客就详细了解下InfluxDB的查询操作一、常用查询1、从单个measurement查询所有的field和tagSELECT * FROM measurement_name where tag='serverA'2、从单个measurement查询所有的fieldSELECT *::field FR
通过上篇博客,我们已经简单认识了InfluxDB了,其实在实际使用中,我们最常用的就是查询了,这篇博客就详细了解下InfluxDB的查询操作
一、常用查询
1、从单个measurement查询所有的field和tag
SELECT * FROM measurement_name where tag='serverA'
2、从单个measurement查询所有的field
SELECT *::field FROM measurement_name
3、从单个measurement查询特定的field和tag
SELECT "tag_name","tag_name","field_name" FROM measurement_name
4、从多个measurement中查询数据
select * from "measurement_name","measurement_name1"
5、模糊查询
(1)前缀匹配
select * from measurement_name where field=~/^给定字段/
(2)后缀匹配
select * from measurement_name where field=~/给定字段$/
(3) 包含
select * from measurement_name where field=~/给定字段/
二、select语句常见的问题
1、select查询时,至少要有一个field key,单独查tag是不可以的
2、查看tag的值用show
show tag values from "measurement_name" with key="tag_name"
3、 查询的字段值是字符串类型的,需要加单引号
4、查询的字段名是特别的(比如字段名与Influx的关键词一样),需要加双引号
三、常用函数
(1)count()函数
作用:返回一个(field)字段中的非空值的数量
SELECT COUNT(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
(2)DISTINCT()函数
作用:返回一个字段(field)的唯一值
SELECT DISTINCT(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
(3)MEAN() 函数
作用:返回一个字段(field)中的值的算术平均值(平均值)。字段类型必须是长整型或float64。
SELECT MEAN(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
(4)MEDIAN()函数
作用:从单个字段(field)中的排序值返回中间值(中位数)。字段值的类型必须是长整型或float64格式。
SELECT MEDIAN(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
(5)SPREAD()函数
作用:返回字段的最小值和最大值之间的差值。数据的类型必须是长整型或float64。
SELECT SPREAD(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
(6)SUM()函数
作用:返回一个字段中的所有值的和。字段的类型必须是长整型或float64。
SELECT SUM(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
(7)BOTTOM()函数
作用:返回一个字段中最小的N个值。字段类型必须是长整型或float64类型。
SELECT BOTTOM(<field_key>[,<tag_keys>],<N>)[,<tag_keys>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
(8)FIRST()函数
作用:返回一个字段中最老的取值。
SELECT FIRST(<field_key>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
(9)LAST()函数
作用:返回一个字段中最新的取值。
SELECT LAST(<field_key>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
(10)MAX()函数
作用:返回一个字段中的最大值。该字段类型必须是长整型,float64,或布尔类型。
SELECT MAX(<field_key>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
(11)MIN()函数
作用:返回一个字段中的最小值。该字段类型必须是长整型,float64,或布尔类型。
SELECT MIN(<field_key>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
(12)PERCENTILE()函数
作用:返回排序值排位为N的百分值。字段的类型必须是长整型或float64。
SELECT PERCENTILE(<field_key>, <N>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
(13)DERIVATIVE()函数
作用:返回一个字段在一个series中的变化率。
InfluxDB会计算按照时间进行排序的字段值之间的差异,并将这些结果转化为单位变化率。其中,单位可以指定,默认为1s。
SELECT DERIVATIVE(<field_key>, [<unit>]) FROM <measurement_name> [WHERE <stuff>]
其中,unit取值可以为以下几种:
u --microsecondss --secondsm --minutesh --hoursd --daysw --weeks
DERIVATIVE()函数还可以在GROUP BY time()的条件下与聚合函数嵌套使用,格式如下:
SELECT DERIVATIVE(AGGREGATION_FUNCTION(<field_key>),[<unit>]) FROM <measurement_name> WHERE <stuff> GROUP BY time(<aggregation_interval>)
(14)DIFFERENCE()函数
作用:返回一个字段中连续的时间值之间的差异。字段类型必须是长整型或float64。
SELECT DIFFERENCE(<field_key>) FROM <measurement_name> [WHERE <stuff>]
与GROUP BY time()以及其他嵌套函数一起使用的语法格式:
SELECT DIFFERENCE(<function>(<field_key>)) FROM <measurement_name> WHERE <stuff> GROUP BY time(<time_interval>)
其中,函数可以包含以下几个:
COUNT(), MEAN(), MEDIAN(),SUM(), FIRST(), LAST(), MIN(), MAX(), 和 PERCENTILE()。
(15)ELAPSED()函数
作用:返回一个字段在连续的时间间隔间的差异,间隔单位可选,默认为1纳秒。
SELECT ELAPSED(<field_key>, <unit>) FROM <measurement_name> [WHERE <stuff>]
(16)MOVING_AVERAGE()函数
作用:返回一个连续字段值的移动平均值,字段类型必须是长整形或者float64类型。
SELECT MOVING_AVERAGE(<field_key>,<window>) FROM <measurement_name> [WHERE <stuff>]
与其他函数和GROUP BY time()语句一起使用时的语法
SELECT MOVING_AVERAGE(<function>(<field_key>),<window>) FROM <measurement_name> WHERE <stuff> GROUP BY time(<time_interval>)
此函数可以和以下函数一起使用:
COUNT(), MEAN(),MEDIAN(), SUM(), FIRST(), LAST(), MIN(), MAX(), and PERCENTILE().
(17)NON_NEGATIVE_DERIVATIVE()函数
作用:返回在一个series中的一个字段中值的变化的非负速率。
SELECT NON_NEGATIVE_DERIVATIVE(<field_key>, []) FROM <measurement_name> [WHERE ]
与聚合类函数放在一起使用时的语法如下所示:
SELECT NON_NEGATIVE_DERIVATIVE(AGGREGATION_FUNCTION(<field_key>),[<unit>]) FROM <measurement_name> WHERE <stuff> GROUP BY time(<aggregation_interval>)
此函数与DERIVATIVE()函数类似
(18)STDDEV()函数
作用:返回一个字段中的值的标准偏差。值的类型必须是长整型或float64类型。
SELECT STDDEV(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
更多推荐
所有评论(0)