metabase 是国外开源的一个可视化系统,语言使用了Clojure + TypeScript。
Clojure(/ˈkloʊʒər/)是Lisp程式語言在Java平台上的現代、動態及函數式方言。来自维基百科。
我也是第一次看到这个语言,知道它是可以运行在Java环境上的语言就可以了🙃
官方介绍该系统为“为公司中的每个人提供商业智能和分析的最简单、最快的方法😋”。
ChatGPT 是这样介绍它的
Metabase是一种开源的数据分析和可视化工具,它可以让非技术人员通过简单的查询和可视化操作来探索和理解数据。Metabase支持多种数据源,例如MySQL、PostgreSQL、MongoDB、Amazon Redshift、Google BigQuery等,可以通过简单的设置和配置来连接这些数据源。
使用Metabase,用户可以轻松创建各种类型的数据可视化图表和报表,例如柱状图、折线图、饼图、地图等等。此外,Metabase还具有一些高级功能,例如数据过滤、数据分组、数据透视表等,这些功能可以帮助用户更深入地了解数据。
安装
其安装的主要有两种方式docker和jar包安装。我这里介绍一下jar包安装吧,这样不用安装docker,适合更多不同机器(包含在虚拟机、docker容器内)安装部署。
默认安装使用的是H2数据库,为了尽可以贴合生产环境安装,需要替换掉默认的数据库,可以通过部署的时候设置变量来指定连接数据库。其支持PostgreSQL( 最低版本为: 9.4)、MySQL (最低版本为:5.7.7,需要设置 utf8mb4_unicode_ci collation, utf8mb4 character set, and innodb_large_prefix=ON.)、MariaDB.(最低版本为:10.2.2. 需要设置 utf8mb4_unicode_ci collation, utf8mb4 character set, and innodb_large_prefix=ON)。参考自metabase V0.46 版本安装说明。
以下为一个部署示例,指定启动端口为9092,存储的数据库类型为MySQL和指定存储的MySQL链接(对应的MySQL数据库metabase_db需要先创建好,并且用户需要有创建表权限,默认启动的时候会链接数据库进行创建表)
echo "创建目录并进行目标安装目录"
mkdir -vp /data/server/metabase
cd /data/server/metabase
echo "这里下载可能会有点慢"
wget https://downloads.metabase.com/v0.46.3/metabase.jar
echo "开始启动,下面需要替换为自己的mysql链接"
java -DMB_JETTY_PORT=9092 -DMB_DB_TYPE=mysql -DMB_DB_CONNECTION_URI="jdbc:mysql://<host>:3306/metabase_db?user=<username>&password=<password>" -jar metabase.jar
上面命令启动时前台启动的,退出或关闭当前控制台后进程就退出。
当前台启动查看日志没报错之后,可以使用下面的后台启动命令来启动,这样就可以保持程序一直在后台运行。
nohup java -DMB_JETTY_PORT=9092 -DMB_DB_TYPE=mysql -DMB_DB_CONNECTION_URI="jdbc:mysql://<host>:3306/metabase_db?user=<username>&password=<password>" -jar metabase.jar &
当出现下面的INFO 日志的时候基本就表示启动没问题了的
这个时候可以访问 http://127.0.0.1:9092 (其中的Ip可以换成自己的服务器外网的ip,如果有防火墙之类的需要关闭9092端口的屏蔽)
就会默认跳转到初始化设置页面了,主要设置一些自己的管理员账号和密码,还有设置要链接分析的数据库。
设置完成界面如下:
接着就可以正式进行metabase 系统使用了。进入首页后,会看到metabase系统推荐关于你数据库的一些表的分析,可以简单展示你要分析的数据表信息。
简单使用
首先是创建数据库,管理员可以看到这个数据库创建功能,可以选择添加数据库来创建对应数据库,其他组角色的数据库权限默认开源版本没有也不能设置的。
创建完数据库后,可以进入“浏览数据”来查看表的数据,并对表的数据进行可视化设置,然后保存为图来展示
除了上面的通过浏览数据的可视化操作来创建可视化图表,也可以通过创建“模型”来实现灵活写sql获取数据跟根据其sql数据创建图表
在看到数据展示的页面,可以根据数据来进行可视化编辑创建图表,主要设置要展示图类型(饼图、线图、柱形等),然后再设置x轴和y轴的字段的就可以看到图表会被正确显示出来了。
最后将创建好的图表保存到仪表板里面就可以了
其实官网有个讲解视频,讲得也很不错,看完之后还是比较容易上手的(不过是英语的,主要仔细看看他的操作)。 https://www.metabase.com/demo
总结
metabase 搭建还是比较简单的,有提供了一个启动jar包提供启动安装,不需要像Superset 等需要安装python、npm 等环境或者安装docker 来安装。启动的时候还提供灵活的环境变量来设置的端口、链接的数据库等启动配置信息。
另外有个部署的亮点是它默认支持PostgreSQL和MySQL这两种比较流行的数据库作为应用存储,不需要再修改源码或者增加jar包才可以支持。一开始的我以为它是只支持PostgreSQL数据库的,想着我对PostgreSQL不太熟悉,还考虑过怎么安装PostgreSQL,后来细看了一下它官方安装文档,才知道MySQL也是支持的,节省了我安装部署的一大部分工作量😆。不过它后端实现使用 Clojure 语言,这个没什么听过,如果要二开也是算一个比较大的工作量,如果是 Java 的话,估计现在有一大批有关它的二开系统了😂。
我这边搭建了一个公开的metabase系统的demo,地址为:http://metabase.kanlon.top/ 账号和密码可以关注 CrudBoys 公众 回复“可视化”获取
参考
- metadata 安装可以设置变量: https://www.metabase.com/docs/v0.46/configuring-metabase/environment-variables
- github地址: https://github.com/metabase/metabase
- 官网及介绍视频:https://www.metabase.com/demo
- 其他参考资料:https://metabasecn.net/ 中文介绍