• ETL概念


    ETL定义
       ETL是将业务系统的数据经过抽取,清洗转换之后加载到数据仓库的过程,目的是将企业中的分散,零乱,标准不统一的数据整合到一起,为企业

      决策提供分析依据。
       ETL是BI项目重要的一个环节。通常情况下,在BI项目中ETL会花掉整个项目至少1/3的时间,ETL设计的好坏直接关系到BI项目的成败。
       ETL的设计分三部分:数据抽取,数据的清洗转换,数据的加载。
       数据抽取:从各个不同的数据源抽取到ODS(操作型数据存储)中----抽取过程中可以做一些数据的清洗和转换,在抽取过程中需要挑选不同的抽取

      方法,仅可能的提高ETL运行效率。ETL三个部分中,花费时间最长的是清洗,转换部分,一般情况下这部分工作是整个ETL的2/3工作量。

       数据的加载:一般在清洗完成之后直接写入DW(数据仓库)中去。
    ETL的实现方法,常用的有三种:
       1:借助ETL工具,如owb,dts,ssis,informatic和kettle
       2:sql方式实现
       3:ETL工具和sql相结合。
    一:数据的抽取
       这一部分需要在调研阶段做大量的工作,首先搞清楚数据是从几个业务系统中来,各个业务系统的数据库服务器运行什么DBMS,是否存在手工数

      据,手工数据量有多大,是否存在非结构化数据等,当收集完这些信息后才可以进行数据抽取设计。
     1:对于与存放DW的数据库系统相同的数据源处理方法。
       这一类数据源在设计上比较容易,一般情况下,DBMS都会提供数据库连接功能,在dw数据库服务器和原业务系统之间建立直接的连接关系就可以

      写select语句直接访问。
     2:对于与dw数据库系统不同的数据源的处理方法
       对于这一类数据源,一般情况下也可以通过ODBC的方式建立数据库链接-如mysql和oracle之间。若熊建立数据连接,可以有两种方式实现,一种是

      通过将数据源导出成.txt或.xls文件,然后再将这些源数据文件导入到ods中。另一种方式是:通过程序接口来实现。
     3:对于文件类型数据源,可以利用数据库工具将这些数据导入到指定的数据库,然后从指定的数据库中抽取。或者还可以借助工具实现。
     4:增量更新的问题
       对于数据量大的系统,必须考虑增量抽取.一般情况下,业务系统会记录业务发生的时间,;我们可以用来做增量抽取的标志,每次抽取之前,首先判断ODS

      中记录最大的时间.然后根据这个时间去业务系统取大于这个时间的最大记录,利用业务系统的时间戳,一般情况下,业务系统没有或者部分有时间戳.
    二:数据的清洗和转换
       一般情况下,数据仓库分为ods,dw两部分.通常的做法是从业务系统到ods做清洗,将脏数据和不完整的数据过滤掉,再从ods到DW的过程中转换,进行一些

      业务规则的计算和聚合.
     1:数据清洗
       数据清洗过程的任务是过滤掉那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单元修正之后再进行抽取.
       不符合要求的数据主要是有不完整的数据,错误的数据,重复数据三大类。
       a:不完整的数据
         这一类数据主要是一些应该有的信息缺失,对于这一类数据过滤出来,按照缺失的内容分别写入不同EXCEL文件向客户提交,要求在规定的时间

        内补全,补全后才写入数据参股。

       b:错误的数据
         错误产生的原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成去全角数字字符,字符串数据

        后跟一个回车,日期格式不正确,日期越界等。这一类数据也要分类,对于类似于全角字符,数据前后有不可见字符的问题,只能通过写sql语句

        的方式找出来,然后要求客户在业务系统修正之后抽取。日期格式不正确或是日期越界的这一类错误会导致ETL运行失败,这一类错误需要去业务

        系统数据库用sql方式挑出来,交给业务主管部门限期修正,修正之后再抽取。

       c:重复的数据
         对于这一类数据----特别是维表中会出现这种情况---将重复记录的所有字段导出来,让客户确认并整理。
     
       数据清洗是一个反复的过程,对于是否过滤,是否确认一般需要客户确认,对于过滤的数据,写入excel文件或者将过滤数据写入数据表,在etl开发初期可

       以每天向业务单元发送过滤数据的邮件,促使他们尽快修正错误。同时也可以作为将来验证数据的依据。
         数据清洗需要注意的是,不要将有用的数据过滤掉,对于每个过滤规则认真进行验证,并要用户确认。
     
     2:数据的转换
       数据的转换主要进行不一致的数据转换,数据粒度的转换,以及一些商务规则的计算。
       a:不一致数据转换
         这个过程是一个整合的过程,将不同业务系统的相同类型数据统一,例如编码格式。
       b:数据粒度的转换
         业务系统一般存储非常明细的数据,而数据仓库中数据是用来分析的,不需要非常明细的数据。一般情况下会将业务系统数据按照数据仓库粒度进行整合。
       c:商务规则计算
         不同的企业有不同的业务规则,不同的数据指标,这些指标有时候不是简单的加加减减就能完成的,这个时候需要在ETL中将这些指标计算好之后存储到数据仓库中去。
    三:ETL日志,警告的发送
     1:ETL日志
       ETL日志总工分为三类:
       执行过程日志:这一部分日志是ETL执行过程中每执行一步的记录,记录每次运行每一步骤的起始时间,影响了多少行数据,流水账形式。
       错误日志:当某个模块出错的时候写错误日志,记录每次出错的时间,出错的模块以及出错的信息等。
       总体日志:只记录ETL开始时间,结束时间,是否成功信息,若使用ETL工具,ETL工具会自动产生一些日志,这些日志也可以作为ETL日志的一部分。
       记录日志的目的是随时可以知道ETL运行情况,若出错,可以知道出错信息。
     2:警告发送
       警告发送形式多种多样,一般以邮件的形式通知管理员。

  • 相关阅读:
    电路维修 (广搜变形-双端队列bfs)
    靶形数独 (dfs+预处理+状态压缩)
    埃及分数问题(带乐观估计函数的迭代加深搜索算法-IDA*)
    weight (搜索对象的选取)
    Codeforces Round #506 (Div. 3)
    生日蛋糕 (poj1190) (dfs剪枝)
    校内模拟赛题面
    NOIP2013 D1T3 货车运输 zz耻辱记
    NOIP2011 D2T3 观光公交 做题笔记
    ARC 103
  • 原文地址:https://www.cnblogs.com/zja001/p/10145255.html
Copyright © 2020-2023  润新知