什么是BI?什么是DW?ETL(Extract-Transform-Load)是什么?

什么是BI?

即商业智能(Business Intelligence),是指通过对数据的收集、管理、分析以及转化,使数据成为可用的信息,从而获得必要的洞察力和理解力,更好地辅助决策和指导行动。

BI 使得企业的决策者能够对企业信息进行有效、合理地分析和处理,为决策提供可靠的依据。BI应用包括决策支持、查询和报表、联机分析处理OLAP、统计分析、预测和数据挖掘等活动。

什么是ETL?

ETL(Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程),是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。

什么是DW?

数据仓库(Data Warehouse 简称DW)是一个面向主题的(SubjectOriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(TimeVariant)的数据集合,用于支持管理决策。

数据仓库是实现商务智能的基础平台。

DW的理解:

首先,数据仓库用于支持决策,面向分析型数据处理,它不同于企业现有的操作型数据库。

其次,数据仓库是对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放数据仓库中的数据一般不再修改。

DW的特征:

一、面向主题:数据仓库的数据被划分成一个个的主题域。主题是一个抽象的逻辑概念,是在一个较高层次上将数据分析归类的标识,对应于一个宏观的分析领域,如政策、市场分析等。

二、完整性:数据在进入数据仓库,不是简单从各个业务系统中抽取出来的,需经过系统的加工、汇总处理,从而使数据仓库内的信息是关于企业的、一致的、全局的数据信息。

数据仓库与数据库的区别在于:

数据库是面向应用,事务驱动的生产型系统,其实时性高,数据检索量相对较少。

而数据仓库是面向主题和分析决策的,其实时性要求不高,但数据检索量比较大,存储的是大量的历史数据和当 前数据。

数据仓库是实现商务智能的基础平台。

ETL讲解(很详细!!!)

ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一个环节。 通常情况下,在BI项目中ETL会花掉整个项目至少1/3的时间,ETL设计的好坏直接关接到BI项目的成败。

  ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。在设计ETL的时候我们也是从这三部分出发。数据的抽取是从各个不同的数据源抽取到ODS(Operational Data Store,操作型数据存储)中——这个过程也可以做一些数据的清洗和转换),在抽取的过程中需要挑选不同的抽取方法,尽可能的提高ETL的运行效率。ETL三个部分中,花费时间最长的是“T”(Transform,清洗、转换)的部分,一般情况下这部分工作量是整个ETL的2/3。数据的加载一般在数据清洗完了之后直接写入DW(Data Warehousing,数据仓库)中去。

  ETL的实现有多种方法,常用的有三种。一种是借助ETL工具(如Oracle的OWB、SQL Server 2000的DTS、SQL Server2005的SSIS服务、Informatic等)实现,一种是SQL方式实现,另外一种是ETL工具和SQL相结合。前两种方法各有各的优缺点,借助工具可以快速的建立起ETL工程,屏蔽了复杂的编码任务,提高了速度,降低了难度,但是缺少灵活性。SQL的方法优点是灵活,提高ETL运行效率,但是编码复杂,对技术要求比较高。第三种是综合了前面二种的优点,会极大地提高ETL的开发速度和效率。

  一、 数据的抽取(Extract)

  这一部分需要在调研阶段做大量的工作,首先要搞清楚数据是从几个业务系统中来,各个业务系统的数据库服务器运行什么DBMS,是否存在手工数据,手工数据量有多大,是否存在非结构化的数据等等,当收集完这些信息之后才可以进行数据抽取的设计。

  1、对于与存放DW的数据库系统相同的数据源处理方法

  这一类数据源在设计上比较容易。一般情况下,DBMS(SQLServer、Oracle)都会提供数据库链接功能,在DW数据库服务器和原业务系统之间建立直接的链接关系就可以写Select 语句直接访问。

  2、对于与DW数据库系统不同的数据源的处理方法

  对于这一类数据源,一般情况下也可以通过ODBC的方式建立数据库链接——如SQL Server和Oracle之间。如果不能建立数据库链接,可以有两种方式完成,一种是通过工具将源数据导出成.txt或者是.xls文件,然后再将这些源系统文件导入到ODS中。另外一种方法是通过程序接口来完成。

  3、对于文件类型数据源(.txt,.xls),可以培训业务人员利用数据库工具将这些数据导入到指定的数据库,然后从指定的数据库中抽取。或者还可以借助工具实现。

  4、增量更新的问题

  对于数据量大的系统,必须考虑增量抽取。一般情况下,业务系统会记录业务发生的时间,我们可以用来做增量的标志,每次抽取之前首先判断ODS中记录最大的时间,然后根据这个时间去业务系统取大于这个时间所有的记录。利用业务系统的时间戳,一般情况下,业务系统没有或者部分有时间戳。

