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

Grafana绘制多线时序图无法按group字段拆分序列如何解决

Grafana多折线时序图配置问题修复

现有环境

table1表结构及样例数据

iddatetimegroup
02022-07-14 06:03:05.0001
02022-07-14 05:02:05.0001
02022-07-14 05:01:05.0002
02022-07-14 04:03:05.0001
02022-07-14 04:02:05.0002
02022-07-14 04:01:05.0003
02022-07-14 03:03:05.0001

groups表结构及样例数据

nameinfo
1'sdfdsf'
2'dsfdsfsd'
3'234234'

需求

按1小时时间间隔,统计table1中每个group对应的行数,绘制包含多条折线的时序图。

原有查询及问题

原有SQL如下,返回的统计结果数值正确,但在Grafana中仅展示单条折线,未按group拆分多序列:

select d.dt, coalesce(count(table1.id), 0) as count, g.group
from (
    select generate_series(date_trunc('hour', timestamp '${__from:date}'), date_trunc('hour', timestamp '${__to:date}'), '1 hour') as dt
) as d(dt)
left join (
    select distinct name from groups
) as g(group) on true
left join table1 on table1.date >= d.dt and table1.date < d.dt + interval '1 hour' and table1.group = g.group
group by 1, 3
order by 1

查询返回的正确样例数据:

dtcountgroup
2022-07-14 06:00:00.00011
2022-07-14 06:00:00.00002
2022-07-14 06:00:00.00003
2022-07-14 05:00:00.00011
2022-07-14 05:00:00.00022
2022-07-14 05:00:00.00003

修复方案

1. 修正SQL语句适配Grafana识别规则

原有SQL存在4个影响Grafana识别的问题:

  • 字段笔误:table1的时间字段名为datetime,原查询误写为date
  • 时间列未按Grafana约定命名:将时间列别名设为time,可被自动识别为时间维度
  • 未处理SQL保留字冲突:group是SQL保留字,需要转义;同时明确分组字段的标签属性,方便Grafana识别为拆分维度
  • Grafana时间宏使用错误:用${__from:timestamp}替代${__from:date},避免格式转换异常

修正后的SQL:

SELECT
  d.dt AS time,
  COUNT(t1.id) AS count,
  g.group_id AS group_name
FROM (
  SELECT generate_series(
    date_trunc('hour', ${__from:timestamp}::timestamp),
    date_trunc('hour', ${__to:timestamp}::timestamp),
    '1 hour'::interval
  ) AS dt
) d
CROSS JOIN (
  SELECT DISTINCT name AS group_id FROM groups
) g
LEFT JOIN table1 t1
  ON t1.datetime >= d.dt
  AND t1.datetime < d.dt + INTERVAL '1 hour'
  AND t1."group" = g.group_id
GROUP BY d.dt, g.group_id
ORDER BY d.dt

注:COUNT(t1.id)本身会将无匹配行的null值计数为0,不需要额外加coalesce包裹

2. 检查Grafana面板配置

  • 在查询编辑页,确认Format as下拉选项选择为Time series,不要选Table
  • 若使用Grafana 8以下版本,在查询配置的Legend字段填写{{group_name}},指定按group_name字段拆分序列
  • 进入面板的Transform标签页,删除所有会合并时序的转换规则(例如配置错误的Merge、Series to rows规则)

配置完成后,Grafana会自动按group值拆分出多条独立折线,每个group对应一条时序。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:06:22