10_InfluxDB常用函数(三)变换类函数(DERIVATIVE, DIFFERENCE,ELAPSED,MOVING_AVERAGE,NON_NEGATIVE_DERIVATIVE)等
10.InfluxDB學習之InfluxDB常用函數(三)變換類函數
轉自:https://www.yisu.com/zixun/36847.html
10.1.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>)示例:
假設location = santa_monica 條件下數據有以下幾條:
計算每一秒的變化率:
SELECT DERIVATIVE(water_level) FROM h3o_feet WHERE location = 'santa_monica' LIMIT 5; name: h3o_feet--------------time derivative2015-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第一行數據的計算公式為(2.116 - 2.064) / (360s / 1s)
計算每六分鐘的變化率:
SELECT DERIVATIVE(water_level,6m) FROM h3o_feet WHERE location = 'santa_monica' LIMIT 5; name: h3o_feet--------------time derivative2015-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 / 6m)
計算每12分鐘的變化率:
SELECT DERIVATIVE(water_level,12m) FROM h3o_feet WHERE location = 'santa_monica' LIMIT 5; name: h3o_feet--------------time derivative2015-08-18T00:06:00Z 0.104000000000000092015-08-18T00:12:00Z -0.176000000000000162015-08-18T00:18:00Z 0.195999999999999732015-08-18T00:24:00Z -0.169999999999999932015-08-18T00:30:00Z 0.020000000000000462第一行數據計算過程為:(2.116 - 2.064 / (6m / 12m))
計算每12分鐘最大值的變化率
> SELECT DERIVATIVE(MAX(water_level)) FROM h3o_feet WHERE location = 'santa_monica' AND time >= '2015-08-18T00:00:00Z' AND time < '2015-08-18T00:36:00Z' GROUP BY time(12m); name: h3o_feet--------------time derivative2015-08-18T00:12:00Z 0.0099999999999997872015-08-18T00:24:00Z -0.07499999999999973這個函數功能非常多,也非常復雜,更多對于此功能的詳細解釋請看官網:https://docs.influxdata.com/influxdb/v0.13/query_language/functions/#derivative
10.2.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()。使用示例:
例子中使用的源數據如下所示:
計算water_level間的差異:
Select DIFFERENCE(water_level) FROM h3o_feet WHERE location='santa_monica' AND time >= '2015-08-18T00:00:00Z' and time <= '2015-08-18T00:36:00Z';數據類型都為float類型。
10.3.ELAPSED()函數
作用:返回一個字段在連續的時間間隔間的差異,間隔單位可選,默認為1納秒。
語法:
SELECT ELAPSED(<field_key>, <unit>) FROM <measurement_name> [WHERE <stuff>]示例:
計算h3o_feet字段在納秒間隔下的差異。
在一分鐘間隔下的差異率:
SELECT ELAPSED(water_level,1m) FROM h3o_feet WHERE location = 'santa_monica' AND time >= '2015-08-18T00:00:00Z' and time <= '2015-08-18T00:24:00Z';注意:如果設置的時間間隔比字段數據間的時間間隔更大時,則函數會返回0,如下所示:
SELECT ELAPSED(water_level,1h) FROM h3o_feet WHERE location = 'santa_monica' AND time >= '2015-08-18T00:00:00Z' and time <= '2015-08-18T00:24:00Z';10.4.MOVING_AVERAGE()函數
作用:返回一個連續字段值的移動平均值。
語法:
基本語法
與其他函數和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().
10.5.NON_NEGATIVE_DERIVATIVE()函數
作用:返回在一個series中的一個字段中值的變化的非負速率。
語法:
SELECT NON_NEGATIVE_DERIVATIVE(<field_key>, [<unit>]) FROM <measurement_name> [WHERE <stuff>];與聚合類函數放在一起使用時的語法如下所示:
SELECT NON_NEGATIVE_DERIVATIVE(AGGREGATION_FUNCTION(<field_key>),[<unit>]) FROM <measurement_name> WHERE <stuff> GROUP BY time(<aggregation_interval>);此函數示例請參閱:DERIVATIVE()函數
10.6.STDDEV()函數
作用:返回一個字段中的值的標準偏差。值的類型必須時長整型或float64類型。
語法:
SELECT STDDEV(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]示例:
SELECT STDDEV(water_level) FROM h3o_feet;示例2:
SELECT STDDEV(water_level) FROM h3o_feet WHERE time >= '2015-08-18T00:00:00Z' and time < '2015-09-18T12:06:00Z' GROUP BY time(1w);總結
以上是生活随笔為你收集整理的10_InfluxDB常用函数(三)变换类函数(DERIVATIVE, DIFFERENCE,ELAPSED,MOVING_AVERAGE,NON_NEGATIVE_DERIVATIVE)等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 歌词1990年生人还是1992年生人了快
- 下一篇: 义务兵考军校准考证什么时候发?