二、数据的清洗转换(Cleaning、Transform)

  一般情况下,数据仓库分为ODS、DW两部分。通常的做法是从业务系统到ODS做清洗,将脏数据和不完整数据过滤掉,在从ODS到DW的过程中转换,进行一些业务规则的计算和聚合。

  1、 数据清洗

  数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。

不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。

  (1)不完整的数据:这一类数据主要是一些应该有的信息缺失,如供应商的名称、分公司的名称、客户的区域信息缺失、业务系统中主表与明细表不能匹配等。对于这一类数据过滤出来,按缺失的内容分别写入不同Excel文件向客户提交,要求在规定的时间内补全。补全后才写入数据仓库。

  (2)错误的数据:这一类错误产生的原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等。这一类数据也要分类,对于类似于全角字符、数据前后有不可见字符的问题,只能通过写SQL语句的方式找出来,然后要求客户在业务系统修正之后抽取。日期格式不正确的或者是日期越界的这一类错误会导致ETL运行失败,这一类错误需要去业务系统数据库用SQL的方式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。

  (3)重复的数据:对于这一类数据——特别是维表中会出现这种情况——将重复数据记录的所有字段导出来,让客户确认并整理。

  数据清洗是一个反复的过程,不可能在几天内完成,只有不断的发现问题,解决问题。对于是否过滤,是否修正一般要求客户确认,对于过滤掉的数据,写入Excel文件或者将过滤数据写入数据表,在ETL开发的初期可以每天向业务单位发送过滤数据的邮件,促使他们尽快地修正错误,同时也可以做为将来验证数据的依据。数据清洗需要注意的是不要将有用的数据过滤掉,对于每个过滤规则认真进行验证,并要用户确认。

  2、 数据转换

  数据转换的任务主要进行不一致的数据转换、数据粒度的转换,以及一些商务规则的计算。

  (1)不一致数据转换:这个过程是一个整合的过程,将不同业务系统的相同类型的数据统一,比如同一个供应商在结算系统的编码是XX0001,而在CRM中编码是YY0001,这样在抽取过来之后统一转换成一个编码。

  (2)数据粒度的转换:业务系统一般存储非常明细的数据,而数据仓库中数据是用来分析的,不需要非常明细的数据。一般情况下,会将业务系统数据按照数据仓库粒度进行聚合。

  (3)商务规则的计算:不同的企业有不同的业务规则、不同的数据指标,这些指标有的时候不是简单的加加减减就能完成,这个时候需要在ETL中将这些数据指标计算好了之后存储在数据仓库中,以供分析使用。

三、ETL日志、警告发送

  1、 ETL日志

  ETL日志分为三类。

一类是执行过程日志,这一部分日志是在ETL执行过程中每执行一步的记录,记录每次运行每一步骤的起始时间,影响了多少行数据,流水账形式。

一类是错误日志,当某个模块出错的时候写错误日志,记录每次出错的时间、出错的模块以及出错的信息等。

第三类日志是总体日志,只记录ETL开始时间、结束时间是否成功信息。如果使用ETL工具,ETL工具会自动产生一些日志,这一类日志也可以作为ETL日志的一部分。

记录日志的目的是随时可以知道ETL运行情况,如果出错了,可以知道哪里出错。

  2、 警告发送

  如果ETL出错了,不仅要形成ETL出错日志,而且要向系统管理员发送警告。发送警告的方式多种,一般常用的就是给系统管理员发送邮件,并附上出错的信息,方便管理员排查错误。

  ETL是BI项目的关键部分,也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更高,为BI项目后期开发提供准确与高效的数据。

