You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grafana v6.2.5 Elasticsearch查询求和及饼图展示问题咨询

针对Grafana v6.2.5的求和与饼图显示问题解决方案

针对你提到的需求——要么用查询B/C分别对查询A的两个字段求和,要么退而求分组后展示itemNumberDone总和,同时还要筛选每个分组中timestamp最大的条目、解决饼图显示多个分项的问题,我结合Grafana 6.2.5的特性给你梳理可行方案:

一、尝试用查询B/C分别聚合查询A的两个字段

首先得明确你的数据源类型(比如InfluxDB、Prometheus、SQL类数据库),这里以最常用的时序/SQL数据源为例,给出通用思路:

1. 先筛选每个分组的最新条目

不管后续怎么聚合,第一步都要确保拿到每个分组里timestamp最大的那条数据。以SQL类数据库(比如PostgreSQL)或InfluxDB为例,你可以用子查询实现:

-- 以SQL为例,group_field是你的分组字段
SELECT a.*
FROM your_table a
INNER JOIN (
    SELECT group_field, MAX(timestamp) AS max_ts
    FROM your_table
    WHERE $timeFilter
    GROUP BY group_field
) b ON a.group_field = b.group_field AND a.timestamp = b.max_ts

这段查询会返回每个分组的最新数据条目,作为后续聚合的基础。

2. 按查询B/C的条件分别求和

假设查询B是针对itemNumberDone的筛选条件(比如特定标签、状态),查询C是针对itemNumberInError的筛选条件,你可以基于上面的子查询,写两个独立的聚合查询:

  • 针对itemNumberDone的求和(应用查询B的条件):
    SELECT SUM(itemNumberDone) AS "Total Done"
    FROM (
        -- 上面的子查询内容
    ) filtered_data
    WHERE [查询B的筛选条件] -- 比如 status = 'completed'
    
  • 针对itemNumberInError的求和(应用查询C的条件):
    SELECT SUM(itemNumberInError) AS "Total Errors"
    FROM (
        -- 上面的子查询内容
    ) filtered_data
    WHERE [查询C的筛选条件] -- 比如 status = 'failed'
    

把这两个查询添加到饼图面板中,就能分别展示两个维度的总和。如果你的查询B/C是独立的数据集关联,那在Grafana 6.2.5里会比较受限——旧版本的跨查询关联能力较弱,可能需要在数据源层面做JOIN,或者把查询B/C的结果存为变量再引用,但操作起来比较繁琐。

二、退而求其次:分组后展示itemNumberDone的总和(解决饼图多分项问题)

如果第一种需求无法实现,要让饼图显示整体总和而非多个分组分项,你需要调整查询的聚合逻辑:

  1. 先筛选最新条目:还是用上面的子查询,拿到每个分组的最新数据。
  2. 对所有分组的itemNumberDone求和:注意这里是求所有筛选后数据的总和,而非每个分组单独的值,示例查询:
    SELECT SUM(itemNumberDone) AS "Total Completed"
    FROM (
        -- 筛选每个分组最新条目的子查询
    ) filtered_data
    
    这个查询只会返回一行数据,也就是整体总和。
  3. 调整饼图面板配置:
    • 进入面板的Options标签,确认数值字段选择的是求和后的Total Completed;
    • 检查Legend设置,关闭按分组字段生成图例的选项,避免饼图被拆分成多个小项;
    • 如果需要对比其他指标(比如错误总数),可以再添加对应的求和查询,饼图会自动把多个总和项作为不同的分片展示。

内容的提问来源于stack exchange,提问作者SophiP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:13:10