业务数据越来越多,报表还靠Excel一张张做?Metabase连上数据库就能直接做图表和仪表盘
零基础搭建 Metabase:一款开源的数据可视化BI平台
前言
业务数据一多,很多团队最先遇到的问题不是“没有数据”,而是数据越来越难看懂。想看一个趋势,要先在Excel里整理字段、做透视表、调公式;想给别人看,又常常变成截图、导出文件再反复发送,数据一更新,报表还得重新做。
Metabase解决的就是这类问题。它可以直接连接数据库,把原始表里的数据变成可筛选、可汇总、可视化的图表;不写SQL也能完成不少分析,熟悉SQL的人还可以继续做更复杂的查询。
这篇会先在Windows上通过Docker运行Metabase,再连接一个MySQL学生信息库,实际演示表格筛选、字段汇总、柱状图、饼图以及SQL多表查询,不停留在“页面能打开”这一步。
后面还会把保存下来的图表放进仪表盘,再测试分享功能。这样数据库里的数据就不只是躺在表里,而是能变成一个持续更新、方便别人查看的数据看板。
如果只在局域网里使用,到这里已经够用;如果还希望出差、居家办公或外部协作时继续访问,后半段再通过cpolar提供公网入口并配置固定地址。整篇真正跑的是数据库接入 → 筛选与汇总 → 图表与SQL分析 → 仪表盘 → 分享与远程访问这条链。
1 什么是Metabase?
Metabase 是一款开源、零门槛的数据可视化 BI(Business Intelligence)平台。它的目标非常简单:让每个人都能轻松理解数据,而不需要成为数据分析师或会写 SQL 的程序员。
你只需要连接你的数据库,Metabase 就能帮助你:
- 自动识别数据结构,无需繁琐配置
- 几分钟做出图表:柱状图、折线图、饼图、地图、数据透视等常见图表全支持
- 可视化界面操作:拖拽选择字段即可生成分析
- 支持 SQL 编辑器:进阶用户可以写查询、定时发送结果
- 创建仪表盘和大屏:方便团队共享数据视图
- 权限管理与团队协作:对不同用户设置不同访问权限
作为一款开源项目,它不仅免费,还拥有完整的社区生态,文档、插件、部署方式都非常成熟。无论你是小团队、创业项目,还是个人开发者,都可以用它快速搭建自己的数据看板系统。
2 使用Docker一键部署Metabase
本教程将在Windows上操作演示。使用Docker方式一键部署Metabase,如果还没有安装Docker的小伙伴,可以先访问上面链接进行安装一下。
安装好后,电脑按Win + R键,输入cmd回车,使用如下命令进行一键部署:
docker run -d -p 3000:3000 --name metabase -v metabase-data:/metabase-data metabase/metabase
执行如下图所示:

最后一行出现随机字符串就代表完成啦,且会自动启动,可以进一步使用如下命令查看状态:
docker ps
如下图:

可以看到,状态为UP,就是代表运行中的,运行在3000端口上,我们浏览器访问测试一下:
http://localhost:3000

浏览器能够正常打开以后,说明Metabase已经运行起来,下面继续进入实际的数据连接和分析流程。
3 简单演示使用Metabase
3.1 Metabase初始化配置
首先,点击首页上的Let's get started进入下一步:

进入下一步后,我们可以点击右上角,先把语言切换为中文:

然后填写信息,填写完成信息后,继续下一步做一个简单的回答,接着来到配置数据源页面:

可以看到在这个页面有多种数据库,这里以MySQL数据库作为演示,您也可以自行选择其他相关数据库进行添加:

我这里准备了一个学生信息表数据库(student_info),里面分别有3张表,学生表(students),成绩表(scores),课程表(courses):

我当前的数据库账号密码都是root,所以jdbc连接语句为如下:
jdbc:mysql://root:root@192.168.50.149:3306/student_info?ssl=flase
代表的含义如下:
root:root- 数据库用户名和密码(格式:用户名:密码)192.168.50.149:3306- 数据库服务器地址和端口student_info- 要连接的数据库名称ssl=false- 禁用 SSL 加密连接(本地测试环境可以关闭)
💡 提示:如果你的 MySQL 数据库在本地运行,地址可以使用
localhost或127.0.0.1。如果 Metabase 运行在 Docker 容器中,请使用宿主机的实际 IP 地址或host.docker.internal(Windows/Mac Docker Desktop)。
接着,将该语句填写到Connection string中,会自动填写其他项:

点击关闭使用安全连接,然后点击连接数据库,可以看到左下角提示成功连接到数据库了:

接着做一些基础回答就可以进入首页啦:

3.2 Metabase可视化默认图表展示
首先,点击侧边栏的数据库菜单,然后接着点击刚才添加的数据库:

进入后,选择一张表,这里以学生表(student)为例:

点击进入后,可以看到基础的数据表格就出来啦:

页面上可以做很多的操作,如过滤、汇总、编辑器、可视化等,还可以编写SQL查询语句,比如这里想要筛选条件为不等于在读的学生,也就是已经毕业的:

可以看到就只剩下一条数据了,因为只有该学生为毕业状态,响应很快:

3.3 可视化图表
3.3.1 柱状图
这里以性别字段为例,做一个柱状图。首先,点击右上角的汇总按钮,然后选择Gender字段,点击完成:

汇总完成以后,可以直接切换成柱状图,并继续在可视化设置中调整显示内容,例如开启数据点数值。

如果想要保存,可以点击右上角的保存按钮:

3.3.2 饼状图
如果想要查看饼状图,可以直接点击可视化,然后选择饼状图即可,就会直接显示饼状图的数据:

其他图表类型也可以按同样思路,从当前查询结果切换不同的可视化方式。
3.4 编写SQL语句进行查询
Metabase也支持通过编写SQL语句来进行查询,回到首页,首先点击右上角的创建按钮,然后选择SQL查询即可:

进入到新的页面后,即可直接输入SQL语句进行查询:

这里举例以**查询学生成绩排名(含选课数量、平均成绩、等级评定)**为例,进行多表联合查询:
SELECT
s.student_no AS 学号,
s.name AS 姓名,
s.major AS 专业,
COUNT(sc.course_id) AS 选课数量,
ROUND(AVG(sc.score), 2) AS 平均成绩,
CASE
WHEN AVG(sc.score) >= 90 THEN '优秀'
WHEN AVG(sc.score) >= 80 THEN '良好'
WHEN AVG(sc.score) >= 60 THEN '及格'
ELSE '不及格'
END AS 等级
FROM students s
LEFT JOIN scores sc ON s.id = sc.student_id
WHERE s.status = '在读'
GROUP BY s.id, s.student_no, s.name, s.major
ORDER BY 平均成绩 DESC;
输入后,按Ctrl +回车按钮,即可执行查询,如下图所示:

还可以点击下方的可视化按钮,配置图表,将其显示成图表的方式,更易查看:

4 仪表盘与分享
前面的筛选、图表和SQL查询解决了单次分析的问题;如果希望把多个结果长期放在同一个页面里,就可以继续使用仪表盘,并通过分享功能把这些数据视图提供给其他人查看。
4.1 仪表盘
点击右上角创建,再点击仪表盘按钮,创建一个仪表盘:

填写名字等信息,点击创建:

进入到新的页面后,点击添加图表:

可以在右边看到前面保存的图表,点击就可以添加进来了:

点击右上角的保存按钮进行保存后,仪表盘就成功做好了。
4.2 分享
所有图表,仪表盘都可以进行分享,分享给您的朋友查看,点击页面上的分享图标:

然后可以选择一个分享方式,这里以链接做演示:

点击后,可以看到生成一个链接:

但是这个链接显示为localhost地址,我们可以通过局域网访问自己的这个服务,在cmd中输入ipconfig命令查看自己电脑的IP地址:

知道局域网地址后,我们直接把localhost地址修改为你的局域网地址就行啦:

可以看到成功访问!
5 穿透Metabase以支持公网访问
前面的分享链接在本地或局域网中已经能够使用,但如果查看者不在同一个网络,就无法直接访问localhost或局域网地址。对于需要异地查看仪表盘的场景,还需要再给Metabase增加一个外部访问入口。
这里继续使用cpolar,把本地运行的Metabase Web页面提供给其他网络环境访问。这样已经做好的图表和仪表盘就不再只局限于当前电脑或局域网。
5.1 什么是cpolar?