后记

做数据仓库系统,ETL是关键的一环。说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具。回忆一下工作这么长时间以来,处理数据迁移、转换的工作倒还真的不少。但是那些工作基本上是一次性工作或者很小数据量。可是在数据仓库系统中,ETL上升到了一定的理论高度,和原来小打小闹的工具使用不同了。究竟什么不同,从名字上就可以看到,人家已经将倒数据的过程分成3个步骤,E、T、L分别代表抽取、转换和装载。

其实ETL过程就是数据流动的过程,从不同的数据源流向不同的目标数据。但在数据仓库中,

ETL有几个特点,

一是数据同步,它不是一次性倒完数据就拉到,它是经常性的活动,按照固定周期运行的,甚至现在还有人提出了实时ETL的概念。

二是数据量,一般都是巨大的,值得你将数据流动的过程拆分成E、T和L。

现在有很多成熟的工具提供ETL功能,且不说他们的好坏。从应用角度来说,ETL的过程其实不是非常复杂,这些工具给数据仓库工程带来和很大的便利性,特别是开发的便利和维护的便利。但另一方面,开发人员容易迷失在这些工具中。举个例子,VB是一种非常简单的语言并且也是非常易用的编程工具,上手特别快,但是真正VB的高手有多少?微软设计的产品通常有个原则是“将使用者当作傻瓜”,在这个原则下,微软的东西确实非常好用,但是对于开发者,如果你自己也将自己当作傻瓜,那就真的傻了。ETL工具也是一样,这些工具为我们提供图形化界面,让我们将主要的精力放在规则上,以期提高开发效率。从使用效果来说,确实使用这些工具能够非常快速地构建一个job来处理某个数据,不过从整体来看,并不见得他的整体效率会高多少。问题主要不是出在工具上,而是在设计、开发人员上。他们迷失在工具中,没有去探求ETL的本质。可以说这些工具应用了这么长时间,在这么多项目、环境中应用,它必然有它成功之处,它必定体现了ETL的本质。如果我们不透过表面这些工具的简单使用去看它背后蕴涵的思想,最终我们作出来的东西也就是一个个独立的job,将他们整合起来仍然有巨大的工作量。大家都知道“理论与实践相结合”,如果在一个领域有所超越,必须要在理论水平上达到一定的高度.

人一定要靠自己!

ETL是数据仓库中的非常重要的一环,是承前启后的必要的一步。ETL负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。下面给大家介绍一下什么是ETL以及ETL常用的三种工具(Datastage,Informatica,Kettle)!

1.ETL是什么?

ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。(数据仓库结构)通俗的说法就是从数据源抽取数据出来,进行清洗加工转换,然后加载到定义好的数据仓库模型中去。目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。ETL是BI项目重要的一个环节,其设计的好坏影响生成数据的质量,直接关系到BI项目的成败。

2.为什么要用ETL工具?

▶ 当数据来自不同的物理主机,这时候如使用SQL语句去处理的话,就显得比较吃力且开销也更大。

▶ 数据来源可以是各种不同的数据库或者文件,这时候需要先把他们整理成统一的格式后才可以进行数据的处理,这一过程用代码实现显然有些麻烦。

▶ 在数据库中我们当然可以使用存储过程去处理数据,但是处理海量数据的时候存储过程显然比较吃力,而且会占用较多数据库的资源,这可能会导致数据资源不足,进而影响数据库的性能。

上面所说的问题,我们用ETL工具就可以解决。它的优点有:

支持多种异构数据源的连接。(部分)

图形化的界面操作十分方便。

处理海量数据速度快、流程更清晰等。

3.ETL工具介绍

Informatica和Datastage占据国内市场的大部分的份额。

4.ETL工具差异

Kettle,Datastage,Informatica三个ETL工具的特点和差异介绍:

操作

都是属于比较简单易用,主要是开发人员对于工具的熟练程度。Informatica有四个开发管理组件,开发的时候我们需要打开其中三个进行开发,Informatica没有ctrl+z的功能,如果对job作了改变之后,想要撤销,返回到改变前是不可能的。相比Kettle跟Datastage在测试调试的时候不太方便。Datastage全部的操作在同一个界面中,不用切换界面,能够看到数据的来源,整个job的情况,在找bug的时候会比Informatica方便。Kettle介于两者之间。

