首页 > 编程知识 正文

etl流程设计,ETL工作流程

时间:2023-05-05 13:00:12 阅读:212544 作者:1386

文章目录

◇ETL定义
◇模式及比较
◇ETL过程
◇问题分析
◇现状分析


一、ETL定义

ETL定义涉及以下内容:
ETL定义
ETL前提
ETL原则

1.ETL定义

◆定义:
数据的抽取(Extract)、转换(Transform)、装载(Load)的过程
◆目标:
数据优化。以最小代价(包括对日常操作的影响和对技能的要求)将针对日常业务操作的数据转化为针对数据仓库而存储的决策支持型数据

2.ETL的前提

确定ETL范围
·通过对目标表信息的收集,确定ETL的范围
选择ETL工具
·考虑资金
·运行的平台、对源和目标的支持程度、可编程的灵活性、对源数据变化的监测、数据处理时间的控制、管理和调度功能、对异常情况的处理
确定解决方案
·抽取分析、变化数据的捕获、目标表的刷新策略、数据的转换及数据验证

3.ETL过程中应尽量遵循以下原则

应尽量利用数据中转区对运营数据进行预处理。
保证数据的安全性、集成与加载的高效性。
ETL的过程应是主动“拉取”,而不是从内部“推送”,其可控性将大为增强。
流程化的配置管理和标准协议数据质量的保证正确性、一致性、完整性、有效性、可获取性
正确性(Accuracy):数据是否正确体现在现实或可证实的来源
完整性(Integrity):数据之间的参照完整性是否存在或一致
一致性(Consistency):数据是否被一致的定义或理解
完备性(Completeness):所有需要的数据是否都存在
有效性(Validity):数据是否在企业定义的可接受的范围之内
时效性(Timeliness):数据在需要的时间是否有效
可获取性(Accessibility):数据是否易于获取、易于理解和易于使用数据格式错误(如缺失数据、数据值超出范围或数据格式非法等)
数据一致性:数据源系统为了性能的考虑,会在一定程度上舍弃外键约束,这通常会导致数据不一致。例如在帐务表中会出现一个用户表中没有的用户ID,在例如有些代码在代码表中找不到等。

二、模式及比较

ETL模式及比较
两种模式:
异构
同构
模式比较的维度:
特点
环境

ETL模式-同构

ETL模式-异构

两种模式的比较-特点

