您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页influxDB变换类函数

influxDB变换类函数

来源:好走旅游网
influxDB变换类函数

1、DERIVATIVE()函数

作⽤:返回⼀个字段在⼀个series中的变化率。

InfluxDB会计算按照时间进⾏排序的字段值之间的,并将这些结果转化为单位变化率。其中,单位可以指定,默认为1s。语法:

SELECT DERIVATIVE(, []) FROM [WHERE ]

其中,unit取值可以为以下⼏种:

u --microsecondss --secondsm --minutesh --hoursd --daysw --weeks

DERIVATIVE()函数还可以在GROUP BY time()的条件下与聚合函数嵌套使⽤,格式如下:

SELECT DERIVATIVE(AGGREGATION_FUNCTION(),[]) FROM WHERE GROUP BY time()

下⾯的例⼦六个观测值的water_level在表h2o_feet设置tag为 santa_monica:

name: h2o_feet--------------time water_level2015-08-18T00:00:00Z 2.0642015-08-18T00:06:00Z 2.1162015-08-18T00:12:00Z 2.0282015-08-18T00:18:00Z 2.1262015-08-18T00:24:00Z 2.0412015-08-18T00:30:00Z 2.051例⼦1

计算每秒钟的变化率

SELECT DERIVATIVE(water_level) FROM h2o_feet WHERE location = 'santa_monica' LIMIT 5结果

name: h2o_feet--------------time derivative

2015-08-18T00:06:00Z 0.000144444444444444572015-08-18T00:12:00Z -0.000244444444444444652015-08-18T00:18:00Z 0.00027222222222222182015-08-18T00:24:00Z -0.0002361111111111112015-08-18T00:30:00Z 2.777777777777842e-05

注意,derivative中的第⼀个字段值(0.00014)不是0.052(原始数据中前两个字段值之间的差异:2.116 - 2.604=0.052)。因为查询不指定单元的选择,InfluxDB⾃动计算每⼀秒的变化率,⽽不是每六分钟的变化率。导数列中第⼀个值的计算如下所分⼦是按字段值之间的差异。分母是以秒计的相关时间戳之间的差异(2015-08-18t00:06:00z - 2015-08-18t00:00:00z = 360s)除以单位(1s),从2015-08-18t00:00:00z率2015-08-18t00:06:00z返回每秒的变化率。例⼦2

计算每六分钟的变化率。

SELECT DERIVATIVE(water_level,6m) FROM h2o_feet WHERE location = 'santa_monica' LIMIT 5结果

name: h2o_feet--------------time derivative

2015-08-18T00:06:00Z 0.0520000000000000462015-08-18T00:12:00Z -0.088000000000000082015-08-18T00:18:00Z 0.097999999999999862015-08-18T00:24:00Z -0.084999999999999962015-08-18T00:30:00Z 0.010000000000000231

解释:

