近日在研究数据可视化,扒拉了一些BI工具,找来找去,陷入选择困难症。最后发现Metabase安装很方便——直接用java便可以运行。便快速上手,用了几天,感觉良好,有深入学习的必要,特意撰写此文,边学边用。

之前也有用过其他的一些数据可视化工具,如厂内MES系统的Ureport2,帆软的finerepport,因为其定位都是做报表,也就意味着需要对展示数据的细节进行巨细无遗的全面控制才能整出来一个结果。这类软件很相近(一丘之貉般的繁琐),大概的步骤都是:

  1. 在数据库管理软件(如DBeaver)里测试SQL,
  2. SQL没问题了再放到报表的模型里,并按照其语法规则配置可控的查询参数;
  3. 在报表引擎的界面上逐个单元格地配置字段、格式、字体、大小。如果需要进行一些图表的展示,还需要控制表的位置,定义各个轴的参数,维护一套配色规则等等,
  4. 最后点击渲染。如果报错,就必须回头重新配置报表,往往配置好一个完美的报表需要好几天的时间。
配置SQL语句 配置扇形图

尽管磕磕拌拌地也能做出来想要的效果,但是对于一些简单的数据分析、监控来说,就非常烦人了。如果说时间就是生命,那操作这些报表引擎简直就是在割腕自杀,发明这类报表的人就是在谋财害命,让使用报表的同志们把热情消弭于各种本该自动化的调整、点击中。虽说对于开发项目初期那些大型报表来说,能熟练运用这类引擎的话效率也蛮高的,然而因为诸多的反人类设计,这类引擎的学习曲线也比较陡峭,通常熟练起来之后报表也基本都做完了(亲身体验),只能做些锦上添花的小修改,让人暗叹英雄无用武之地。

而MetaBase的话,就…好呗。

最突出的优势是它将SQL编辑器与数据可视化很好地集成在了一起。内置的SQL编辑器有语法高亮,搜索替换、快捷键、语法纠错,自动填充,数据表字段建议等等[1]。在进行一些即时的分析,挖掘一些如工艺参数关系、产量情况等的情形下,非常之方便。

因为MetaBase的文档比较垃圾偏向说明,一些操作细节上的疑难,自己摸索[2]搞不出来的,完全可以去查阅学习,但对于一些提纲挈领的思路,文档就显得模模糊糊,一些名词翻译或者定义本身就有问题,让人丈二和尚摸不着头脑,这便本文的目标——对MetaBase进行一个全局的审视。
快速可视化

通览

其他

安装

  1. Metabase安装:下载JAR文件,安装jdk,运行java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar,访问http://localhost:3000/
  2. SQLite安装下载sqlite-dll与sqlite-tools,解压到一个文件夹,添加环境变量。终端输入sqlite3进入交互命令模式,找个合适位置,创建数据库.open ku.db,同时随便创建一个表(Metabase连接时,如果是空数据库,会报错连不上)
1
2
3
CREATE TABLE demo(
ID INT PRIMARY KEY NOT NULL
);
  1. 连接SQLite:假设我在此处创建了一个数据库D:/BI/ku.db,那么可以通过jdbc:sqlite:///D:/BI/ku.db链接来在MetaBase中配置此数据库[3]
    连接示例

配置

Metabase支持各种数据库,配置起来也比较方便,文档写的很细,在此不再赘叙。

配置sqlite 配置mysql

邮箱提醒

参照文档,配置SMTP等邮箱服务,写SQL查询,创建警报,出现预期的不良值时自动触发,发送到自己账号的邮箱里。

如果是用的QQ邮箱,在微信里配置一下名为”QQ邮箱提醒“的服务,就可以收到实时的提醒了

问题记录

忘记账号且忘记密码怎么办?

metabase本身的数据是存储在H2数据库中的,可以通过一些数据库管理软件来读取之,比如利用我手头的DBeaver,就可以这样做:

  1. 停止metabase服务,不然后面访问其数据库时会因为同时访问而报错。
  2. 在DBeaver中新建一个H2(Embedded V.2)数据库连接,连接时选中metabase.jar同级目录下的metabase.db.mv.db文件实体。
    DBeaver新建连接时注意选择这个V2版本的H2
  3. 执行如下SQL语句,或者直接点开public数据库下的core_user表单可以查到管理员的账号邮箱
1
2
3
SELECT id, email, first_name, last_name 
FROM core_user
WHERE is_superuser = TRUE;
  1. 最后执行密码重置命令,会得到一个【token】,而后访问http://localhost:3000/auth/reset_password/【这个Token】即可重置密码
1
java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar reset-password thebesthumanever@exmaple.com

  1. 如果可以像Dbeaver一样点表名跳转表单详情等一些功能的话就更完美了(有空去提个issue) ↩︎

  2. Metabase的页面很直观,大多数时候直接就可以上手,不需要学习 ↩︎

  3. 注意:空库有概率出现【Metabase 已尝试,但无法连接 Failed to connect to Database】的报错,随便建个表即可 ↩︎