Grafana多图展示ClickHouse分组数据异常:仅显示一条曲线求助
解决图表仅显示一条曲线的问题
1. 先修正查询里的字段拼写错误
你的查询语句里写的是logtime,但数据表中的时间字段是log_time(带下划线),这个拼写错误会导致t字段无法正确提取时间值,所有数据可能被归为同一分组,最终图表只显示一条曲线。修正后的查询:
SELECT toTimeZone(log_time, 'Asia/Bangkok') as t, camera_name, SUM(count) as frame_count FROM $table GROUP BY camera_name, t ORDER BY t
2. 检查图表工具的系列配置
就算查询返回了不同摄像头的数据,图表工具可能默认把所有数据合并成一个系列。你需要在图表设置里:
- 将系列字段指定为
camera_name,让工具按摄像头名称区分不同的点 - 确认图表类型设为散点图(仅显示点,关闭填充和曲线显示),确保每个摄像头对应独立的点系列
3. 验证查询结果是否正确
先执行修正后的查询,看返回结果里是不是每个camera_name都有独立的行。比如应该得到类似这样的结果:
| t | camera_name | frame_count |
|---|---|---|
| 2024-12-27 14:03:26.036 +0700 | ВК-33 16 | 对应统计值 |
| 2024-12-27 14:03:26.036 +0700 | ВК-32 16 | 对应统计值 |
如果结果里每个摄像头都有单独的条目,说明数据层面没问题,问题出在图表配置上。
4. 处理时间戳完全重叠的情况
如果多个摄像头的时间戳完全一样,图表上的点会重叠在一起,看起来像一条曲线。可以用两种方式解决:
- 给不同摄像头的时间戳加微小偏移(仅用于展示,不影响统计):
SELECT toDateTime(toTimeZone(log_time, 'Asia/Bangkok')) + INTERVAL (hash(camera_name) % 10) MILLISECOND as t, camera_name, SUM(count) as frame_count FROM $table GROUP BY camera_name, log_time ORDER BY t
- 或者在图表工具里调大点的尺寸,开启点的分散显示效果,让重叠的点能被区分开
内容的提问来源于stack exchange,提问作者Halacky
相关产品推荐
相关产品推荐