数列中第⼀个值的计算如下所⽰:(2.116 - 2.064 / (6m / 12m)

分⼦是按字段值之间的差异。分母是分钟相关的时间戳之间的差异(2015-08-18t00:06:00z - 2015-08-18t00:00:00z = 6m)除以单位(12m)。这将改变每12分钟从2015-08-18t00:00:00z率2015-08-18t00:06:00z。注:指定12m为单位并不意味着InfluxDB计算的数据每12分钟间隔的变化率。相反,InfluxDB计算每个区间的有效数据每12分钟变化率。例⼦3

计算每12分钟间隔最⼤值每秒的变化率

SELECT DERIVATIVE(MAX(water_level)) FROM h2o_feet WHERE location = 'santa_monica' AND time >= '2015-08-18T00:00:00Z' AND time < '2015-08-18T00:36:00Z' GROUP BY time(12m)结果:

name: h2o_feet--------------time derivative

2015-08-18T00:12:00Z 0.0099999999999997872015-08-18T00:24:00Z -0.07499999999999973

解释:

为了得到这些结果,第⼀集InfluxDB计算区间指定组中的time()条款的时间max() water_level数据(12m)。这些结果看是这样name: h2o_feet--------------time max

2015-08-18T00:00:00Z 2.1162015-08-18T00:12:00Z 2.1262015-08-18T00:24:00Z 2.051

其次,计算每12m InfluxDB变化率(相同的时间间隔作为集团的time()区间)在派⽣列得到的结果。导数列中第⼀个值的计算如下所⽰:(2.126 - 2.116) / (12m / 12m)

分⼦是按字段值之间的差异。分母是分钟相关的时间戳之间的差异(2015-08-18t00:12:00z - 2015-08-18t00:00:00z=12m)除以单位(12m)。这个回报率每12分钟改变汇总数据从2015-08-18t00:00:00z到2015-08-18t00:12:00z。

例⼦4

  将数据聚合到18分钟间隔,计算每六分钟的变化率。

SELECT DERIVATIVE(SUM(water_level),6m) FROM h2o_feet WHERE location = 'santa_monica' AND time >= '2015-08-18T00:00:00Z' AND time < '2015-08-18T00:36:00Z' GROUP BY time(18m)

结果:

name: h2o_feet--------------time derivative

2015-08-18T00:18:00Z 0.0033333333333332624

解释:

为了得到这些结果,第⼀集InfluxDB计算区间指定组中的time()条款的时间water_level的sum()数据(18m)。聚合结果如下所⽰name: h2o_feet--------------time sum

2015-08-18T00:00:00Z 6.2082015-08-18T00:18:00Z 6.218

其次,计算出每单位InfluxDB变化率(6m)在派⽣列得到的结果。导数列中第⼀个值的计算如下所⽰:(6.218 - 6.208) / (18m / 6m)

分⼦是按字段值之间的差异。分母是分钟相关的时间戳之间的差异(2015-08-18t00:18:00z - 2015-08-18t00:00:00z = 18m)除以单位(6m)。这个返回的汇总数据2015-08-18t00:00:00z到2015-08-18t00:18:00z的每六分钟的变化率。

2、DIFFERENCE()函数

作⽤:返回⼀个字段中连续的时间值之间的。字段类型必须是长整型或float64。最基本的语法:

SELECT DIFFERENCE() FROM [WHERE ]

与GROUP BY time()以及其他嵌套函数⼀起使⽤的语法格式:

SELECT DIFFERENCE(()) FROM WHERE GROUP BY time()

其中,函数可以包含以下⼏个:

COUNT(), MEAN(), MEDIAN(),SUM(), FIRST(), LAST(), MIN(), MAX(), 和 PERCENTILE()。

下⾯的例⼦集中在2015-08-18t00:00:00z和2015-08-18t00:36:00z之间santa_monica现场water_level:

> SELECT water_level FROM h2o_feet WHERE location='santa_monica' AND time >= '2015-08-18T00:00:00Z' and time <= '2015-08-18T00:36:00Z'name: h2o_feet--------------time water_level

2015-08-18T00:00:00Z 2.0642015-08-18T00:06:00Z 2.1162015-08-18T00:12:00Z 2.0282015-08-18T00:18:00Z 2.1262015-08-18T00:24:00Z 2.0412015-08-18T00:30:00Z 2.0512015-08-18T00:36:00Z 2.067例⼦1

计算water_level之间值的差异:

SELECT DIFFERENCE(water_level) FROM h2o_feet WHERE location='santa_monica' AND time >= '2015-08-18T00:00:00Z' and time <= '2015-08-18T00:36:00Z'结果:

name: h2o_feet--------------time difference

2015-08-18T00:06:00Z 0.0520000000000000462015-08-18T00:12:00Z -0.088000000000000082015-08-18T00:18:00Z 0.097999999999999862015-08-18T00:24:00Z -0.084999999999999962015-08-18T00:30:00Z 0.0100000000000002312015-08-18T00:36:00Z 0.016000000000000014

解释:

差异列中的第⼀个值是2.116 - 2.064,差值列中的第⼆个值为2.028 - 2.116。请注意,⼩数点的额外位置是浮点数不准确的结果。因为都为float类型。例⼦2

选择每12分钟间隔最⼩的water_level值计算这些值之间的差异:

SELECT DIFFERENCE(MIN(water_level)) FROM h2o_feet WHERE location='santa_monica' AND time >= '2015-08-18T00:00:00Z' and time <= '2015-08-18T00:36:00Z' GROUP BY time(12m)结果:

name: h2o_feet--------------time difference

2015-08-18T00:12:00Z -0.036000000000000032015-08-18T00:24:00Z 0.01299999999999992015-08-18T00:36:00Z 0.026000000000000245

解释:

在不同列中得到值,InfluxDB⾸先选择min()值每隔12分钟:

> SELECT MIN(water_level) FROM h2o_feet WHERE location='santa_monica' AND time >= '2015-08-18T00:00:00Z' and time <= '2015-08-18T00:36:00Z' GROUP BY time(12m)name: h2o_feet--------------time min

2015-08-18T00:00:00Z 2.0642015-08-18T00:12:00Z 2.0282015-08-18T00:24:00Z 2.0412015-08-18T00:36:00Z 2.067

然后使⽤这些值计算时间顺序值之间的差值;差值列中的第⼀个值是2.028 - 2.064。

3、ELAPSED()函数

作⽤:返回⼀个字段在连续的时间间隔间的差异,间隔单位可选,默认为1纳秒。单位可选项如下图:

语法:

SELECT ELAPSED(, ) FROM [WHERE ]

例⼦1:

计算差值(纳秒)的领域h2o_feet之间的时间戳:

SELECT ELAPSED(water_level) FROM h2o_feet WHERE location = 'santa_monica' AND time >= '2015-08-18T00:00:00Z' and time <= '2015-08-18T00:24:00Z'结果

name: h2o_feet--------------time elapsed

2015-08-18T00:06:00Z 3600000000002015-08-18T00:12:00Z 3600000000002015-08-18T00:18:00Z 3600000000002015-08-18T00:24:00Z 360000000000例⼦2

在计算领域h2o_feet之间的时间间隔⼀分钟数:

SELECT ELAPSED(water_level,1m) FROM h2o_feet WHERE location = 'santa_monica' AND time >= '2015-08-18T00:00:00Z' and time <= '2015-08-18T00:24:00Z'结果

name: h2o_feet--------------time elapsed

2015-08-18T00:06:00Z 62015-08-18T00:12:00Z 62015-08-18T00:18:00Z 62015-08-18T00:24:00Z 6

注意:如果设置的时间间隔⽐字段数据间的时间间隔更⼤时,则函数会返回0,如下所⽰:

> SELECT ELAPSED(water_level,1h) FROM h2o_feet WHERE location = 'santa_monica' AND time >= '2015-08-18T00:00:00Z' and time <= '2015-08-18T00:24:00Z'name: h2o_feet--------------time elapsed2015-08-18T00:06:00Z 02015-08-18T00:12:00Z 02015-08-18T00:18:00Z 02015-08-18T00:24:00Z 0

4、MOVING_AVERAGE()函数

作⽤:返回⼀个连续字段值的移动平均值,字段类型必须是长整形或者float64类型。语法:基本语法

SELECT MOVING_AVERAGE(,) FROM [WHERE ]

与其他函数和GROUP BY time()语句⼀起使⽤时的语法

SELECT MOVING_AVERAGE((),) FROM WHERE GROUP BY time()

此函数可以和以下函数⼀起使⽤:

COUNT(), MEAN(),MEDIAN(), SUM(), FIRST(), LAST(), MIN(), MAX(), and PERCENTILE().

下⾯的例⼦water_level在表 h2o_feet,location 为santa_monica,时间段2015 - 08 - 18 - t00:00:00z和2015 - 08 - 18 - t00:36:00z:

> SELECT water_level FROM h2o_feet WHERE location = 'santa_monica' AND time >= '2015-08-18T00:00:00Z' and time <= '2015-08-18T00:36:00Z'name: h2o_feet--------------time water_level

2015-08-18T00:00:00Z 2.0642015-08-18T00:06:00Z 2.1162015-08-18T00:12:00Z 2.0282015-08-18T00:18:00Z 2.1262015-08-18T00:24:00Z 2.0412015-08-18T00:30:00Z 2.0512015-08-18T00:36:00Z 2.067例⼦1:

计算移动平均在每2字段值:

SELECT MOVING_AVERAGE(water_level,2) FROM h2o_feet WHERE location = 'santa_monica' AND time >= '2015-08-18T00:00:00Z' and time <= '2015-08-18T00:36:00Z'结果:

name: h2o_feet--------------time moving_average

2015-08-18T00:06:00Z 2.092015-08-18T00:12:00Z 2.0722015-08-18T00:18:00Z 2.0772015-08-18T00:24:00Z 2.0835

2015-08-18T00:30:00Z 2.04600000000000032015-08-18T00:36:00Z 2.059

解释

移动平均线列中的第⼀个值的平均值是2.064和2.116,第⼆个移动平均线列中的值是2.116和2.028的平均⽔平。例⼦2

每隔12分钟选择最低值water_level和计算移动平均每2字段值:

SELECT MOVING_AVERAGE(MIN(water_level),2) FROM h2o_feet WHERE location = 'santa_monica' AND time >= '2015-08-18T00:00:00Z' and time <= '2015-08-18T00:36:00Z' GROUP BY time(12m)结果:

name: h2o_feet--------------time moving_average

2015-08-18T00:12:00Z 2.04600000000000032015-08-18T00:24:00Z 2.03450000000000042015-08-18T00:36:00Z 2.0540000000000003

解释:

这些结果,InfluxDB⾸先选择MIN() water_level每12分钟间隔:name: h2o_feet--------------time min

2015-08-18T00:00:00Z 2.0642015-08-18T00:12:00Z 2.0282015-08-18T00:24:00Z 2.0412015-08-18T00:36:00Z 2.067

然后使⽤这些值来计算移动平均在每2字段值,移动平均线列中的第⼀个结果的平均值2.064和2.028,第⼆个结果是2.028和2.041的平均⽔平。

5、NON_NEGATIVE_DERIVATIVE()函数

作⽤:返回在⼀个series中的⼀个字段中值的变化的⾮负速率。InfluxDB计算连续字段值之间的差异和转换的结果为每单位变化率。单位参数是可选的,如果没有指定,则默认为1秒(1s)。语法:

SELECT NON_NEGATIVE_DERIVATIVE(, []) FROM [WHERE ]其中unit取值可以为以下⼏个:

non_negative_derivative()也可以与嵌套函数a GROUP BY time()⼀起使⽤。

查询包含这些选项,InfluxDB⾸先进⾏聚合,选择,或转型通过时间间隔函数group by time()。然后计算时间字段值之间的差异,并将这些结果转换为每单位的变化率。

单元参数是可选的,如果没有指定,默认为相同的时间间隔作为集团的time()区间。与聚合类函数放在⼀起使⽤时的语法如下所⽰:

SELECT NON_NEGATIVE_DERIVATIVE(AGGREGATION_FUNCTION(),[]) FROM WHERE GROUP BY time()

可以参考derivative()的查询例⼦。derivative()和non_negative_derivative所有的查询结果是相同的除了non_negative_derivative()只返回正数。6、STDDEV()函数

作⽤:返回⼀个字段中的值的标准偏差。值的类型必须是长整型或float64类型语法:

SELECT STDDEV() FROM [WHERE ] [GROUP BY ]例⼦1

计算表h20_feet 中字段water_level的标准偏差SELECT STDDEV(water_level) FROM h2o_feet结果:

name: h2o_feet--------------time stddev

1970-01-01T00:00:00Z 2.279144584196145

例⼦2

计算water_level在⼀个星期时间间隔和location 标签,2015年9⽉18⽇的午夜2015年8⽉18⽇中午之间标准偏差。

SELECT STDDEV(water_level) FROM h2o_feet WHERE time >= '2015-08-18T00:00:00Z' and time < '2015-09-18T12:06:00Z' GROUP BY time(1w), location结果:

name: h2o_feet

tags: location = coyote_creektime stddev---- ------2015-08-13T00:00:00Z 2.24372630801939852015-08-20T00:00:00Z 2.1212761501447192015-08-27T00:00:00Z 3.04161221707862152015-09-03T00:00:00Z 2.53480650254352072015-09-10T00:00:00Z 2.5840039548826732015-09-17T00:00:00Z 2.2587514836274414name: h2o_feet

tags: location = santa_monicatime stddev---- ------2015-08-13T00:00:00Z 1.111563445875532015-08-20T00:00:00Z 1.09098492790823662015-08-27T00:00:00Z 1.98701161800969622015-09-03T00:00:00Z 1.35167784509020672015-09-10T00:00:00Z 1.49605738115005882015-09-17T00:00:00Z 1.075701669442093

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务