利用 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 的查询结果或者结果的可视化组成的一个面板,一般一个面板下放同类型的数据。
最终效果
- 利用 Kettle + Redash 搭建简单的 BI 系统
- 利用red5搭建一个简单的流媒体直播系统
- kettle的系统变量
- 简单的BI架构
- 利用BI搭建零售业数据信息平台
- BI的系统构成
- 谈BI模型的搭建
- KETTLE的最简单应用
- 利用red5搭建一个简单的流媒体直播系统(ubuntu 12.10)
- 利用red5搭建一个简单的流媒体直播系统(ubuntu 12.10)
- 【自动驾驶】如何利用深度学习搭建一个最简单的无人驾驶系统
- 搭建简单的SVN系统
- 开源BI系统的简述
- 开源BI系统的简述
- 利用Socket搭建简单的Http服务器
- 利用node简单的搭建线上服务器
- 利用 CocoaLumberjack 搭建自己的 Log 系统
- 利用 CocoaLumberjack 搭建自己的 Log 系统
- vector 避免内存频繁分配释放与手动释放vector内存
- 关于react组件渲染两次的问题
- http://www.cnblogs.com/jackmaxwell/p/6220511.html
- html中的特殊字符(空格,括号等)
- 八大排序算法
- 利用 Kettle + Redash 搭建简单的 BI 系统
- 每日一练20171026
- Arrays.asList()踩坑踩坑
- ue4 联机烘焙出现问题和解决方式
- Gradle插件--dex加密
- easyUI的使用
- 简单工厂模式——使用最简单的需求来完成一个简单工厂模式
- 关于教育机器人领域的浅谈
- StackExchange.Redis官方文档(六)【事件,发布订阅,服务器命令】