MetaBase 数据可视化

第 1 节 概述

BI(Business Intelligence)商业智能软件是一类旨在帮助企业从大量数据中提取、分析、可视化、报告和洞察商业信息的工具。它们通过提供可视化的报表、仪表盘、数据分析和决策支持,帮助企业管理者和决策者做出数据驱动的决策。

  • 数据集成与连接 能够连接各种数据源,形成一个统一的数据池。
  • 数据分析与挖掘 能对数据进行各种分析,如趋势分析、聚类分析、预测分析等。
  • 数据可视化 提供图表、仪表盘、地图、报表等多种可视化方式,使数据更加易于理解和呈现。

1.1 常见的开源 BI 软件

  • Superset 主要以桌面端为主,移动端访问体验不佳,基于 Flask 和 Python,相对较重。

  • Redash 支持响应式设计,基于 Python 和 Flask,相比 Superset 要轻量一些。

  • Metabase 提供较好的移动端支持,基于 Java,相对轻量。

信息

本人使用下来,SuperSet 的移动端体验不太好,安装的过程中还遇到了一些坑。从 Redash 的官网来看,UI 的设计不是很美观。MetaBase 整体使用下来,UI 设计较为可以,移动端体验还行,对中文的支持还可以。于是就选择使用 MetaBase 作为 NAS 上配置的 BI 软件,用于数据展示。

第 2 节 软件部署

2.1 安装容器

1
2
3
4
5
6
7
8
9
docker run -itd  --name MetaBase --restart always \
-p PORT:3000 \
-e MB_DB_TYPE=mysql \
-e MB_DB_DBNAME=metabase \
-e MB_DB_HOST=HOST \
-e MB_DB_PORT=PORT2 \
-e MB_DB_USER=USER \
-e MB_DB_PASS=PASSWORD \
metabase/metabase:latest
信息

软件部署时,可以通过-e来指定数据库,用于存放初始化数据,不指定时,会使用 H2 数据库,存放到容器内部。

第一次登录时,需要设置用户名、邮箱和密码,也可以连接数据库,一步步设置完即可。

2.2 设置管理后台

设置 -> 通用

https://img.papergate.top:5000/i/2025/01/6783e8d829ee2.webp

这里可以设置网站的 URL,需要公网访问时,需要设置。

https://img.papergate.top:5000/i/2025/01/6783e93373535.webp

默认的表名和字段名的显示会被修改,可以在这里取消,进行 SQL 查询的时候不变

设置 -> 本土化

https://img.papergate.top:5000/i/2025/01/6783eacc4256d.webp

https://img.papergate.top:5000/i/2025/01/6783eadac2a85.webp

可以设置日期、时间、货币等的显示方式。

设置 -> 公共分享

https://img.papergate.top:5000/i/2025/01/6783eb6b6d944.webp

这里可以管理哪些内容可以公开访问。

第 3 节 创建页面

https://img.papergate.top:5000/i/2025/01/6783ebf55461e.webp

可以创建的内容如上所示:

  • 问题 / SQL 查询是最基本的分析单元,问题是以图形界面构建 SQL 查询,而 SQL 查询是直接以 SQL 语句构建查询。获取数据后,绑定相应可视化方法,生成图表。
  • 仪表板(Dashboards) 由一系列的问题 / SQL 查询组成,仪表板上有多个图表。
  • 集合(Collections) 用来存放仪表板问题 / SQL 查询
  • 模型(Models) 将数据库中的表、视图或查询转换为业务层面的逻辑模型,用于简化数据的使用。
  • 公制 (Metrics) 关键的业务指标,用于跟踪和呈现重要的统计数据,如销售额、用户增长等。

3.1 问题 / SQL 查询

问题的展开界面如下,可以看出,这就是图形化的 SQL 查询:

https://img.papergate.top:5000/i/2025/01/6783f0388c5e4.webp

对于 SQL 查询比较熟悉,直接使用 SQL 查询可以更快实现更加复杂的查询。比如,进行如下查询:

1
2
3
4
5
6
7
8
9
SELECT 
    datetime, 
    MAX(cyclemax) AS cyclemax
FROM 
    GIL_FXHLZ
WHERE 
    datetime >= CURDATE() - INTERVAL 7 DAY
GROUP BY 
    datetime;

获取数据:

https://img.papergate.top:5000/i/2025/01/6783f12ab7617.webp

选择可视化,并且双击对应图表:

https://img.papergate.top:5000/i/2025/01/6783f1e052346.webp

可以根据个人喜好进行一定的设置:

https://img.papergate.top:5000/i/2025/01/6783f246ce914.webp

警告

这里对于数据格式,有一定的要求。字符型(离散),数值型(连续)只能填写在特定的位置。关系型数据库因为有数据类型,因而支持较好。不建议使用非关系型数据库。

3.2 仪表板

仪表板横向上被分成了24个小格,纵向上不限,图表在横纵方向上可以自定义占用多少小格。

https://img.papergate.top:5000/i/2025/01/6783f4fc71310.webp

仪表板可以创建多个标签页,比如图中的最大值有效值。有一些预设排版样式,可供参考,通常自己拖拽问题/SQL查询组件到相应的位置即可。

仪表板可以被分享为公共链接:

https://img.papergate.top:5000/i/2025/01/6783f658b4eef.webp

公共链接可以直接发送给他人查看,也可以以<iframe>格式镶嵌在其他网页中,比如使用这篇文章所说的 WxPusher 消息推送推送到微信。

1
2
3
4
5
6
7
8
9
iframe = """
	<iframe
		src="https://bi.papergate.top:5000/public/dashboard/xxxxx"
	    frameborder="0"
	    style="width: 100%; height: 950px;"
	    allowtransparency>
	</iframe>
	"""
send_wxpusher(summary='title', content=iframe)