部署

Kettle只需要JVM环境,Informatica需要服务器和客户端安装,而Datastage的部署比较耗费时间,有一点难度。

数据处理的速度

大数据量下Informatica 与Datastage的处理速度是比较快的,比较稳定。Kettle的处理速度相比之下稍慢。

服务

Informatica与Datastage有很好的商业化的技术支持,而Kettle则没有。商业软件的售后服务上会比免费的开源软件好很多。

风险

风险与成本成反比,也与技术能力成正比。

扩展

Kettle的扩展性无疑是最好,因为是开源代码,可以自己开发拓展它的功能,而Informatica和Datastage由于是商业软件,基本上没有。

Job的监控

三者都有监控和日志工具。在数据的监控上,个人觉得Datastage的实时监控做的更加好,可以直观看到数据抽取的情况,运行到哪一个控件上。这对于调优来说,我们可以更快的定位到处理速度太慢的控件并进行处理,而informatica也有相应的功能,但是并不直观,需要通过两个界面的对比才可以定位到处理速度缓慢的控件。有时候还需要通过一些方法去查找。

网上的技术文档

Datastage < Informatica < kettle,相对来说,Datastage跟Informatica在遇到问题去网上找到解决方法的概率比较低,kettle则比较多。

5.项目经验分享

多张表同步、重复的操作:在项目中,很多时候我们都需要同步生产库的表到数据仓库中。一百多张表同步、重复的操作,对开发人员来说是细心和耐心的考验。在这种情况下,开发人员最喜欢的工具无疑是kettle,多个表的同步都可以用同一个程序运行,不必每一张表的同步都建一个程序,而informatica虽然有提供工具去批量设计,但还是需要生成多个程序进行一一配置,而datastage在这方面就显得比较笨拙。

增量表:在做增量表的时候,每次运行后都需要把将最新的一条数据操作时间存到数据库中,下次运行我们就取大于这个时间的数据。Kettle有控件可以直接读取数据库中的这个时间置为变量;对于没有类似功能控件的informatica,我们的做法是先读取的数据库中的这个时间存到文件,然后主程序运行的时候指定这个文件为参数文件,也可以得到同样的效果。

有一句话说的好:世上没有最好的,只有适合的!每一款ETL工具都有它的优缺点,我们需要根据实际项目,权衡利弊选择适合的ETL工具,合适的就是最好的。当下越来越多公司及其客户更重视最新的数据(实时数据)展现,传统的ETL工具可能满足不了这样的需求,而实时流数据处理和云计算技术更符合。所以我们也需要与时俱进,学习大数据时代下的ETL工具。

参考:【ETL】一个故事知道ETL是什么

参考:什么是BI、ETL、DW

参考:ETL常用的三种工具介绍及对比Datastage,Informatica

参考:ETL设计详解(数据抽取、清洗与转换)

参考:大数据ETL详解

参考:ETL讲解(很详细!!!)

