etl_etl工具 - CSDN
etl 订阅
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。 展开全文
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
信息
过    程
抽取、清洗、转换、装载
软件名称
Extract, transform, load
应    用
Informatica、OWB、DataStage、Beeload
ETL简介
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据, ETL是BI(商业智能)项目重要的一个环节。
收起全文
精华内容
参与话题
  • kettle从入门到精通,让你真正掌所掌商业智能的能力。了解真正的ETL过程 此系列课程共20集,有真实项目,本课为完整版。
  • ETL讲解(很详细!!!)

    万次阅读 多人点赞 2017-11-02 16:08:39
    ETL讲解(很详细!!!)   ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一个...

    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的基础知识,看完你就全明白了!

    万次阅读 多人点赞 2020-07-20 08:53:25
    深度解析了ETL的基础概念以及实现方案,很值得一看~

    ETL基础概念

    ETL基础概念 - 背景

    随着企业的发展,各业务线、产品线、部门都会承建各种信息化系统方便开展自己的业务。随着信息化建设的不断深入,由于业务系统之间各自为政、相互独立造成的数据孤岛”现象尤为普遍,业务不集成、流程不互通、数据不共享。这给企业进行数据的分析利用、报表开发、分析挖掘等带来了巨大困难。
    在这里插入图片描述

    在此情况下,为了实现企业全局数据的系统化运作管理(信息孤岛、数据统计、数据分析、数据挖掘) ,为DSS(决策支持系统)、BI(商务智能)、经营分析系统等深度开发应用奠定基础,挖掘数据价值 ,企业会开始着手建立数据仓库,数据中台。将相互分离的业务系统的数据源整合在一起,建立一个统一的数据采集、处理、存储、分发、共享中心。
    在这里插入图片描述

    在BI项目中ETL会花掉整个项目至少1/3的时间,ETL设计的好坏直接关接到BI项目的成败。

    ETL基础概念-定义

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

    ETL基础概念-过程

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

    数据抽取

    • 确定数据源,需要确定从哪些源系统进行数据抽取
    • 定义数据接口,对每个源文件及系统的每个字段进行详细说明
    • 确定数据抽取的方法:是主动抽取还是由源系统推送?是增量抽取还是全量抽取?是按照每日抽取还是按照每月抽取?

    数据清洗与转换

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

    • 数据转换

      • 空值处理:可捕获字段空值,进行加载或替换为其他含义数据,或数据分流问题库
      • 数据标准:统一元数据、统一标准字段、统一字段类型定义
      • 数据拆分:依据业务需求做数据拆分,如身份证号,拆分区划、出生日期、性别等
      • 数据验证:时间规则、业务规则、自定义规则
      • 数据替换:对于因业务因素,可实现无效数据、缺失数据的替换
      • 数据关联:关联其他数据或数学,保障数据完整性

    数据加载

    将数据缓冲区的数据直接加载到数据库对应表中,如果是全量方式则采用LOAD方式,如果是增量则根据业务规则MERGE进数据库

    ETL VS ELT

    ETL架构按其字面含义理解就是按照E-T-L这个顺序流程进行处理的架构:先抽取、然后转换、完成后加载到目标数据库中。在ETL架构中,数据的流向是从源数据流到ETL工具,ETL工具是一个单独的数据处理引擎,一般会在单独的硬件服务器上,实现所有数据转化的工作,然后将数据加载到目标数据仓库中。如果要增加整个ETL过程的效率,则只能增强ETL工具服务器的配置,优化系统处理流程(一般可调的东西非常少)。
    在这里插入图片描述

    ELT架构则把“L”这一步工作提前到“T”之前来完成:先抽取、然后加载到目标数据库中、在目标数据库中完成转换操作。在ELT架构中,ELT只负责提供图形化的界面来设计业务规则,数据的整个加工过程都在目标和源的数据库之间流动,ELT协调相关的数据库系统来执行相关的应用,数据加工过程既可以在源数据库端执行,也可以在目标数据仓库端执行(主要取决于系统的架构设计和数据属性)。当ETL过程需要提高效率,则可以通过对相关数据库进行调优,或者改变执行加工的服务器就可以达到。
    在这里插入图片描述

    大家可以仔细看看上面两种架构图,体会一下他们之间的区别,下面来分析一下他们各自的优点:

    ETL架构的优势

    • 可以分担数据库系统的负载(采用单独的硬件服务器)
    • 相对于ELT架构可以实现更为复杂的数据转换逻辑
    • 采用单独的硬件服务器
    • 与底层的数据库存储无关

    ELT架构的优势

    • 充分利用数据库引擎来实现的可扩展性
    • 可以保持所有的数据始终在数据库当中,避免数据的加载和导出,从而保证效率,提高系统的可监控性
    • 可以根据数据的分布情况进行并行处理优化,并可以利用数据库的固有功能优化磁盘I/O
    • 通过对相关数据库进行性能调优,ELT过程获得3到4倍的效率提升比较容易

    ETL 模式介绍

    ETL有四种主要实现模式:触发器模式、增量字段、全量同步、日志比对

    触发器模式

    触发器方式是普遍采取的一种增量抽取机制。该方式是根据抽取要求,在要被抽取的源表上建立插入、修改、删除3个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个增量日志表,ETL的增量抽取则是从增量日志表中而不是直接在源表中抽取数据,同时增量日志表中抽取过的数据要及时被标记或删除。
    为了简单起见,增量日志表一般不存储增量数据的所有字段信息,而只是存储源表名称、更新的关键字值和更新操作类型(insert、update或delete),ETL增量抽取进程首先根据源表名称和更新的关键字值,从源表中提取对应的完整记录,再根据更新操作类型,对目标表进行相应的处理。

    CREATE OR REPLACE TRIGGER TRI_T_ETL_YB
      BEFORE INSERT OR UPDATE OR DELETE ON T_ETL_YB
      FOR EACH ROW
    DECLARE
     CZLX VARCHA2(1); -- 定义操作类型
     BEGIN
       -- 插入日志表(ID,操作时间,操作类型)
       IF DELETING THEN INSERT INTO ETL_LOG(ID,CZSJ,CZLX) VALUES (:old.ID,sysdate,'D');
       ELSE IF UPDATING THEN INSERT INTO ETL_LOG(ID,CZSJ,CZLX) VALUES (:old.ID,sysdate,'U');
       ELSE IF INSERTING THEN INSERT INTO ETL_LOG(ID,CZSJ,CZLX) VALUES (:new.ID,sysdate,'I');
       END IF;
    END;
    

    优点:
    数据抽取的性能高,ETL 加载规则简单,速度快,不需要修改业务系统表结构,可以实现数据的递增加载。

    缺点:
    要求业务表建立触发器,对业务系统有一定的影响,容易对源数据库构成威胁。

    增量字段

    增量字段方式来捕获变化数据,原理就是在源系统业务表数据表中增加增量字段,增量字段可以是时间字段,同时也可以是自增长字段(如oracle的序列),设计要求就是源业务系统中数据新增或者被修改时,增量字段就会产生变化,时间戳字段就会被修改为相应的系统时间,自增长字段就会增加。
    每当ETL工具进行增量数据获取时,只需比对最近一次数据抽取的增量字段值,就能判断出来哪些是新增数据,哪些是修改数据。这种数据抽取方式的优点就是抽取性能比较高,判断过程比较简单,最大的局限性就是由于某些数据库在进行设计的时候,未考虑到增量字段,需要对业务系统进行改造,基于数据库其他方面的原因,还有可能出现漏数据的情况。

    优点:
    同触发器方式一样,时间戳方式的性能也比较好,ETL 系统设计清晰,源数据抽取相对清楚简单,可以实现数据的递增加载。

    缺点:
    时间戳维护需要由业务系统完成,对业务系统也有很大的侵入性(加入额外的时间戳字段),特别是对不支持时间戳的自动更新的数据库,还要求业务系统进行额外的更新时间戳操作;
    另外,无法捕获对时间戳以前数据的delete和update 操作,在数据准确性上受到了一定的限制。

    全量同步

    全量同步又叫全表删除插入方式,是指每次抽取前先删除目标表数据,抽取时全新加载数据。该方式实际上将增量抽取等同于全量抽取。对于数据量不大,全量抽取的时间代价小于执行增量抽取的算法和条件代价时,可以采用该方式。
    同步流程:
    在这里插入图片描述

    优点:
    对已有系统表结构不产生影响,不需要修改业务操作程序,所有抽取规则由ETL完成,管理维护统一,可以实现数据的递增加载,没有风险。

    缺点:
    ETL 比对较复杂,设计较为复杂,速度较慢。与触发器和时间戳方式中的主动通知不同,全表比对方式是被动的进行全表数据的比对,性能较差。当表中没有主键或唯一列且含有重复记录时,全表比对方式的准确性较差。

    日志比对

    日志比对的方式是通过获取数据库层面的日志来捕获到变化的数据,不需要改变源业务系统数据库相关表结构,数据同步的效率比较高,同步的及时性也比较快,最大的问题就是前面所提到的不同的数据库的数据库日志文件结构存在较大的差异性,实施分析起来难度比较大,同时需要具备访问源业务库日志表文件的权限,存在一定的风险性,所以这种方式有很大的局限性。

    日志比对方式中比较成熟的技术是Oracle的CDC(Changed Data Capture)技术,作用同样是能够捕获到上一次抽取之后的产生的相关变化数据,当CDC对源业务表进行新增、更新和删除等相关操作的时就可以捕获到相关变化的数据,相对于增量字段方式,CDC方式能够较好的捕获到删除数据,并写入相关数据库日志表,然后再通过视图或者别的某种可操作的方式将捕获到的变化同步到数据仓库当中去。

    优点:
    ETL同步效率较高,不需要修改业务系统表结构,可以实现数据的递增加载。

    缺点:
    业务系统数据库版本与产品不统一,难以统一实现,实现过程相对复杂,并且需深入研究方能实现。或者通过第三方工具实现,一般都是商业软件,而且费用较高。

    模式对比

    增量机制 兼容性 完备性 抽取性能 源库压力 源库改动量 实现难度
    触发器 关系型数据库 容易
    增量字段 关系型数据库.具有”字段”结构的其它数据格式 较优 容易
    全表同步 任何数据格式 极差 容易
    日志比对 关系型数据库(oracle/mysql) 较优 较难

    ETL 工具

    为什么要使用ETL工具

    • 当数据来自不同的物理主机,这时候如果使用SQL语句去处理的话就显得比较吃力且开销也更大
    • 数据来源可以是各种不同的数据库或者文件,这时候需要先把他们整理成统一的格式后才可以进行数据的处理,这一过程用代码实现显然有些麻烦
    • 在数据库中我们当然可以使用存储过程去处理数据,但是处理海量数据的时候存储过程显然比较吃力,而且会占用较多数据库的资源,这可能会导致数据库资源不足,进而影响数据库的性能。

    ETL工具选择依据

    • 对平台的支持程度
    • 抽取和装载的性能是不是较高,且对业务系统的性能影响大不大,侵入性高不高
    • 对数据源的支持程度
    • 是否具有良好的集成性和开放性
    • 数据转换和加工的功能强不强
    • 是否具有管理和调度的功能

    主流ETL工具推荐

    PDI(KETTLE) DATASTAGE
    免费 IBM商业软件
    开源产品,使用纯JAVA代码编写的ETL工具 专业的ETL工具,价格不菲
    跨平台 适合大规模的ETL应用
    扩展性好

    好了,各位朋友们,本期的内容到此就全部结束啦,能看到这里的同学都是优秀的同学,下一个升职加薪的就是你了!
    如果觉得这篇文章对你有所帮助的话请扫描下面二维码加个关注,当然也欢迎加我微信,拉你进技术交流群!
    “转发” 加 “在看”,养成好习惯!咱们下期再见!


    这里为大家准备了一份小小的礼物,关注公众号,输入如下代码,即可获得百度网盘地址,无套路领取!

    001:《程序员必读书籍》
    002:《从无到有搭建中小型互联网公司后台服务架构与运维架构》
    003:《互联网企业高并发解决方案》
    004:《互联网架构教学视频》
    006:《SpringBoot实现点餐系统》
    007:《SpringSecurity实战视频》
    008:《Hadoop实战教学视频》
    009:《腾讯2019Techo开发者大会PPT》
    010: 微信交流群

    展开全文
  • 数据库操作--- ETL

    千次阅读 2019-08-11 16:26:12
    ETL定义 字面含义:ETL是抽取(extract)、转换( transform )、加载( load )的缩写。 简单定义:将数据从OLTP系统中转移到数据仓库中的一系列操作的集合。 ETL应用范围 抽取: 一般抽取过程需要连接到不同的...

    转自:https://www.jianshu.com/p/e62431a738e8

    ETL定义

    字面含义:ETL是抽取(extract)、转换( transform )、加载( load )的缩写。

    简单定义:将数据从OLTP系统中转移到数据仓库中的一系列操作的集合。

    ETL应用范围

    1. 抽取: 一般抽取过程需要连接到不同的数据源,以便为随后的步骤提供数据。这一部分看上去简单而琐碎,实际上它是ETL解决方案成功实施的一个主要障碍。

    2. 转换: 在抽取和加载之间,任何对数据的处理过程都是转换。这些处理过程通常包括(但不限于)下面一些操作。

      • 移动数据
      • 根据规则验证数据
      • 数据内容和数据结构的修改
      • 集成多个数据源的数据
      • 根据处理后的数据计算派生值和聚集值
    3. 加载: 将数据加载到目标系统的所有操作。


     

    展开全文
  • ETL技术入门之ETL初认识

    万次阅读 多人点赞 2014-07-11 22:05:39
    ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)作为BI/DW(Business Intelligence)的核心和灵魂,能够按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,...

    ETL是什么

    ETL是Extract Transform Load三个英文单词的缩写 中文意思就是抽取、转换、加载。说到ETL就必须提到数据仓库。


    先说下背景知识:

    信息是现代企业的重要资源,是企业运用科学管理、决策分析的基础。目前,大多数企业花费大量的资金和时间来构建联机事务处理OLTP的业务系统和办公自动化系统(例如电信行业的各种运营支撑系统、购物网站系统),用来记录事务处理的各种相关数据。据统计,数据量每2~3年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占在总数据量的2%~4%左右。因此,企业仍然没有最大化地利用已存在的数据资源,以致于浪费了更多的时间和资金,也失去制定关键商业决策的最佳契机。

    在这个背景下,能够给企业所有级别的决策制定过程提供支持的所有类型数据的战略集合应运而生,他就是数据仓库。数据仓库的英文简写是Data Warehouse。数据仓库就是把OLTP系统产生的数据 整合到一起 发掘其中的商业价值和提供决策支持用。举个电信行业的例子 电信有系统每天会有客户投诉的信息、宽带群体性障碍、客户号码的停机恢复时间记录等等。这些数据都在各自的生产环境系统里面。他们每个月会把这些数据整合到一起处理加工到数据仓库里面形成报表 其中有一个功能是可以对哪些用户有离网销号的倾向做出大概的判断。这就是数据仓库的价值所在。


    那么怎么把数据弄到数据仓库里去呢,其中用到的一个技术就是ETL。


    下面给下ETL的详细解释定义:

    ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)作为DW的核心和灵魂,能够按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。如果说数据仓库的模型设计是一座大厦的设计蓝图,数据是砖瓦的话,那么ETL就是建设大厦的过程。在整个项目中最难部分是用户需求分析和模型设计,而ETL规则设计和实施则是工作量最大的,约占整个项目的60%~80%,这是国内外从众多实践中得到的普遍共识。
    ETL是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)的过程。是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
    于是,企业如何通过各种技术手段,并把数据转换为信息、知识,已经成了提高其核心竞争力的主要瓶颈。而ETL则是主要的一个技术手段。

    做数据仓库系统,ETL是关键的一环。说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具。

    现在来说说ETL技术用到的工具,常用的有Informatica、Datastage、Beeload、Kettle等。目前只用过kettle,所以这里只对kettle做描述。

    kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,kettle 3版本需要安装 3以上都是绿色版无需安装。


    提醒的是kettle运行 需要机器有JRE环境


    Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么。
    Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。


    现在来看下kettle的transformation文件,一个最简单的E过程例子(windows环境)


    上图文件的功能就是就是把oracle数据库一个表的数据抽取到另一表里面。


    左边的图标叫表输入 右边的叫表输出 中间绿色的线代表数据流向。 表输入和表输出可由左边的菜单栏里 鼠标拖动出。

    双击打开表输入是这样的:


    上图左边的是打开表输入的界面

    步骤名称: 即是图标下面显示的名字 可以随便填

    获取sql查询语句:点击后 会树状形式展示oracle的表视图 等 选中双击后 点自己会添加到空白的sql框内。

    数据库连接: 一开始没有 需要新建 有了就可以编辑了 点击编辑后会弹出上图右边的页面

    connection name :连接起个名字 可以使数据ip地址 加实例名

    connection type :是选择你要查询的数据库类型 mysql oracle等等

    method access:是选择驱动类型 选择那个JDBC就可以了

    server host name :是数据库的ip地址

    dbname :是数据库实例名

    Port number:是端口号

    再下面就是用户名 密码了。


    填好所有的信息后 可以点击test测试下能不能成功连接。成功连接即可点击确定 界面就会回到上面的左图


    sql 下面的空框 是用来写你想要获取数据的sql语句(也可以由那个获取查询sql按钮自动获取) 写好后 可以点击预览 (行数选少点)看下数据可正常。如果能预览数据 说明你的表输入就配好了。

    上图左边

    ennable lazy conversion 勾上后就表示延迟转换:这样在从数据库读取的数据就能保持原有字符集,不会默认强制使用utf8。

    replace variables in :表示如果sql框里的sql有变量的时候 会使用环境变量替代它 像table_201407 这样带日期的固定格式表名 可以使用这个实现自动化

    记录数量限制:默认为0 若设为大于0的任何值 则无论sql怎么写的 输入表只有设置的行数那么多。


    现在来看表输出:

    上图左边为双击打开表输出的 界面。

    步骤名称:表输出图标下面显示的名字 可用数据库ip 用户名 表名

    数据库连接 :没有需要新建 可以新建几个 新建好的可以编辑

    target schema :目标表或者视图的用户

    目标表:可以自己输入,也可以从浏览里面选择

    提交记录数量:批量一次提交的数据量或者非批量插入数据量的限制值

    裁剪表:插入之前 有 truncate 操作。

    忽略插入错误 :这是非批量插入的功能,非批量插入时 若有一天数据插入报错 后面的数据还可以正常插入。

    使用批量插入:点上即是批量 否则为非批量。

    点击数据库连接的编辑后 会弹出上图右图 与表输入的一样 填写数据库的tns信息 及用户名密码。点击test可以连接后 点击确定


    回到上图左边界面 再点击确定 即配好了一个转换 点击运行后:



    可以从日志看 该转换有没有finished、 每个步骤的耗时、速度 、平均每秒多少行、 总共插入了多少记录数等。

    展开全文
  • ETL面试题

    千次阅读 2019-03-22 00:02:44
    ETL面试题 What is a logical data mapping and what does it mean to the ETL team? 什么是逻辑数据映射?它对ETL项目组的作用是什么? 答:逻辑数据映射(Logical Data Map)用来描述源系统的数据定义、目标数据...
  • ETL详细讲解

    千次阅读 2019-08-27 23:04:35
    ETL详细讲解 ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。ETL是BI项目重要的一个环节。 通常情况下,...
  • ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一个环节。 通常情况下,在BI项目中...
  • 主流ETL工具

    千次阅读 2019-02-27 14:57:05
    ETL是数据仓库中的非常重要的一环,是承前启后的必要的一步。ETL负责将分布的、导购数据源中的数据如关系数据。平面数据文件等抽取大搜临时的中间层后进行清洗、转换、集成,最后加载到数据仓库货数据集市中,成为...
  • ETL介绍及工作原理

    千次阅读 2020-05-05 16:59:12
    ETL介绍及工作原理ETL简介 ETL简介 ETL即EXTRACT(提取)、Transform(转换)、LOAD(加载); 提取是从数据库读取数据的过程。在此阶段,通常从多种不同类型的来源收集数据。 转换是过程转换所提取的数据从先前的...
  • 几款开源的ETL工具及ELT初探

    万次阅读 2018-08-06 08:45:41
    ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL 是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗...
  • ETL介绍与ETL工具比较

    千次阅读 2019-05-15 11:26:39
    ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。 ETL负责将分布...
  • ETL

    2018-09-21 20:37:02
    ETLETL简介实现ETL技术架构ETL架构ELT架构ELT架构的优势:注意事项 文章装载自:https://baike.baidu.com/item/ETL/1251949 ETL简介 ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取...
  • 实时ETL解决方案总结

    2019-11-18 09:22:53
    实时ETL可以选择哪些架构部件? 2.实时ETL有哪些实现方法? 3.实时ETL有哪些难点?1、简述在架构实时ETL时的可以选择的架构部件。答:在建立数据仓库时,ETL通常都采用批处理的方式,一般来说是每天的夜间进行跑批。...
1 2 3 4 5 ... 20
收藏数 50,439
精华内容 20,175
关键字:

etl