【BI报表选型】metabase方案
在做数仓的过程中是需要对数据进行可视化与报表的,有一些开源的BI报表平台可以通过配置SQL和图表的方式制作Dashboard,甚至支持邮件定时发送报表、指标监控告警等。
使用BI报表平台的思路就是将数仓的统计结果sqoop导出到Mysql,然后通过BI报表平台编写Mysql SQL取数绘图,实现一些类似这样的图表:
下面是市场上可以考虑的选型:
目前了解superset和metabase是比较主流的2个选型,前者更强大,后者更简单。
目前根据好友推荐直接使用了metabase,主要感受是:
- 无师自通,几分钟就会用了。
- 图表类型太少,不够丰富。
- 不能监控指标&告警。
下面简单记录一下metabase的安装与使用。
安装
下载Jar包
从这个链接下载Jar包::https://www.metabase.com/docs/latest/operations-guide/running-the-metabase-jar-file.html,这就是部署的唯一内容。
启动前可以利用环境变量来配置监听端口:
export MB_JETTY_PORT=
然后启动jar包即可拉起metabase:
java -jar metabase.jar
访问http://localhost:3000即可访问到metabase,但是别着急,这不是生产环境的部署方式。
配置数据库
为了可靠部署metabase,我们需要去mysql里建个数据库,令metabase存储它的数据到里面,默认metabase是存储在本地的h2嵌入式数据库的。
根据这个链接:https://www.metabase.com/docs/latest/operations-guide/configuring-application-database.html#mysql-or-mariadb的说明,先去Mysql创建一下数据库:
CREATE DATABASE metabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
启动jar包前导出这些环境变量告知数据库的连接方式:
1 2 3 4 5 6 |
export MB_DB_TYPE=mysql export MB_DB_DBNAME=metabase export MB_DB_PORT=3306 export MB_DB_USER=<username> export MB_DB_PASS=<password> export MB_DB_HOST=localhost |
配置systemd
为了开机自动拉起,我们配置metabase为systemd service:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Unit] Description=metabase Requires=network-online.target After=network-online.target [Service] Type=simple User=root Group=root Restart=always EnvironmentFile=/home/hadoop/workspace/service/metabase/env ExecStart=/usr/local/jdk/bin/java -Xms4g -Xmx8g -Duser.timezone=Asia/Shanghai -jar metabase.jar WorkingDirectory=/home/hadoop/workspace/service/metabase [Install] WantedBy=multi-user.target |
可以看到我们把需要的环境变量放到了env文件中:
MB_DB_TYPE=mysql
MB_DB_DBNAME=metabase
MB_DB_PORT=3306
MB_DB_USER=metabase_user
MB_DB_PASS=xxxxxxxx
MB_DB_HOST=10.xx.xx.xx
启动jar包时注意设置Asia/Shanghai的时区以及JVM堆大小,其他就没什么了。
使用逻辑
配置数据源
因为要SQL取数画图,所以得先配置Mysql数据源在哪里。
配置图表
每个图表对应一个取数的SQL,可以直接编写SQL,同时metabase也为非技术人员提供了点鼠标拼SQL的交互形式:
SQL输出的结果字段,可以配置到x轴与y轴,这样就自动画出图来了。
配置仪表盘
将上面配置的多个图表布局到一个页面上,就产生了仪表盘。
这就是metabase产品使用的所有逻辑了,欢迎大家一起留言交流。
如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~

1
1