Grafana热力图无法渲染:“no heatmap fields found”问题排查求助
Grafana热力图"no heatmap fields found"问题解决(游戏引擎性能数据场景)
核心原因
表格能正常显示是因为它直接读取原始行数据,但热力图需要聚合后的二维分桶数据(X轴分桶值、Y轴类别、对应统计数值),你的原始查询没有输出符合要求的数据格式。
解决步骤
1. 调整PostgreSQL查询语句
修改查询,生成热力图所需的x(分桶后的frame_time)、y(build_version)、value(百分比)字段:
WITH raw_buckets AS ( SELECT build_version, -- 按10ms步长分桶,生成X轴的桶起始值 FLOOR(frame_time / 10) * 10 AS frame_time_bucket FROM your_game_performance_table -- 关联版本变量,假设变量名为selected_builds WHERE build_version = ANY($selected_builds) ), bucket_counts AS ( SELECT build_version, frame_time_bucket, COUNT(*) AS bucket_total FROM raw_buckets GROUP BY build_version, frame_time_bucket ), version_totals AS ( SELECT build_version, SUM(bucket_total) AS version_total_samples FROM bucket_counts GROUP BY build_version ) SELECT build_version AS "y", frame_time_bucket AS "x", -- 计算当前桶占版本总样本的百分比,保留两位小数 ROUND((bucket_total::FLOAT / version_total_samples) * 100, 2) AS "value" FROM bucket_counts JOIN version_totals USING(build_version) ORDER BY build_version, frame_time_bucket;
替换your_game_performance_table为你的实际表名,$selected_builds为你创建的版本变量名。
2. 配置Grafana字段映射
编辑热力图面板,切换到Fields标签页:
- 找到
x字段:设置类型为Number,在「Standard options」中标记为X轴 - 找到
y字段:设置类型为String,标记为Y轴 - 找到
value字段:设置类型为Number,标记为Value(作为颜色映射的依据)
3. 调整热力图面板设置
切换到Panel标签页:
- X轴设置:模式选择「已分桶(Bucketed)」,字段选
x,单位设为ms - Y轴设置:模式选择「类别(Categories)」,字段选
y - 颜色设置:选择
value作为数据字段,调整颜色渐变范围(比如0-100%),匹配百分比分布的视觉需求
常见排查点
- 确保查询返回的每个
(y, x)组合只有一行数据,避免重复聚合导致的异常 - 如果版本变量是多选类型,用
= ANY($selected_builds)替代IN,适配PostgreSQL的数组变量格式 - 检查
frame_time字段是否为数值类型(如float/int),如果是字符串需要先转成数值再分桶
内容的提问来源于stack exchange,提问作者Nico AD
相关产品推荐
相关产品推荐

