利用 Kettle + Redash 搭建简单的 BI 系统

来源:互联网 发布:手机淘宝买家评价管理 编辑:程序博客网 时间:2024/05/27 16:43

利用 Kettle + Redash 搭建简单的 BI 系统

还记的第一次从公司的数据库中导表时,被多个表名搞的头皮发麻,表名混乱不清,导致每次导表我都要先想下 xxx 表是不是 YYY 表。

终于老大安排了一个比较好玩的项目(老大如是说),搭建公司自己的 BI 系统,当然靠我一个小小的程序员,只能搞搞初级的开发了。那么 BI 到底是个什么东西呢?

BI

商业智能,又称商业智能或商务智能,指用现代数据仓库技术、联机分析处理技术、数据挖掘和数据展现技术进行数据分析以实现商业价值。

以及这句话:从技术层面上讲,商业智能不是什么新技术,它只是ETL、数据仓库、OLAP、数据挖掘、数据展现等技术的综合运用。

总体上来说就是将已有的数据进行 ETL(Extract-Transform-Load)后得到 ODS(Operational Data Store)后再经过计算展现为图表的形式。

看起来好像是很模糊的解释,打个比方:
这里写图片描述
一堆互相交错的毛线,需要织成一件毛衣,内心是不是只有一句 FML?需要做的其实很简单:
这里写图片描述
也就是先把这堆毛线分号类,去除其中无用的部分,然后找个设计师,找个会女红的 GF,然后这个动天你就不会冷了。

莫名想起了织毛衣这首歌~

言归正传,也就是说简单的 BI 就是将数据提取,转换,转存为 ODS,然后使用可视化工具(比如:Tableau、PowerBI、Superset、Redash)将 ODS 中的数据展现出来的过程。

ETL

首先你手头要有一份数据才可以,接下来要做的就是确定我们要处理哪些表,最后要在 ODS 中存储的表的结构是什么样子。ETL 已经有开发好的现成的工具,这里我们使用 Java 编写的 Kettle 来进行数据转换。

Kettle

kettle 中主要分为两块,作业和转换,一个作业里可以执行多个转换,这样方便到时候部署到线上。

转换

转换分为三个部分,表输入和表输出以及中间的转换过程。

  • 表输入支持最常用的数据库获取表输入,以及文本文件的输入(csv、excel 等)
  • 表输出也是同样的,支持更新到数据库中和文本文件的输出(csv、sql、Excel表格)
  • 中间的转换,常用到的有 sql 脚本执行、选择字段、拆分字段、过滤空值、javascript 脚本执行等。

这里写图片描述

作业

作业必须由 START 开始,包含一个或多个转换过程,根据转换结果的成功与否确定最终的执行步骤。

这里写图片描述

在转换中有一个坑需要借助作业这里进行设置,在写多个转换的过程中,会发现每个转换之间的数据库配置是不共享的,我们直接在作业里配置好数据库后,右键–>共享 就可以在转换中直接使用作业的数据库配置了。

ODS

对 Kettle 设置定时,部署到线上,作业完成后就可以获得干净的数据。

可视化

可视化的过程比较坎坷,一开始我尝试使用界面更华丽的 Superset,毕竟 Airbnb 出品。然而,因为线上使用的 Python2 并且老大不同意线上使用 virtualenv,众所周知的 python 2 的编码问题,只能退而求其次使用了 Redash,结果是 Redash 用起来也很不错,相对更容易上手。

Redash 安装使用官方的脚本,加上可执行权限后,使用 sudo 命令执行。

wget https://raw.githubusercontent.com/getredash/redash/master/setup/ubuntu/bootstrap.shsudo chmod +x bootstrap.shsudo ./bootstrap.sh

安装时如果卡到某个地方,去脚本里稍作改动即可,一定要耐心!如果安装的机器上已经配置了 nginx 且 80 端口被占用,需要修改下 redash 的 nginx 配置,使用任意可用端口。之后进 supervisor 重启 Redash 服务。

访问对应链接,第一次需要注册,登录后先配置数据库。Redash 主要分为两大块,一个是 Query,另外一个是 Dashboard。

Query

查询集,在 query 中写好相信的 sql 语句,执行后看到对应的一张数据表,我们可以选择将其转为图表来展示,然后保存。

Dashboard

多个 Query 的查询结果或者结果的可视化组成的一个面板,一般一个面板下放同类型的数据。

最终效果

这里写图片描述

原创粉丝点击