如何基于带预定义分桶的SQL查询配置Grafana热力图?
解决Grafana热力图分桶计数可视化问题
调整SQL查询语句
你当前的SQL存在两个关键问题:一是SELECT里的updated是原始未对齐的时间,和GROUP BY的时间桶逻辑不匹配;二是COUNT(*)没有明确别名,可能导致Grafana无法正确识别数值字段。调整后的SQL如下:
SELECT -- 将时间对齐到15分钟桶的起始时间,确保和分组逻辑一致 FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(updated)/(15 * 60)) * 15 * 60) AS time_bucket, CASE WHEN score > 0 AND score < 10 THEN 0 ELSE 1 END as bucket, COUNT(*) AS count -- 给计数结果起明确别名 FROM table WHERE $__timeFilter(updated) GROUP BY FLOOR(UNIX_TIMESTAMP(updated)/(15 * 60)), bucket
配置Grafana热力图面板
确认查询字段映射
- 在Grafana查询编辑器中,将
time_bucket字段标记为时间字段(点击字段旁的时钟图标)。 - 确保
bucket被识别为数值型字段,count被识别为数值型字段。
- 在Grafana查询编辑器中,将
调整热力图显示设置
- 进入面板「可视化」选项卡,选择「热力图」类型。
- 在「轴」配置区域:
- X轴选择
time_bucket作为时间轴,设置时间间隔为15分钟。 - Y轴选择
bucket字段,让两个分桶(0和1)作为Y轴的两个刻度。
- X轴选择
- 在「数据」配置区域,将「值字段」设置为
count,让热力图用这个计数填充单元格颜色深浅。 - 关闭不需要的图例或额外显示项,只保留分桶与计数的对应关系。
验证数据模式
- 检查面板的「数据模式」是否设置为「时间序列到热力图」,确保Grafana正确将每个(时间桶, 分桶)的组合映射为热力图单元格,用
count值表示热度。
- 检查面板的「数据模式」是否设置为「时间序列到热力图」,确保Grafana正确将每个(时间桶, 分桶)的组合映射为热力图单元格,用
排查要点
- 如果热力图仍显示异常,先查看「表格视图」确认返回数据是否符合预期:每个时间桶对应两个分桶的计数,无缺失或重复行。
- 确保
bucket字段的取值只有0和1,避免意外值干扰Y轴显示。
内容的提问来源于stack exchange,提问作者evvvvr
相关产品推荐
相关产品推荐

