如何将时间序列关联至数据范围而非使用仪表盘时间控件
实现方案
该需求完全可以实现,核心是绕过仪表盘全局时间控件的过滤规则,让查询返回的全量数据直接决定图表展示范围,具体操作如下:
1. 调整Postgres查询逻辑
默认的时间序列查询通常会引入可视化工具的全局时间过滤变量(比如Grafana的$__timeFilter、Metabase的{{time_range}}),你需要删除该内置变量的过滤条件,自定义时间范围逻辑:
- 如果你需要展示所有有数据的时间区间,可以直接用子查询取数据的最大最小时间作为边界:
SELECT 时间列, 指标列 FROM 你的业务表 WHERE 时间列 >= (SELECT MIN(时间列) FROM 你的业务表 WHERE 业务过滤条件) AND 时间列 <= (SELECT MAX(时间列) FROM 你的业务表 WHERE 业务过滤条件) ORDER BY 时间列
- 如果你有固定的自定义时间范围,直接写死时间边界即可,不需要关联全局时间变量。
2. 关闭图表的全局时间范围继承
几乎所有主流BI可视化工具都支持单个图表忽略仪表盘全局时间配置:
- Grafana:编辑图表 -> 查询选项 -> 时间范围 -> 关闭「使用仪表盘时间范围」开关,或直接将覆盖时间范围设置为你需要的区间
- Metabase:编辑图表 -> 时间范围设置 -> 选择「自定义」,不继承仪表盘全局时间
配置完成后图表的时间轴会自动适配你查询返回的时间区间,不会受仪表盘顶部时间控件的修改影响。
提示:如果你的查询已经完全删除了全局时间过滤条件,只要全局时间控件选择的范围大于你返回的数据范围,也会正常展示全量数据,建议两种配置同时修改避免边界异常
内容的提问来源于stack exchange,提问作者user8760785
相关产品推荐
相关产品推荐

