暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

引入开源BI软件Metabase——数据分析平台建设(一)

云原生外卖小哥 2020-12-22
1771


引入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/metabase
    restart: always
    environment:
      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
系统,也很难一步到位地将研发和业务部门之间划清职责范围,需要一步一步地将复杂工作标准、流程化,最终实现解放生产力的终极目标。

文章转载自云原生外卖小哥,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论