前言
做报表这件事,技术含量不高但特别费时间。Excel 公式、透视表、VLOOKUP,嵌套来嵌套去,最后出来的图还不一定美观。团队要看同一份数据,要么截图发群里,要么传来传去版本混乱,想加个筛选条件还要重新折腾一遍。数据多了电脑还卡,崩溃一次白干半天。
我之前就是这样,每次做数据分析汇报之前都要熬一阵。后来开始研究有没有更顺手的方案,找到了 Metabase。它是开源的 BI 平台,连接数据库之后点点鼠标就能生成图表,柱状图、折线图、饼图、地图这些都支持,拖拽字段就能出可视化结果,不用写代码。Docker 一条命令就能跑起来,配 cpolar 穿透之后外网也能访问,团队成员直接打开链接看实时数据,不用传来传去。
本文就把 Metabase 从零部署到跑起来的完整步骤走一遍,配 cpolar 穿透实现公网访问,给被 Excel 折磨的人一个参考。
1 什么是Metabase?
Metabase 是一款开源、零门槛的数据可视化 BI(Business Intelligence)平台。它的目标非常简单:让每个人都能轻松理解数据,而不需要成为数据分析师或会写 SQL 的程序员。
你只需要连接你的数据库,Metabase 就能帮助你:
- 自动识别数据结构,无需繁琐配置
- 几分钟做出图表:柱状图、折线图、饼图、地图、数据透视等常见图表全支持
- 可视化界面操作:拖拽选择字段即可生成分析
- 支持 SQL 编辑器:进阶用户可以写查询、定时发送结果
- 创建仪表盘和大屏:方便团队共享数据视图
- 权限管理与团队协作:对不同用户设置不同访问权限
作为一款开源项目,它不仅免费,还拥有完整的社区生态,文档、插件、部署方式都非常成熟。无论你是小团队、创业项目,还是个人开发者,都可以用它快速搭建自己的数据看板系统。
2 使用Docker一键部署Metabase
本教程将在Windows上操作演示。使用Docker方式一键部署Metabase,如果还没有安装Docker的小伙伴,可以先访问上面链接进行安装一下。
安装好后,电脑按Win + R键,输入cmd回车,使用如下命令进行一键部署:
dockerrun-d-p3000:3000--namemetabase-vmetabase-data:/metabase-data metabase/metabase执行如下图所示:
最后一行出现随机字符串就代表完成啦,且会自动启动,可以进一步使用如下命令查看状态:
dockerps如下图:
可以看到,状态为UP,就是代表运行中的,运行在3000端口上,我们浏览器访问测试一下:
http://localhost:3000访问成功啦!
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语句进行查询:
这里举例以**查询学生成绩排名(含选课数量、平均成绩、等级评定)**为例,进行多表联合查询:
SELECTs.student_noAS学号,s.nameAS姓名,s.majorAS专业,COUNT(sc.course_id)AS选课数量,ROUND(AVG(sc.score),2)AS平均成绩,CASEWHENAVG(sc.score)>=90THEN'优秀'WHENAVG(sc.score)>=80THEN'良好'WHENAVG(sc.score)>=60THEN'及格'ELSE'不及格'ENDAS等级FROMstudents sLEFTJOINscores scONs.id=sc.student_idWHEREs.status='在读'GROUPBYs.id,s.student_no,s.name,s.majorORDERBY平均成绩DESC;输入后,按Ctrl +回车按钮,即可执行查询,如下图所示:
还可以点击下方的可视化按钮,配置图表,将其显示成图表的方式,更易查看:
4 仪表盘与分享
前面我们已经学会了如何连接数据库、生成可视化图表,以及编写 SQL 查询来分析数据。但在实际工作中,我们往往需要将多个关键指标集中展示,方便团队快速决策,同时还要能够将这些数据洞察分享给其他成员。这就是 Metabase 的「仪表盘」和「分享」功能的价值所在——它让数据不仅仅停留在个人分析层面,而是能够真正流动起来,成为团队协作的利器。
4.1 仪表盘
点击右上角创建,再点击仪表盘按钮,创建一个仪表盘:
填写名字等信息,点击创建:
进入到新的页面后,点击添加图表:
可以在右边看到前面保存的图表,点击就可以添加进来了:
点击右上角的保存按钮进行保存后,仪表盘就成功做好了。
4.2 分享
所有图表,仪表盘都可以进行分享,分享给您的朋友查看,点击页面上的分享图标:
然后可以选择一个分享方式,这里以链接做演示:
点击后,可以看到生成一个链接:
但是这个链接显示为localhost地址,我们可以通过局域网访问自己的这个服务,在cmd中输入ipconfig命令查看自己电脑的IP地址:
知道局域网地址后,我们直接把localhost地址修改为你的局域网地址就行啦:
可以看到成功访问!
5 穿透Metabase以支持公网访问
虽然局域网分享已经能让同一网络下的同事查看数据了,但问题来了:如果团队成员在外地出差、居家办公,或者你想把数据报告分享给客户、合作伙伴,他们根本访问不了你的 localhost 或局域网地址。更尴尬的是,传统的解决方案要么需要购买云服务器、配置公网 IP 和域名,要么就只能截图、导出 PDF 发过去——前者成本高、配置复杂,后者又回到了「静态数据、无法实时更新」的老路子。
这时候就需要内网穿透工具出马了。通过cpolar,我们可以不用服务器、不用公网 IP,就能把本地运行的 Metabase 映射到公网上,生成一个任何人都能访问的 HTTPS 链接。无论对方在哪里,只要有网络,就能实时查看你的数据仪表盘——这才是真正意义上的「随时随地,数据触手可及」。
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的web登录页面了。
5.4.2 固定域名方式(升级任意套餐皆可)
通过前面的配置,我们已经成功实现了Metabase的远程访问,但免费随机域名方案的局限性也逐渐显现:每24小时左右自动更换域名地址,意味着你需要频繁更新书签、重新分享链接,甚至可能因为忘记更新而无法访问。固定域名方案正是为了解决这些痛点而生,让你拥有一个永久不变的专属地址。
首先,进入官网的预留页面:
https://dashboard.cpolar.com/reserved选择预留菜单,即可看到保留二级子域名项,填写其中的地区、名称、描述(可不填)项,然后点击保留按钮,操作步骤图如下:
列表中显示了一条已保留的二级子域名记录:
- 地区:显示为
China Top。 - 二级域名:显示为
Metabase。
注:二级域名是唯一的,每个账号都不相同,请以自己设置的二级域名保留的为主
接着,进入侧边菜单栏的隧道管理下的隧道列表,可以看到名为metabase-3000的隧道,点击编辑按钮进入编辑页面:
修改域名类型为二级子域名,然后填写前面配置好的子域名,点击更新按钮:
来到状态菜单下的在线隧道列表可以看到隧道名称为metabase-3000的公网地址已经变更为二级子域名+固定域名主体及后缀的形式了:
这里以https协议做访问测试(加载稍慢,需耐心等待一下):
访问成功!这样一来,你就拥有了一个永久不变的专属域名,再也不用担心24小时域名更换的问题。而且,此时再分享给你的朋友访问你的数据看板,也是可以访问的了(只需要手动替换下域名就ok啦):
总结
搭好之后最直接的变化是:做一份数据看板的时间从按天算变成按分钟算,拖几个字段就能出图,SQL 写不来也没关系。团队协作这块改善明显,数据实时更新,分享链接打开就是最新版本,不用再追着要截图。
整套东西 Docker 部署几分钟能跑起来,对没有技术背景的人也比较友好。当然数据库连接部分还是要填 Connection String,有一定动手能力的人操作起来会顺利些。