ETL设计要点

922阅读 0评论2012-07-06 linux_kaige
分类:

    由于数据源的多样性,数据传输条件等不确定性以及用户对最终统计数据的选择性等因素,使得ETL在处理上需要考虑业务数据处理的要求,还要考虑数据传递过程中如何解决这些多样性和不确定性,以及数据转换的复杂性等方面都需要考虑。ETL的设计一定是针对具体的应用相关的,针对不同的业务和分析模型有不同的抽取要求。

   
所以ETL整体架构的灵活性和可扩展性都是非常重要的。但无论依赖的条件多么变化在设计过程中都要依照一下原则

    1.
ETL设计之前需要根据业务的特性确定分析的主题,和分析模型的结构,区分维度数据和和事实数据,建立相应的数据仓库的模型。在设计过程中需要考虑是否需要预留字段,增加属性等等。

    2.
数据的粒度,在同一CUBE中必须统一。事实表中的粒度就是维度表与事实表中相关联的最小级别的数据。在分析过程中尽可能采用粗的粒度可以有效的减少数据量。但是在不同的分析中可能会有差异,比如在话务量的趋势分析和预测的分析主题中可以以小时为粒度,但是在一些实时性要求比较高的忙时分析中需要采用15分钟甚至5分钟的粒度。

    3.数据周期的确定,在设计ETL时需要事先确定抽取的时间,这个可能根据用户实时性的要求作为调整的依据。

    4.
抽取的方式尽量采用增量的抽取以减小每次抽取的数量。

    5.
数据流和工作流的概念.ETL中需要考虑数据在每个步骤中的状态和转换行为,数据的清洗转换和加载过程世分为很多步骤完成的,每个步骤一定是数据的一个原子业务操作。步骤可以根据需要进行调整,在数据流当中可能会出现分支的情况,也就是说,在不同条件下采用不同的处理逻辑。

    6.
流程的异常处理。在流程中需要考虑各种可能的异常的存在,如网络闪断,数据的延迟产生等等。需要在流程中加入一些补救的措施已于纠正。保证入数据仓库的数据绝对正确。(但是流程的设计尽量依照简单高效的原则)

    7.ETL
的调整,运行管理以及监控。针对ETL程序的运行应该有相关的管理和监控工具。一方面用于ETL的设置和调整,另一方面也是方便在ETL处理出现异常时能够及时通过人工的方式进行干预。保证ETL的正常运行。

    8.
针对业务的需求进行ETL的配置和设置界面,方便专业维护人员和开发人员能够对抽取的任务进行调整和灵活配置。

    9.ETL
CUBE的管理,ETL程序除了需要针对数据仓库的管理和数据的处理以外很重要的部分是对cube的管理。根据cube的特性需要考虑对维度,cube进行更新,以及对cube中分区的新建,处理,合并等一系列操作。

    10.
数据仓库有一个初始化的过程也就是将以前的业务数据进行整理和加载,但是数据量是非常巨大的需要花费较长的时间来完成的,而且抽取的策略和平时的抽取不同。

    11.
程序具有自修复功能,任务在任何一步出现异常,ETL程序都能够回到抽取前的状态,而不需要人工干预,更不能影响到已抽取的数据。
上一篇:ETL介绍
下一篇:ETL的思考