1. 序言
时间字段在Metabase显示的时区,受Metabase本身配置时区、JVM时区和集成数据源时区影响。任何一个地方配置不对,或者三个地方配置的不一致都会导致时间字段显示和配置时区不符。
2. 配置时区
2.1 Metabase时区配置
Metabase中管理员账号可以配置时区。如下图所示,在报表时区中选择时区。东八区的时间,Matabase里没有Asia/Shanghai,可以选择Asia/Hong_Kong。
2.2 数据源时区配置
Metabase集成数据源时区需要和Metabase保持一致。比如Metabase集成了ClickHouse,ClickHouse的配置文件config.xml中增加如下时区配置信息。
Asia/Hong_Kong
2.3 JVM时区配置
Metabase后台运行在JVM之上,JVM的时区可以在Metabase启动时,通过指定环境变量配置。
-e "JAVA_TIMEZONE=Asia/Hong_Kong"
3. 总结与思考
使用Metabase官方镜像部署时,系统默认时区是UTC,JVM默认时区和系统时区一致。Metabase启动时如果不指定JVM时区,报表中时间维度显示的时区就会和配置的不一致,排查时区显示的问题也很容易忽略JVM的时区。