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

在Grafana单个面板中实现多维度筛选时序图是否可行?

单个Grafana面板实现动态分组的平均薪资时序图

完全可以在单个面板中实现这个需求,核心是通过Grafana自定义变量结合条件查询逻辑,让面板根据用户选择的筛选值自动切换分组维度和数据展示逻辑。以下是具体实现步骤:

1. 创建自定义筛选变量

进入仪表盘设置,添加一个自定义类型变量,命名为selected_filter:

  • 手动填入所有需要的筛选选项,比如:male、female、20-30、30-40、40-50
  • 可选:给选项添加分组标签(如[[性别筛选]]、[[年龄段筛选]]),方便用户快速区分选项类型

2. 编写带条件分支的查询

根据你使用的数据源编写条件查询,以下以SQL类数据源(如PostgreSQL)为例:

{{ if in $selected_filter "male" "female" }}
-- 选择性别时:按时间+年龄段分组,计算对应性别的平均薪资
SELECT
  $__timeGroup(record_time, '1d'), -- 按天聚合,可根据需求调整时间粒度
  age_range AS "series",
  AVG(salary) AS "avg_salary"
FROM your_table
WHERE sex = '$selected_filter'
GROUP BY $__timeGroup(record_time, '1d'), age_range
ORDER BY $__timeGroup(record_time, '1d')
{{ else }}
-- 选择年龄段时:按时间+性别分组,计算该年龄段的男女平均薪资
SELECT
  $__timeGroup(record_time, '1d'),
  sex AS "series",
  AVG(salary) AS "avg_salary"
FROM your_table
WHERE age_range = '$selected_filter'
GROUP BY $__timeGroup(record_time, '1d'), sex
ORDER BY $__timeGroup(record_time, '1d')
{{ end }}

如果使用Prometheus等时序数据库,可通过label_match和条件聚合函数实现类似逻辑,核心思路是根据变量值切换聚合维度。

3. 面板配置优化

  • 选择时序图作为面板类型,将查询返回的avg_salary设为Y轴数值,时间字段设为X轴
  • 在图例设置中,将series字段设为图例名称,这样选择性别时图例显示各年龄段,选择年龄段时图例显示男女
  • 可调整Y轴单位为薪资对应的货币单位(如¥或$),提升可读性

关键注意事项

  • 确保变量选项与数据中sex、age_range的取值完全一致,避免查询无结果
  • 时间聚合粒度(如示例中的1d)可根据数据更新频率调整为1h、7d等
  • 若需支持多值选择,可调整变量类型为“多选”,同时修改查询中的WHERE条件为IN语句

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:57:29