一、ETL概念之背景

随着企业的发展,目前的业务线越来越复杂,各个业务系统独立运营。例如:CRM系统只会生产CRM的 数据;Billing只会生产Billing的数据。各业务系统之间只关心自己的数据,导致各业务系统之间数据相互独立,互不相通。一旦业务系统之间进行数据交互,只能通过传统的webservice接口之间进行数据通信。该种方式对人力成本、时间成本要求比较高。也就是说:需要成熟的开发人员才能编写响应的webservice接口进行数据通信。而ETL的诞生就解决了此类问题,企业不需要技术很好、很成熟的开发人员一样可以完成该任务。而且可以比优秀的开发人员完成的更好,致使人力成本更低。这些都是企业所迫切需要的,有此诞生了ETL。

                            图1-1 传统的数据交换

                            图1-2 ETL数据交换

二、ETL概念之工作流程

ETL是将业务系统的数据经过抽取(Extract)、清洗转换(Transform)之后加载(Load)到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。

                                  图1-3 ETL流程图

ETL工作流程:先抽取、然后加载到目标数据库中、在目标数据库中完成转换操作。在ELT架构中,ELT只负责提供图形化的界面来设计业务规则,数据的整个加工过程都在目标和源的数据库之间流动,ELT协调相关的数据库系统来执行相关的应用,数据加工过程既可以在源数据库端执行,也可以在目标数据仓库端执行(主要取决于系统的架构设计和数据属性)。

三、ETL概念之操作步骤

ETL处理分为五大模块,分别是:数据抽取数据清洗库内转换规则检查数据加载。各模块可灵活进行组合,形成ETL处理流程。简单介绍一下各个模块之间的主要功能。

数据抽取 确定数据源,需要确定从哪些源系统进行数据抽取

定义数据接口,对每个源文件及系统的每个字段进行详细说明

确定数据抽取的方法:是主动抽取还是由源系统推送?是增量抽取还是全量抽取?是按照每日抽取还是按照每月抽取?

数据清洗与转换 数据清洗 主要将不完整数据、错误数据、重复数据进行处理

数据转换:

1)空值处理:可捕获字段空值,进行加载或替换为其他含义数据,或数据分流问题库

2)数据标准:统一元数据、统一标准字段、统一字段类型定义

3)数据拆分:依据业务需求做数据拆分,如身份证号,拆分区划、出生日期、性别等

4)数据验证:时间规则、业务规则、自定义规则

5)数据替换:对于因业务因素,可实现无效数据、缺失数据的替换

6)数据关联:关联其他数据或数学,保障数据完整性 数据加载 将数据缓冲区的数据直接加载到数据库对应表中,如果是全量方式则采用LOAD方式,如果是增量则根据业务规则

MERGE进数据库

注意:因某些限制,最新源代码和后续通用配置实现数据抽取已放置在笔者公众号上,请关注微信公众号: 【JAVA大师】, 回复关键字:【kettle】,获取kettle安装程序和运行实例(表结构和kjb、ktr文件)

同时笔者原创了一套视频教程:现免费发放100套,先到先得。获得方法:扫描下方二维码,关注获得

最新文章

  1. 学用MVC4做网站六后台管理:6.1.3管理员修改密码
  2. 【代码笔记】iOS-读取一段文字
  3. JavaScript的sleep延时函数
  4. Web端测试和移动端测试的区别
  5. php基础07:流程控制
  6. java 通过zxing生成二维码
  7. 得到内网域管理员的5种常见方法<转>
  8. VO,DTO,DO,PO的划分
  9. centos6.5配置163的yum源
  10. BNU 沙漠之旅
  11. int装箱比较
  12. 漂亮的代码2:遍历文件夹目录,使用promise
  13. oracle学习 笔记(1)
  14. js的for循环闭包问题
  15. Getting Started with Word2Vec
  16. JavaWeb入门笔记
  17. ubuntu6.04安装
  18. mongodb导入导出数据
  19. 49-Python 安装pythoncom库和pyHook
  20. JS 中函数名后面加与不加括号的区别

热门文章

  1. 流程的python PDF高清版
  2. Oracle数据库故障处理方法
  3. 在Python中使用BeautifulSoup进行网页爬取
  4. codeforces 1030D Vasya and Triangle【思维+gcd】
  5. scu-4445
  6. Stack Overflow & Segment Fault
  7. full page screen capture in js
  8. flex layout & demos
  9. html tag filter in js
  10. Flutter 设置input边框