Influxdb 我可以在XDB中的多个维度上调用聚合函数吗?
我在格拉法纳有一个问题:Influxdb 我可以在XDB中的多个维度上调用聚合函数吗?,influxdb,grafana,Influxdb,Grafana,我在格拉法纳有一个问题: SELECT mean(value) FROM "queues_value" WHERE "host" =~ /$host/ AND "type" = 'rabbitmq_messages' AND $timeFilter GROUP BY time($interval), "host", "instance" 目前,该图显示给定时间段内rabbitmq队列中的平均消息数,显示每个主机上每个队列的单独图 我想做基本上相同的事情,但每个主机只需要一个图,将所有队列添加到
SELECT mean(value) FROM "queues_value" WHERE "host" =~ /$host/ AND "type" = 'rabbitmq_messages' AND $timeFilter GROUP BY time($interval), "host", "instance"
目前,该图显示给定时间段内rabbitmq队列中的平均消息数,显示每个主机上每个队列的单独图
我想做基本上相同的事情,但每个主机只需要一个图,将所有队列添加到一起。这意味着取指定时间段内所有消息计数的平均值(将不同的实例
s、主机
s和时间间隔分开),然后将它们相加(这次只将不同的主机
s和时间间隔分开)
问题是,像mean
或sum
这样的每个聚合函数只会影响整个查询,而且似乎没有办法将groupby
语句仅应用于一个聚合函数
如果可能的话,我会这样做:
SELECT sum(mean(value) GROUP BY "instance") FROM "queues_value" WHERE "host" =~ /$host/ AND "type" = 'rabbitmq_messages' AND $timeFilter GROUP BY time($interval), "host"
或者这个:
SELECT sum(value) FROM (SELECT mean(value) FROM "queues_value" WHERE "host" =~ /$host/ AND "type" = 'rabbitmq_messages' AND $timeFilter GROUP BY time($interval), "host", "instance") GROUP BY time($interval), "host"
但这两种语法都无效
本质上,我首先尝试在给定的时间段内处理一个特定主机上包含一个特定队列的聚合,然后尝试在同一时间段内处理由每个主机的计算结果组成的聚合
有没有办法在influxdb或grafana中实现我想要的功能?有一种方法可以通过influxdb实现,但这是一个两步过程 首先,创建计算平均值的连续查询
CREATE CONTINUOUS QUERY <name> ON <database>
BEGIN
SELECT mean(value) AS value
INTO "mean_queue_value" FROM "queues_value"
WHERE "host" =~ /<host>/
AND "type" = 'rabbitmq_messages'
GROUP BY time(<interval>), "host"
END
在上创建连续查询
开始
选择平均值(值)作为值
从“队列值”转换为“平均队列值”
其中“主机”=~//
和“type”=“rabbitmq_消息”
按时间分组(),“主机”
结束
然后简单地发出一个查询
SELECT sum(value) FROM "mean_queue_value" GROUP BY time(<interval>), "host"
从“平均队列值”组中按时间()选择总和(值),“主机”