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

如何在Grafana中合并多查询生成按resourceGroup统计的汇总表?

解决Grafana合并多查询NaN问题,生成resourceGroup分组汇总表

问题原因

当部分resourceGroup仅存在某类Azure资源时,直接合并查询结果会导致该资源组缺失其他资源类型的统计值,最终显示为NaN,影响汇总计算。

解决方案

方法一:修改PromQL查询,提前填充缺失值

通过PromQL的集合匹配,确保所有resourceGroup在每个查询中都有数值(无对应资源时填0),再进行合并计算。

  1. 先获取所有存在的resourceGroup集合:
all_resource_groups = count by (resourceGroup) (
  union(
    azure_metric_postgresql_heartbeat{},
    azure_metric_sqldatabase_heartbeat{},
    azure_metric_mysql_heartbeat{}
  )
) or vector(0)
  1. 对每个资源类型的查询做左连接填充:
# PostgreSQL统计(缺失resourceGroup填0)
A_filled = all_resource_groups * 0 + on(resourceGroup) group_left() (
  count by (resourceGroup) (azure_metric_postgresql_heartbeat{}) or vector(0)
)

# SQL Database统计(缺失resourceGroup填0)
B_filled = all_resource_groups * 0 + on(resourceGroup) group_left() (
  count by (resourceGroup) (azure_metric_sqldatabase_heartbeat{}) or vector(0)
)

# MySQL统计(缺失resourceGroup填0)
C_filled = all_resource_groups * 0 + on(resourceGroup) group_left() (
  count by (resourceGroup) (azure_metric_mysql_heartbeat{}) or vector(0)
)
  1. 总资源数查询(可选,若需直接展示总和):
A_filled + B_filled + C_filled

将以上查询分别添加到Grafana,设置别名后即可在表格中展示各类型及总和数据,无NaN值。

方法二:利用Grafana Transform功能处理

无需修改PromQL,通过Grafana内置的Transform工具补全缺失值并计算总和:

  • 步骤1:添加三个原始查询(A、B、C),分别设置别名为PostgreSQL、SQL Database、MySQL
  • 步骤2:进入「Transform」标签页,添加第一个Transform:Merge,选择按resourceGroup字段合并所有查询结果
  • 步骤3:添加第二个Transform:Replace missing values,选择三个资源类型的字段,将缺失值替换为0
  • 步骤4:添加第三个Transform:Add field from calculation,选择「Binary operation」,依次计算三个字段的和,命名为总资源数
  • 步骤5:切换到Table面板,即可看到完整的分组统计表格,所有缺失值已被填充为0,总和计算准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:03:24