- cpolar 是一款内网穿透工具,可以将你在局域网内运行的服务(如本地 Web 服务器、SSH、远程桌面等)通过一条安全加密的中间隧道映射至公网,让外部设备无需配置路由器即可访问。
- 广泛支持 Windows、macOS、Linux、树莓派、群晖 NAS 等平台,并提供一键安装脚本方便部署。
5.2 下载cpolar
打开cpolar官网的下载页面,点击立即下载 64-bit按钮,下载cpoalr的安装包:

下来下来是一个压缩包,解压后执行目录种的应用程序,一路默认安装即可,安装完成后,打开cmd窗口输入如下命令确认安装:
cpolar version

出现如上版本即代表安装成功!
5.3 注册及登录cpolar web ui管理界面
注册完成后,在浏览器中输入如下地址访问 web ui管理界面 :
http://localhost:9200

如果还没有账号,点击下方免费注册即可注册账号。输入刚才注册好的cpolar账号登录即可进入后台页面:

5.4 穿透Metabase项目的WebUI界面
5.4.1 随机域名方式(免费方案)
随机域名方式适合预算有限的用户。使用此方式时,系统会每隔 24 小时 左右自动更换一次域名地址。对于长期访问的不太友好,但是该方案是免费的,如果您有一定的预算,可以查看大纲5.4.2 的固定域名方式,且访问更稳定。
点击左侧菜单栏的隧道管理,展开进入隧道列表页面,页面下默认会有 2 个隧道:
- remoteDesktop隧道,指向3389端口,tcp协议
- website隧道,指向8080端口,http协议(http协议默认会生成2个公网地址,一个是http,另一个https,免去配置ssl证书的繁琐步骤)

点击编辑website的隧道,修改成我们Metabase需要的信息:

接着来到在线隧道列表,可以看到名称为metabase-3000隧道的两条记录信息,一条协议为http,另一条协议为https:

以https为例,访问测试(加载稍慢,需耐心等待一下):

公网地址能够正常打开以后,说明Metabase已经可以从其他网络环境访问。
5.4.2 固定域名方式(升级任意套餐皆可)
前面的随机地址已经能够完成远程访问,但如果仪表盘需要长期分享,地址频繁变化会增加维护成本,因此这里继续配置固定二级子域名。
首先,进入官网的预留页面:
https://dashboard.cpolar.com/reserved
选择预留菜单,即可看到保留二级子域名项,填写其中的地区、名称、描述(可不填)项,然后点击保留按钮,操作步骤图如下:

列表中显示了一条已保留的二级子域名记录:
- 地区:显示为
China Top。 - 二级域名:显示为
Metabase。
注:二级域名是唯一的,每个账号都不相同,请以自己设置的二级域名保留的为主
接着,进入侧边菜单栏的隧道管理下的隧道列表,可以看到名为metabase-3000的隧道,点击编辑按钮进入编辑页面:

修改域名类型为二级子域名,然后填写前面配置好的子域名,点击更新按钮:

来到状态菜单下的在线隧道列表可以看到隧道名称为metabase-3000的公网地址已经变更为二级子域名+固定域名主体及后缀的形式了:

这里以https协议做访问测试(加载稍慢,需耐心等待一下):

固定地址能够正常打开以后,这套Metabase仪表盘就有了一个长期可保存的外部入口,后续分享时也不必反复更换访问地址:

总结
这篇真正完成的,不只是把Metabase通过Docker跑起来,而是把一份数据库数据走完了从接入到展示的完整流程:连接MySQL、查看表数据、筛选和汇总字段,再把结果转换成柱状图、饼状图等可视化内容。
对于更复杂的分析,正文又继续使用SQL完成多表查询,并把查询结果转换成图表。这样Metabase既能照顾不想写SQL的日常分析,也保留了继续深入查询的入口。
图表保存以后,还可以组合成仪表盘,再通过分享功能提供给其他人查看。到这一步,数据库里的数据就从“表和字段”变成了可以长期查看、集中展示的数据看板。
后半段的cpolar解决的是访问范围问题:局域网内已经能用时,再把Metabase页面扩展到外部网络,并通过固定地址长期访问。整条链的核心仍然是Metabase的数据分析能力——Docker负责运行,数据库负责提供数据,Metabase负责分析和展示,cpolar负责需要时把看板带到外部网络。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2401_87848736/article/details/169250856