什么是BI?什么是DW?ETL(Extract-Transform-Load)是什么?相关推荐

  1. BI开发流程和ETL介绍

    BI开发流程和ETL介绍 BI开发过程 1.       构建维度-事实模型 2.       根据维度-事实模型搭建数据仓库(维度.事实) 3.       数据抽取(ETL) 4.       构 ...

  2. 【原创】BI解决方案选型之ETL数据整合工具对比

    [原创]BI解决方案选型之ETL数据整合工具对比 参考文章: (1)[原创]BI解决方案选型之ETL数据整合工具对比 (2)https://www.cnblogs.com/xiongnanbin/p/ ...

  3. 五十六、 白话讲解商业智能 BI、数据仓库 DW、数据挖掘 DM

    商业智能 BI.数据仓库 DW.数据挖掘 DM 商业智能BI(Business Intelligence) .相比于数据仓库.数据挖掘,它是一个更大的概念.商业智能可以说是基于数据仓库,经过了数据挖掘 ...

  4. BI项目中的ETL设计详解(数据抽取、清洗与转换)

    ETL是BI项目最重要的一个环节,通常情况下ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败.ETL也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更 ...

  5. etl:BI项目中的ETL设计详解(数据抽取、清洗与转换)

    ETL是BI项目最重要的一个环节,通常情况下ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败.ETL也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更 ...

  6. BI、数据仓库、ETL、大数据开发工程师有什么区别?

    一味的解释 数据仓库 概念可能没意思,我们从不同角色出发吧 老板 :我是一家手机公司的老板,今天要向去董事局汇报,我要准备一份介绍过去三年的用户增长.用户留存.用户活跃度.手机里面每个APP使用率等情 ...

  7. 同步、异步ETL架构的比较

    背景介绍: 数据的抽取,转换和加载 (ETL, Extract, Transform, Load) 是构建数据仓库过程中最复杂也是至 关重要的一个步骤,我们通常用两种办法来处理 ETL 流程: 一种是 ...

  8. 从如何优化SQL入手,提高数据仓库的ETL效率

    1        引言 数据仓库建设中的ETL(Extract, Transform, Load)是数据抽取.转换和装载到模型的过程,整个过程基本是通过控制用SQL语句编写的存储过程和函数的方式来实现 ...

  9. 转贴:如何从优化SQL入手提高数据仓库的ETL效率 作者:周四阳 蔡自兴

    如何从优化SQL入手提高数据仓库的ETL效率     作者:周四阳 蔡自兴 1 引言     数据仓库建设中的ETL(Extract, Transform, Load)是数据抽取.转换和装载到模型的过 ...

  10. ETL的过程原理及数据仓库建设

    一. 数据仓库建设 数据仓库建设中的ETL(Extract, Transform, Load)是数据抽取.转换和装载到模型的过程,整个过程基本是通过控制用SQL语句编写的存储过程和函数的方式来实现对数 ...

最新文章

  1. android Canvas 最基础知识总结
  2. python多页网站目录_python 爬取页面所有的url
  3. java.exe闪退_tomcat7.exe闪退 解决点击startup.bat后闪退的情况 - 电脑常识 - 服务器之家...
  4. 无责任书评:每个Java程序员都应该深入理解Java虚拟机!
  5. Hive 整合Hbase(来自学习资料--博学谷)
  6. c++读取json文件_[SpringMVC]-SpringMVC架构-07-SpringMVC文件上传
  7. ssl1377-竞赛真理【dp之分组背包】
  8. javascript网页自动填表_JavaScript脚本实现网页批量自动勾选及内容填写
  9. eclipse不进入断点_Eclipse 调试中不支持运行到断点问题
  10. 人工智能(10)---机器学习知识体系篇(初级篇,中级篇,高级篇)
  11. 面试题7:用两个栈实现队列
  12. mysql数据库查询要注意事项_三种mysql高级查询技巧_数据库_mysql函数_课课家
  13. 管理与发展模式才是联想的症结
  14. Android 11 Beta 版本发布和相关活动推迟说明
  15. windows phone8.1开发书籍,教程,资源汇总
  16. 微信小程序修改标题背景色
  17. 马云的蚂蚁金服为何如此看重区块链?如何发挥区块链商业优势?
  18. 应用进程占内存大问题分析方法
  19. windows命令行窗口打开mysql,并创建数据库,导入sql文件
  20. Docker之API操作

热门文章

  1. SLAM本质剖析-Open3D
  2. 手把手教你使用YOLOV5训练自己的数据集并用TensorRT加速
  3. 浅谈三维点云中的几何语义
  4. 屡现黑马!2021THE泰晤士高等教育学科排名发布!斯坦福成为最大赢家,清华、北大强势逆袭!...
  5. 三维点云分割综述(上)
  6. opencv4.4的下载与安装(1)
  7. Linux(CentOS 7_x64位)系统下安装GaussView5
  8. 第八课.特征工程与CTR预测
  9. java ado连接mysql_【转】Java JDBC对应C# ADO连接数据库之区别
  10. 世界坐标系到观察坐标系的变换步骤_《3D数学基础》提炼总结(九)矩阵和线性变换...