理解一条语句: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求差