Metabase:零代码 BI 数据可视化工具,自建数据看板
Metabase:零代码 BI 数据可视化工具,自建数据看板
在数据驱动决策的时代,能快速看到业务数据的变化趋势至关重要。然而,专业 BI 工具(如 Tableau、Power BI)价格昂贵,而让每个业务同学都学 SQL 又不现实。Metabase 正是为了解决这个矛盾而生:它是一款完全开源的 BI 工具,通过可视化的问题构建器(无需写 SQL),让任何人都能查询数据库、创建图表、搭建仪表盘,并一键分享给团队。
本文将带你在自己的服务器上使用 Docker Compose 部署 Metabase,配置 Caddy 反代,连接你的业务数据库,并演示从创建问题到构建仪表盘的完整工作流。
Metabase 能做什么
- 可视化问题构建器:点击选择数据表 → 添加过滤条件 → 设置分组聚合 → 选择图表类型,全程鼠标操作,无需 SQL
- 原生 SQL 编辑器:高级用户可以直接写 SQL,结果同样可以可视化
- 仪表盘:将多个图表组合成仪表盘,支持钻取(drill-through)交互
- 定时报告:按日/周/月自动将仪表盘以邮件或 Slack 推送给订阅者
- 数据告警:当某个指标超过阈值时触发通知
- 公开链接:生成无需登录即可查看的嵌入链接,方便分享给外部用户
- 嵌入:将图表嵌入到自己的应用中(开源版支持简单嵌入)
Metabase 支持连接几乎所有主流数据库:PostgreSQL、MySQL、SQLite、ClickHouse、MongoDB、BigQuery、Snowflake、Redshift、SQL Server、Oracle 等。
服务器配置
Metabase 基于 Java(JVM)运行,加上查询结果缓存,对内存的需求比较高。推荐使用2 核 4GB 机型,这是 Metabase 官方建议的最低生产环境配置;如果数据量较大、并发查询多,建议升级至 4 核 8GB。
推荐使用雨云服务器 rainyun-com来部署 Metabase,注册填优惠码2026off可领取 5 折。雨云提供大带宽、低延迟的云主机,非常适合部署需要稳定运行的数据分析工具。
环境要求:
- 操作系统:Ubuntu 22.04 LTS
- CPU:2 核及以上
- 内存:4GB 及以上(建议 JVM 堆内存 2GB+)
- 磁盘:20GB 及以上
- 开放端口:80、443
Docker Compose 部署
安装 Docker
sudoaptupdate&&sudoaptupgrade-ycurl-fsSLhttps://get.docker.com|sudoshsudousermod-aGdocker$USERnewgrpdocker创建项目目录
mkdir-p~/metabase&&cd~/metabase编写 docker-compose.yml
version:"3.9"services:metabase:image:metabase/metabase:latestcontainer_name:metabaserestart:unless-stoppedports:-"127.0.0.1:3000:3000"environment:MB_DB_TYPE:postgresMB_DB_DBNAME:metabaseMB_DB_PORT:5432MB_DB_USER:metabaseMB_DB_PASS:metabasepassMB_DB_HOST:postgres# 可选:设置 JVM 堆内存JAVA_OPTS:"-Xmx2g"# 可选:设置时区MB_TIMEZONE:Asia/Shanghaidepends_on:postgres:condition:service_healthyvolumes:-metabase_data:/metabase-datapostgres:image:postgres:15-alpinecontainer_name:metabase-postgresrestart:unless-stoppedenvironment:POSTGRES_DB:metabasePOSTGRES_USER:metabasePOSTGRES_PASSWORD:metabasepassvolumes:-postgres_data:/var/lib/postgresql/datahealthcheck:test:["CMD-SHELL","pg_isready -U metabase"]interval:10stimeout:5sretries:5volumes:metabase_data:postgres_data:说明:这里的 PostgreSQL 是 Metabase 自身的应用数据库(存储用户、问题、仪表盘配置等),不是你要分析的业务数据库。业务数据库在初始设置向导中单独配置连接。
启动服务
dockercompose up-dMetabase 首次启动需要初始化数据库,通常需要 1~2 分钟。查看启动日志:
dockercompose logs-fmetabase看到Metabase Initialization COMPLETE即表示启动成功。
Caddy 反代配置
安装 Caddy
sudoaptinstall-ydebian-keyring debian-archive-keyring apt-transport-httpscurl-1sLf'https://dl.cloudsmith.io/public/caddy/stable/gpg.key'|sudogpg--dearmor-o/usr/share/keyrings/caddy-stable-archive-keyring.gpgcurl-1sLf'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt'|sudotee/etc/apt/sources.list.d/caddy-stable.listsudoaptupdate&&sudoaptinstallcaddy编辑 Caddyfile
sudonano/etc/caddy/Caddyfile添加以下内容:
metabase.yourdomain.com { reverse_proxy localhost:3000 { header_up X-Real-IP {remote_host} header_up X-Forwarded-For {remote_host} } # 开启 gzip 压缩 encode gzip # 日志 log { output file /var/log/caddy/metabase.log { roll_size 10mb roll_keep 5 } } }创建日志目录并重载 Caddy:
sudomkdir-p/var/log/caddysudosystemctl reload caddy初始设置向导
访问https://metabase.yourdomain.com,进入初始设置向导。
第一步:创建管理员账号
填写姓名、邮箱和密码,这是 Metabase 的超级管理员账号,妥善保管。
第二步:选择语言
Metabase 支持中文(简体),选择后界面全部切换为中文。
第三步:添加数据
这一步配置你要分析的业务数据库(不是 Metabase 自身的 PostgreSQL)。
以连接外部 PostgreSQL 为例:
- 数据库类型:PostgreSQL
- 显示名称:生产数据库
- 主机:your_db_host
- 端口:5432
- 数据库名:your_database
- 用户名:readonly_user(建议创建只读用户)
- 密码:your_password
点击测试连接确认连通性后保存。
第四步:完成设置
向导完成后进入 Metabase 主界面,左侧是导航栏,顶部有搜索框。
创建问题(可视化查询)
Metabase 将每一次查询称为"问题(Question)"。
使用可视化查询构建器
- 点击顶部+ 新建→问题
- 选择数据源和数据表(如
orders表) - 筛选:点击 “筛选” 按钮,添加条件(如
status = 'paid'、created_at在过去 30 天内) - 汇总:点击 “汇总” 按钮,选择聚合方式(如 “按 created_at 按天分组,统计行数”)
- 可视化:Metabase 自动推荐图表类型,也可手动切换为折线图、柱状图、饼图、地图等
- 点击右上角保存,为问题起个名字
使用原生 SQL
- 点击+ 新建→问题→原生查询
- 在编辑器中输入 SQL:
SELECTDATE_TRUNC('day',created_at)ASdate,COUNT(*)ASorder_count,SUM(total_price)ASrevenueFROMordersWHEREcreated_at>=NOW()-INTERVAL'30 days'ANDstatus='paid'GROUPBY1ORDERBY1;- 点击运行,结果自动渲染为图表
SQL 编辑器还支持变量,实现动态筛选:
SELECT*FROMordersWHEREstatus={{status}}ANDcreated_at>={{ start_date }}创建仪表盘
- 点击顶部+ 新建→仪表盘,命名为"业务概览"
- 进入编辑模式,点击右上角+ 添加→ 选择已保存的问题
- 拖拽调整图表的位置和大小
- 点击添加筛选器,可以添加全局日期范围筛选器,联动所有图表
- 点击保存
钻取(Drill-through)
在仪表盘上点击图表中的某个数据点,Metabase 会自动展示该数据点的明细数据,无需额外配置。例如点击柱状图中某天的订单数,会列出当天的所有订单列表。
嵌入图表
Metabase 开源版支持将图表嵌入到外部页面:
- 在问题或仪表盘页面,点击右上角分享→嵌入此问题
- 开启启用嵌入,复制生成的 iframe 代码
- 将代码粘贴到你的网页中
<iframesrc="https://metabase.yourdomain.com/embed/question/TOKEN#hide_parameters=true"frameborder="0"width="800"height="600"allowtransparency></iframe>定时 PDF 报告
- 打开一个仪表盘,点击右上角的时钟图标→订阅
- 选择邮件或Slack
- 配置发送频率(每天 9:00、每周一等)
- 添加收件人邮箱
- 保存订阅
注意:需要先在管理后台→设置→电子邮件中配置 SMTP 服务器。
管理用户与权限
Metabase 支持细粒度的数据权限控制:
- 用户组:创建不同权限的用户组(如"销售团队"、“技术团队”)
- 数据权限:为每个用户组配置可访问的数据库、数据表
- 集合权限:控制哪些用户组能查看哪些仪表盘和问题
在管理后台→权限中进行配置。
结语
Metabase 让数据分析从"工程师专属"变成了"人人可用"——业务同学通过点选操作就能回答"上周销售额是多少"、"哪个渠道的转化率最高"这类问题,不再需要等待技术同学写 SQL。自托管意味着数据留在你自己的服务器上,安全可控,也没有 SaaS 版本的用户数限制。
