理解一条语句:SELECT difference(sum("value")) FROM "mq_enqueue" WHERE "channel" =~ /ActiveMQ_TEST/ AND $timeFilter GROUP BY time($interval)

最近使用grafana在查询InfluxDB中,用到了这一条语句

SELECT difference(sum("value")) FROM "mq_enqueue" WHERE "channel" =~ /ActiveMQ_TEST/ AND $timeFilter GROUP BY time($interval)

这里把学习结果整理一遍:

difference()是influxdb内置函数,用于获取相邻数据之间的差值

sum()是influxdb内置函数,用于获取所有数据之和,例如sum("value")即获取field-key为value的对应的值的和

GROUP BY time($interval),指定一个时间间隔,划定一个时间段,然后对该时间段内的数据进行操作,$interval的值可以在grafana里指定,默认等于数据写入的时间间隔

difference()支持嵌套函数

difference(sum("value"))表示先做sum再做difference

WHERE "channel" =~ /ActiveMQ_TEST/ ,influxdb查询语句支持正则表达式

所以,整体的意思就是:

对于指定时间段内的,channel的值包含ActiveMQ_TEST的字段为value的数据先进行sum求和,然后difference求差

 

posted @ 2017-11-07 10:54  Peterer~王勇  阅读(1037)  评论(0编辑  收藏  举报