引入BI
系统是减少重复劳动、增加产出的必要手段和步骤
什么是Metabase
在选择使用Metabase
之前,也调研过许多BI
软件,满足免费开源,灵活多变,我们选择了Metabase
。
Metabase
是一款开源免费的BI
软件,适用于中小型企业、初创公司,用最少的投入,使用数据驱动,为公司带来更多价值。
Metabase
基于一种Clojure
的Lisp
方言编写,运行起来是个Tomcat
。支持多种数据源,例如常见的MySQL
、PostgreSQL
,以及类似Redshift
这样的数据仓库。
Metabase基础架构
Metabase
的架构如下图所示,自身需要一个存储自身数据以及Schema
数据的数据库,另一侧则是需要连接我们自身的数据仓库。Metabase
本身也支持多种数据库存储自身数据。
Metabase
本身对配置要求并不高,使用一个2核4G的云主机就能跑起来了,但是在导出大数据量Excel
的时候,CPU
就比较吃紧了。
安装和初始化使用
安装是非常简单的,我们使用Docker
进行安装,非常方便升级。 默认情况下,使用的是一种类似SQLite
的数据库,名为H2
,我们需要改成自己的PostgreSQL
数据库,下面是我的docker-compose.yml
文件:
version: '3'
services:metabase:image: metabase/metabaserestart: alwaysenvironment:MB_DB_TYPE: 'postgres'MB_DB_DBNAME: 'metabase'MB_DB_PORT: '5678'MB_DB_USER: 'metabase'MB_DB_PASS: '*******'MB_DB_HOST: '192.168.1.1'JAVA_TOOL_OPTIONS: '-Xmx2g'# 下面是配置时区JAVA_TIMEZONE: 'Asia/Shanghai'ports:- "3000:3000"
直接使用docker-compose up -d
就可以启动了。
打开3000
端口,就能看见我们的metabase
了。
点击Let's get Started
就可以开始配置了。(建议使用英文版,中文翻译实在是不咋样)
一路下一步,按照提示配置好,就可以了
进入之后,可以看到示例数据了。随便点一点,可以看到相关的图表。下面介绍Metabase
的概念。
Metabase基本概念
Metabase
中最基本的概念是Question
,任何一个简单结果集,都可以看成是一个Question
,而数个Question
可以放到一个组里面,称之为Collection
,而Dashboard
也是位于Collection
当中。
1. Question
对于Metabase
,有三种Question
类型:
- Simple Query
- Custom Query
- Native Query
其中前两种,我个人感觉差别不大,仅仅是UI
不同,有些许变化,都是可以互相转换的,点击右上角即可转换,都是通过图形化界面创建查询图表,其中主要需要选择查询的指标和Group By
的参数,或者是Join
的图表。而Native Query
是指数据库查询,可以通过数据库查询创建图表。
2. Collection和Dashboard
创建好查询可以将Question
保存,存入Collection
并在Dashboard
中引用。其中Dashboard
仅支持五分钟的自动刷新粒度,作为实时报表,还是有些难度的。
一波三折
BI
上线的过程也是一波三折,我想也是很多和我一样刚接触BI
的人一样,对整个过程没有一个概念,下面我要分享的是我们在建设BI
系统中遇见的种种问题。
1. 团队协作问题
数据有了以后,我们应该如何进行团队协作?数据看板应该由哪一方进行配置?
大部分小伙伴第一次咨询我Metabase
问题的时候,都是想让业务部门自生自灭,作为基础设施支持,只需要将数据源和BI
软件搞好就好了。其实这样的想法是极度错误的。如果业务部门没有专门的数据分析师,即使引入了BI
软件,业务部门也只能是干瞪眼。所以在这里,我们选择的是,研发部门在前期配合数据分析师(如果没有数据分析师,则要求研发来执行),根据业务需求,完成看板配置。同时应该考虑为业务部门招聘专门的数据分析师,能够完成业务部门数据提取操作,从而提升灵活性。关于数据分析师的问题,我在后续的文章里面会讨论。
2. 数据仓库性能问题
我们将生产数据库中的订单数据导入至数据仓库所在数据库,当时选型是用了一个PostgreSQL
做数据库。万万没想到,在接入数据库后,数据库无法承受压力,CPU
直接跑满,长时间无法平稳运行,最终花大价钱切换成阿里云ADB for PG
解决。
3. Metabase自身限制
免费版本Metabase
有一些限制,比如导出只能接受一百万行以内的,这个时候就需要一些取舍,过于复杂的,可以要求业务部门提工单解决,虽然依然需要做一些操作,但是无需再为每次导出重新编写SQL,减少了业务流程。
总结
Metabase
作为一款免费开源软件,还是非常棒的选择。而真正引入BI
系统,也很难一步到位的将研发和业务部门之间划清职责范围,需要一步一步地将复杂工作标准、流程化,最终实现解放生产力的终极目标。