异构(Asynchronous)同构(Synchronous)比同构模式提供了更好的数据处理性能,需要更少的处理时间,因为通过网络传输文件的速度比直接通过数据库存取数据要快很多。要避免性能瓶颈问题解决办法是缩小每次抽取的时间粒度,例如将抽取周期定为每日抽取,这样可以保证每次抽取的增量数据数目是很少量的。在数据抽取过程中,应尽量避免本次抽取定义的时间区间内的源数据在抽取过程中同时产生变动的情况。即抽取的理想状况是抽取的同时源数据系统的数据是静止的,没有增、删、改的情况伴随发生。对于ODS系统来说,数据不会频繁地发生变动;而对于OLTP系统来说,应该选择源数据变化较少的时段完成抽取工作。与异构方式类似,应避免抽取时间区间和源数据系统的生产时段相重合。如果源数据系统时刻都有新数据插入,一种解决办法是设置一个时间区间,定义每次抽取的开始和结束时间值:本次抽取的开始时间为上次抽取的结束时间,本次抽取的结束时间为机器系统时间( Sysdate)或者是目前数据库系统中已有记录的最大时间戳值。实际上就是定义某个时间区间内的源数据的快照(Snapshot),这样就可以避免重复装载的情况发生。除此之外,还应该充分考虑源和目标两套数据库系统的Down机的时间因素。需要两套ETL包,一个用来抽取,一个用来装载,两个包都需要由专门的系统管理人员监视是否装载过程会发生错误。只需要一个ETL软件包。系统管理人员也只需要监视一套系统。源和目标之间没有直接的联系。只要中间过渡的文本文件结构不发生变化,源和目标的结构即使改变而不会对ETL流程产生很大的影响。源和目标的关系是被绑定在具体的映射中的。当源或者目标的结构发生变化,相对应的映射也要做修改。当ETL错误发生时,可以采用简单的处理办法修复数据:当抽取失败时,修正问题并重新从源中抽取;当装载过程发生问题,回滚(Roll back),返回上一次装载的状态并再次运行装载的程序。必要时甚至可以将数据仓库系统恢复到某一个时点的状态并批量地装载文本文件。与异构模式类似,当ETL错误发生也可以采用相应手段来修复数据。例如,倘若源数据库中保留了所有历史记录, ETL程序可以根据设定的时间区间修复上一次装载失败的数据。前提是必须先删除上一次装载失败从而在目标库中产生的垃圾数据,回滚(Roll back),返回到上一次加载数据前的状态。可以根据目标表的主键来确定装载过程中插入或更新记录的策略,如果源记录的主键是新的,那么就插入该记录;如果源记录的主键在目标数据库中已经存在,那么就用源记录更新目标记录。这样就可以避免多次重复装载的情况发生。同时,适当调大装载的时间区段也不会发生数据重复加载的情况。需要有专门的核查( Audit)程序来监控数据传输或者装载过程是否有失败或者记录缺失的情况发生。直接拷贝(direct copy),可以避免传送过程中的许多错误。可以在源和目标库中运行Sum和 Count等聚合函数来对数据质量进行校验。能够简化查错 troubleshooting的过程,由于在中间步骤生成文本文件,实际上是所要抽取的源数据的快照(Snapshot)。问题发生时,可以很容易地确定是哪一个环节发生了问题,源,目标还是网络传输?与异步模式相比,查错过程比较复杂。源数据的不断变化导致问题难以定位。很难判断问题究竟是由于抽取程序还是由于源数据的变化引起的(上一次抽取的数据是什么?)。源和目标的数据接口分离,只需要定义好中间的文本文件数据接口,就可以同步完成独立的源和目标的开发工作。当各自模块完成后再将其装配,提高开发效率。开发人员不仅需要熟悉源的结构,对目标的结构也要有所了解。要将数据导出成字节流并写入导文本文件中。如果源包含图形数据,要将其导出成文本,实现起来有一定的难度。从源到目标的直接映射,不需要从ASCII或者Unicode作为中间过渡。维护过程中要求不能误删文件或其中的某些记录,以免破坏文本文件之间的关联关系。主表和子表之间有主外键相关联,数据库中的各表记录能够保持相互间的匹配关系。数据转换过程包括两个步骤:1、将数据库中的表导出成中间过渡的文本;2、装载文件。导出的处理过程比较灵活,可以从源表导出,也可以从相关的视图导出,也可将源表内容先导出到临时表再导出到文本文件。处理导出过程的存储过程可以在源上,也可以在目标上。数据转换过程只有一个步骤,一次性地完成导出和装载的工作。简化了设计和测试的过程,但是另一方面也降低了灵活性。要求具备两套安全控制机制,对于源数据库有读权限,对于目标数据库有写权限。同时还需要有能够在源和目标服务器上有写文件的权限(用于存放中间文本文件和上传文件到目标服务器)。与异构模式类似,也需要对于源数据库有读权限,对于目标数据库有写权限。但是抽取过程可以不需要源和目标服务器上操作系统级的文件管理权限。

两种模式的比较-环境

条件异构(Asynchronous)同构(Synchronous)数据传输(Data transfer)大数据量小数据量网络连接(Network connectivity)广域网局域网或者同一数据中心源和目标在物理架构上是否属于不同的分布式环境是不是抽取数据的复杂度(Complexity of data)源中只包含了文本或数值类型的字段源数据库中包含了图形类字段三、ETL过程

ETL过程:
数据抽取
数据清洗
数据转换
数据加载

ETL的问题

ETL过程-0层DFD

1层-数据抽取

1层-数据清洗

1层-数据转换

1层-数据加载


四、问题分析












五、现状分析


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。