ETL技术设计规范方案(通用)
- 格式:doc
- 大小:101.00 KB
- 文档页数:8
数据仓库中的ETL技术数据仓库已经成为当今企业和组织在数据管理和决策支持方面的重要基础设施。
通过将分散的、杂乱的和不一致的数据汇集到一个统一的、结构化的数据集合中,数据仓库可以提供一种综合的数据视图,为企业管理层和分析师提供决策支持。
在构建和维护数据仓库时,ETL(Extract, Transform, Load)技术扮演着重要的角色。
ETL技术是指从源系统中提取数据,并对数据进行转换和加载到目标数据仓库中的一系列过程。
下面将逐一介绍ETL技术的三个主要步骤。
首先,ETL过程的第一步是数据提取(Extract)。
数据可以来自各种不同的源系统,如关系数据库、平面文件、Web服务等。
数据提取可以根据需求使用不同的方法,如增量提取和全量提取。
增量提取仅提取自上次提取以来发生更改或新增的数据,而全量提取则完全提取源系统中的所有数据。
可靠的数据提取策略既需要保证数据的准确性,又需要保证提取过程的效率。
第二,ETL过程的第二个步骤是数据转换(Transform)。
数据从源系统中提取出来可能存在许多问题,如数据格式不一致、数据类型错误等。
在数据转换阶段,数据会经过清洗(Cleansing)、校验(Validation)、转换(Transformation)等一系列操作。
清洗操作可以删除无效的、冗余的或者重复的数据。
校验可以确保数据的完整性,包括必填字段、有效性验证等。
转换操作可以将数据从源系统的模型转换为目标数据仓库的模型,如将关系数据库的表结构映射为星型模型或雪花模型。
数据转换是ETL过程中最为重要的一步,它确保了数据在目标数据仓库中的一致性和准确性。
最后,ETL过程的最后一步是数据加载(Load)。
在这一步骤中,数据会按照目标数据仓库的模型被加载到仓库中。
根据加载方式的不同,可以将数据加载为全量加载或增量加载。
全量加载是指将所有数据一次性加载到仓库中,而增量加载是指只将自上次加载以来更改或新增的数据加载到仓库中。
ETL技术规第1章.ETL设计规ETL设计规主要应用于ETL编码的前期工作。
由于ETL全过程是面向数据的,主要工作为数据的抽取(Extract )、转换(Transform )、装载(Loading),正确界定所涉及到的数据围和应当应用的转换逻辑对于后续的编码工作非常重要,这些数据关系的确定,我们称之为Mapping (数据映射)。
正确定义数据映射关系是ETL成功实施的前提,一个完善的Mapping应该包含以下几个部分:1.1源数据集属性此部分应该详细描述数据源的相关属性,包括:实体名称一一含数据来源名称(DSN、所有者等信息;字段名称--- 英文名称;字段简述--- 中文名称,如为参数信息应该有相关取值解释,如性别字段(1: 男;2:女;0:不详)类型一一字段类型,含长度和精度信息;非空属性一一字段是否可以为空;1.2目标数据集属性此部分应该详细描述目标数据集的相关属性,包括:实体名称一一含数据来源名称(DSN、所有者等信息;字段名称英文名称,建议根据字段含义来命名,而不是简单用拼音来定义字段(此部分由负责设计数据集的人员控制);字段简述中文名称,对于保留字段应该给出默认值;类型一一字段类型,含长度和精度信息;非空属性一一字段是否可以为空;1.3 ETL规则主要描述ETL各个环节的转换规则,包括:数据源过滤规则——描述从源数据集获取数据过程中过滤掉记录的规则;关联规则——当源数据集为多个时,描述相互之间的关联关系;列转换规则一一描述源数据集到目标数据集的字段间的转换规则;此规则非常重要,要清晰描述字段间的逻辑关系,包括业务逻辑;目标数据集更新规则一一描述目标数据集的更新策略,包括更新机制和更新频度,如“每日全量更新”、“每周增量更新”等;ETL作业列表一一由于ETL所开发的作业之间包含一定的业务逻辑和编码逻辑,所以调度过程中应遵循一定的逻辑顺序,此部分主要用来明确调度的顺序,包括:作业名称实现Mapping的作业名称,包括该作业功能描述;调度顺序一一用序号或者是流程图模式描述作业的调度顺序,需要综合考虑业务逻辑、编码逻辑以及系统资源等多方面情况,在保证业务逻辑和编码逻辑的基础上,通过控制调度,最大限度地合理利用系统资源;参数列表——列举每个作业中所使用的参数,不同作业中的相同参数最好使用相同的名称,便于调度时进行控制。
ETL 技术方案引言ETL(Extract Transform Load)技术是在数据仓库和商业智能领域中广泛使用的一种数据集成和处理技术。
它主要用于从多个数据源中提取数据,对数据进行转换和清洗,最后将数据加载到目标数据仓库中。
本文将介绍一个基本的 ETL 技术方案,以帮助解决数据集成和数据处理的问题。
技术方案数据提取(Extract)数据提取阶段涉及从数据源中获取所需数据的过程。
这些数据源可以是各种异构的系统,包括关系型数据库、日志文件、API 接口、第三方数据服务等。
在进行数据提取时,可以采用以下方法:•批量提取:定期按照一定的时间间隔,通过批量作业的方式提取数据。
•增量提取:根据数据源的变动情况,仅提取最新的增量数据。
•实时提取:通过监听数据源的变动,实时获取数据。
数据提取的方式可以根据实际需求进行选择。
一般而言,批量提取和增量提取是最常见的方法。
数据提取完成后,将数据存储为中间文件或者直接加载到转换阶段。
数据转换(Transform)数据转换是将从数据源中提取的数据进行清洗、整合、格式化等处理的阶段。
在数据转换阶段,可以执行以下任务:•数据清洗:去除重复数据、处理缺失值、规范化数据格式等。
•数据整合:把来自不同数据源的数据整合到一个一致的数据模型中。
•数据变换:根据业务需求对数据进行加工转换,例如计算指标、拆分字段等。
•数据筛选:根据一定的过滤条件,筛选出需要的数据。
数据转换一般使用 ETL 工具进行,例如 Apache Spark、Talend、Informatica 等。
这些工具提供了丰富的转换函数和图形化界面,便于开发人员进行快速开发。
转换阶段的数据处理逻辑可以通过编程语言(如 SQL、Python、Scala 等)进行编写。
数据加载(Load)数据加载是将转换后的数据加载到目标数据仓库中的阶段。
目标数据仓库可以是关系型数据库、NoSQL 数据库、云存储等。
数据加载的方式可以分为以下两类:•全量加载:将所有转换后的数据一次性加载到目标数据仓库中。
数据处理与ETL技术数据处理是指对原始数据进行整理、清洗、转换和计算的过程,以便能够更好地进行分析和应用。
而ETL技术(Extract、Transform、Load)则是一种用于从不同数据源中提取数据、转换数据格式以及将数据加载到目标系统的一种处理方法。
本文将介绍数据处理的基本概念、ETL技术的原理和应用场景,并探讨其对企业决策和业务发展的重要性。
一、数据处理的基本概念数据处理是指将原始数据转化为有用信息的过程,通过对数据的整理和清洗,提高数据的质量和准确性,并将数据转换成适合分析和应用的形式。
数据处理的过程包括数据的提取、转换和加载等环节,其中ETL技术起着关键的作用。
二、ETL技术的原理1. 数据提取(Data Extraction):ETL技术通过连接各种数据源,如数据库、文件等,将需要的数据提取出来。
数据提取可以通过SQL查询、文件读取等方式进行。
2. 数据转换(Data Transformation):在数据提取之后,需要对数据进行转换,使其符合目标系统的要求。
数据转换可以包括数据清洗、数据合并、数据计算、数据格式转换等操作。
3. 数据加载(Data Loading):数据转换完成后,将数据加载到目标系统中,使之能够被业务系统和分析工具所使用。
数据加载可以分为全量加载和增量加载两种方式,根据需求选择合适的加载方式。
三、ETL技术的应用场景ETL技术在企业的数据处理和分析中具有广泛的应用场景,以下列举几个典型的应用场景:1. 数据仓库建设:ETL技术可以用于从不同的数据源中将数据提取、转换和加载到数据仓库中,满足企业对数据集成和决策分析的需求。
2. 数据清洗和预处理:企业内部的数据通常存在一定的不完整和不准确性,ETL技术可以帮助企业进行数据清洗和预处理,提高数据质量和准确性。
3. 数据迁移和同步:当企业需要将数据从一个系统迁移到另一个系统时,ETL技术可以帮助实现数据的迁移和同步,确保数据的完整性和一致性。
ETL设计开发规范⽂档ETL设计说明书错误!未找到引⽤源。
⽬录1.概述 (5)2.ETL开发策略 (7)3.ETL系统架构设计 (8)3.1ETL整体框架 (8)3.2ETL系统逻辑架构 (8)3.2.1ETL系统的备份和恢复 (9)4.ETL应⽤框架设计 (10)4.1ETL应⽤架构逻辑图 (10)4.2ETL模式 (11)4.3数据抽取(Extract)和数据变换(Convert) (11) 4.3.1数据抽取(Extract) (11)4.3.2数据变换(Convert) (11)4.3.3数据分割(Split) (12)4.4数据转换(Transform) (12)4.4.1字段合并与拆分 (12)4.4.2赋缺省值 (12)4.4.3数据排序(Sort) (12)4.4.4数据翻译(Lookup) (12)4.4.5数据合并(Merge) (12)4.4.6数据聚合(Aggregate) (13)4.4.7⽂件⽐较(File Compare) (13)4.4.8其他复杂计算 (13)4.5数据加载(Load) (13)4.5.1Pre-Load (13)4.5.2Load (13)4.5.3Post-Load (14)4.6ETL进程和进程调度 (14)4.7管理功能(Management Interface) (14)4.8初始数据、历史数据和⽇常数据ETL (15)5.开发规范 (16)5.1中间⽂件 (16)5.2临时⽂件 (16)5.3BAPI参数⽂件 (17)5.4ETL程序 (17)5.4.1DataStage Project命名 (17)5.4.2DataStage中Job命名 (17)5.4.3DataStage中Stage命名 (18)5.4.4DataStage中Link命名 (19)5.4.5DataStage中Routine命名 (19)5.4.6DataStage产⽣的Abap程序命名 (19) 5.4.7DataStage中Table Definition命名 (20) 5.4.8Store procedure程序命名 (21)5.5Reject⽂件 (21)5.6系统⽇志 (21)5.7ODBC (22)5.8版本控制 (22)5.8.1ABAP程序及BAPI程序 (22)5.8.2DataStage Job及Routine (22)5.8.3Store Procedure程序 (22)5.8.4⽂档 (22)5.9ETL Job开发⽅法规范 (23)5.9.1TableDefinition的使⽤原则 (23)5.9.2Extract Job的开发原则 (23)5.9.3CS Job的开发原则 (24)5.9.4Load Job的开发原则 (24)5.9.5Gc和Ge Job的开发原则 (25)5.9.6关于存储过程及BAPI (26)6.系统环境 (27)6.1开发、测试和运⾏环境规划 (27)6.2⽂件⽬录 (27)6.3DataStage Manager⽬录层级规划 (28)7.ETL应⽤设计 (30)7.1应⽤模块架构 (30)7.1.1DataStage Server (30)7.1.2DataBase Server (31)7.2ETL Job设计 (31)7.2.1Schedule Job (31)7.2.2Dependence Job (36)7.2.3Maintance Job (36)7.2.4Group Job (38)7.2.5Component Job (40)7.3ETL环境参数 (42)7.3.1JobParams.cfg⽂件格式 (42)7.3.2参数说明 (42)7.4公共Routine设计 (43)7.4.1Transform Routine (43)7.4.2Before/After SubRoutine (47)7.5初始ETL程序 (48)8.ETL开发流程及管理 (49)8.1开发环境准备 (49)8.2开发步骤 (49)8.2.1⽇常数据加载: (49)8.2.2初始数据加载: (49)8.2.3历史数据加载: (49)8.3⾓⾊及责任 (50)9.ETL质量控制及错误处理 (52)9.1ETL质量控制主要实现⼿段 (52)9.2拒绝⽂件及拒绝处理策略 (52)9.3已⼊库源数据发⽣错误的应对策略 (52)附录I.ETL Mapping⽂件⽂档模板 (54)附录II.ETL Data Flow⽂档模板 (55)附录III.ETL Job Dependency⽂档模板 (56)1. 概述ETL系统的核⼼功能就是按照本设计说明书的架构,将数据由数据源系统加载到数据仓库中。
ETL设计实现ETL(Extract, Transform, Load)是一种数据仓库建设过程中常用的数据集成技术。
它的主要目标是从多个不同的数据源中抽取数据,经过一系列的转换操作之后,将数据加载到数据仓库中,以便进行数据分析和报告生成。
在ETL设计实现中,首先需要明确的是数据源和目标数据仓库,同时要了解数据源的结构和格式,以便进行后续的抽取和转换操作。
接下来,可以根据具体需求来设计ETL流程,并选择合适的工具和技术来实现。
ETL的设计实现主要包括以下几个步骤:1. 数据抽取(Extract):这是ETL过程的第一步,主要是从数据源中抽取需要的数据。
数据源可以是数据库、文件、Web服务等各种数据存储系统。
在抽取数据时,通常需要考虑数据源的连接、查询条件、字段选择等因素。
2. 数据转换(Transform):在数据抽取之后,需要对数据进行一系列的转换操作,以便满足目标数据仓库的需求。
数据转换可以包括数据清洗、数据整合、数据规范化、数据格式转换等。
在这一步中,可以使用一些ETL工具或编程语言来实现数据转换操作。
3. 数据加载(Load):数据加载是ETL过程的最后一步,即将转换后的数据加载到目标数据仓库中。
数据加载可以分为全量加载和增量加载两种方式。
全量加载是将所有转换后的数据一次性加载到目标数据仓库中,而增量加载是只将增量数据加载到目标数据仓库中,以提高数据加载效率。
在ETL设计实现过程中,还需要考虑以下几个方面:1.数据质量:在数据转换过程中,需要考虑数据的质量问题。
常见的数据质量问题包括缺失值、重复值、格式错误等。
可以通过数据清洗、数据验证等方式来提高数据质量。
2.并发和性能:在大规模数据加载情况下,需要考虑并发和性能问题。
可以采用多线程或分布式计算等方式来提高ETL的性能,并减少数据加载的时间。
3.错误处理与日志记录:在ETL过程中,可能会出现各种错误,如数据源连接错误、数据转换错误等。
需要对这些错误进行及时处理,并记录错误信息以便后续排查和修复。
ETL开发流程详细设计ETL(Extract, Transform, Load)是一种数据集成的技术,用于从不同的数据源提取数据,进行转换和加载到目标系统。
ETL开发流程的详细设计是为了确保ETL过程能够顺利进行,并保证数据的完整性和准确性。
以下是一个1200字以上的ETL开发流程详细设计的示例:3.数据转换:在数据转换阶段,需要对提取的数据进行转换和清洗。
数据转换包括数据整合、字段重命名、数据类型转换、数据格式化等。
此外,在此阶段还可以应用一些数据处理规则,如数据筛选、数据合并和数据分割等。
在此阶段,还需要考虑到数据转换的目标和规则,并确保转换的结果能够满足业务需求。
4.数据加载:在数据加载阶段,需要将经过转换的数据加载到目标系统中。
数据加载可以采用插入、更新或追加的方式进行。
在此阶段,需要考虑到目标系统的数据结构和数据规则,并确保能够正确地加载数据。
此外,还需要考虑到数据的完整性和一致性,并设计适当的错误处理机制。
5.数据验证和测试:在数据加载完成后,需要进行数据验证和测试。
数据验证包括对数据的完整性、准确性和一致性的验证。
数据测试包括对数据加载过程和规则的测试。
在此阶段,需要编写相应的测试脚本和样本数据,并进行测试。
如果发现了问题或错误,需要及时进行修复和调整。
6.定时任务和监控:在ETL开发流程完成后,需要将ETL过程设置为定时任务,并进行监控。
定时任务包括定期执行ETL过程,并生成相应的日志和报告。
监控包括对ETL过程的监控和异常处理。
在此阶段,需要设计适当的定时任务和监控机制,并确保能够及时发现和解决问题。
7.文档编写和维护:在ETL开发流程完成后,需要编写相应的文档,并进行维护。
文档包括ETL的设计文档、数据字典、操作手册和维护记录等。
在此阶段,需要详细记录ETL开发过程和设计思路,并保持文档的更新和维护。
综上所述,ETL开发流程的详细设计包括需求分析和设计、数据提取、数据转换、数据加载、数据验证和测试、定时任务和监控、文档编写和维护等阶段。
数据库设计中的ETL技术随着信息技术的快速发展,数据管理和处理方面的需求也越来越高。
作为数据库设计中的重要组件,ETL成为了建立高效、稳定、可靠的数据管理系统的核心技术之一。
本文将从什么是ETL、ETL的原理和过程中具体的技术等方面分析并探讨ETL技术在数据库设计中的应用。
一、什么是ETLETL技术是指将数据从多个不同的数据来源(Extract)、经过转换(Transform)并载入到另一个数据仓库或目的地(Load)中的过程。
ETL可以同时完成数据抽取、清洗和转换等操作,使数据的来源提取出来,通过转型之后最终导入到数据仓库中,实现数据的整合和统一管理。
二、ETL的原理和过程ETL的原理比较简单,他把数据从源系统到目标系统,主要的过程包括三个步骤:抽取(Extract)、转换(Transform)和加载(Load)。
1. 抽取(Extract)抽取主要包括源系统的连接和数据的抽选。
因此,要完成抽取,就必须清楚源的结构和格式。
数据抽取采用最少的方式来减小抽取数据所需的时间和资源消耗。
此外,数据抽取还必须考虑如何处理不同格式和数据量的文件。
2. 转换(Transform)转换是ETL过程中最重要的部分,目的是为了适应目标结构或规则,同步源系统和目标系统的数据格式及数据质量要求。
例如,数据合并、数据清除、分解、规约、建立聚合表和创建索引等步骤。
转换同时也关注数据的一致性、有效性和可重复性。
3. 加载(Load)数据加载是将处理后的数据存储到目标系统中的过程。
在设计的时候,需要考虑各种目标系统的限制,例如目标系统可以是仅读取,只能写入,存储空间、访问限制等。
完成加载后,需要检查数据的准确性和完整性,并确保所有数据都成功装载到目标系统。
三、ETL技术在数据库设计中的应用ETL在数据库设计中有着重要的应用价值。
当我们需要在任意多个系统之间交流数据时,可以运用这一技术将源数据统一管理。
ETL技术的运用可以缩短数据管理和处理时间,通过转型实现流程的自动化,实现更大规模的数据处理,同时也可以有效的支持数据挖掘和知识发现等相关的工作。
数据迁移技术方案设计数据迁移是将数据从一个存储系统迁移到另一个存储系统的过程。
数据迁移技术方案设计包括以下内容:迁移目标、迁移方法、迁移任务、迁移计划、数据验证和监控。
1.迁移目标:在设计数据迁移技术方案之前,我们需要明确迁移的目标,例如迁移至云存储、迁移至新硬件设备或迁移至新版本的数据库等。
不同的目标可能需要不同的迁移方法和工具。
2.迁移方法:常见的数据迁移方法包括物理迁移、逻辑迁移和ETL迁移。
物理迁移是将原始数据文件直接从源存储系统复制到目标存储系统。
逻辑迁移是将源数据的逻辑表示复制到目标存储系统,而不必考虑底层的物理表示。
ETL(Extract, Transform, Load)迁移是将源数据抽取、转换和加载到目标存储系统。
物理迁移方法适用于文件系统和硬盘驱动器之间的数据迁移,而逻辑迁移方法适用于数据库之间的数据迁移。
ETL迁移方法常用于将数据从不同的数据库管理系统中进行转换和加载。
3.迁移任务:迁移任务是指将要迁移的数据集合。
在设计迁移任务时,需要考虑以下因素:-数据量:确定需要迁移的数据量,以便安排合适的迁移时间和资源。
-数据类型:确定需要迁移的数据类型,例如文本、图像、音频等。
-数据关联性:确定需要迁移的数据之间的关联性,以便安排合适的迁移顺序。
4.迁移计划:迁移计划是指将迁移任务划分为一系列具体的迁移步骤和时间表。
在设计迁移计划时,需要考虑以下因素:-迁移顺序:确定迁移任务的顺序,以最小化对业务运营的影响。
例如,优先迁移关键业务数据,后续再迁移非关键数据。
-迁移时间:根据迁移任务的数据量和复杂性,合理安排迁移时间,以避免对业务运营造成过多的影响。
-迁移资源:确定迁移所需的人力、硬件和软件资源,以确保迁移过程的顺利进行。
5.数据验证:迁移后的数据需要进行验证,以确保数据完整性和一致性。
在设计数据验证策略时,可以采用以下方法:-数据对比:比较源数据和目标数据之间的差异,以确保数据的一致性。
ETL技术规第1章.ETL设计规ETL设计规主要应用于ETL编码的前期工作。
由于ETL全过程是面向数据的,主要工作为数据的抽取(Extract)、转换(Transform)、装载(Loading),正确界定所涉及到的数据围和应当应用的转换逻辑对于后续的编码工作非常重要,这些数据关系的确定,我们称之为Mapping(数据映射)。
正确定义数据映射关系是ETL成功实施的前提,一个完善的Mapping应该包含以下几个部分:1.1源数据集属性此部分应该详细描述数据源的相关属性,包括:实体名称——含数据来源名称(DSN)、所有者等信息;字段名称——英文名称;字段简述——中文名称,如为参数信息应该有相关取值解释,如性别字段(1:男;2:女;0:不详)类型——字段类型,含长度和精度信息;非空属性——字段是否可以为空;1.2目标数据集属性此部分应该详细描述目标数据集的相关属性,包括:实体名称——含数据来源名称(DSN)、所有者等信息;字段名称——英文名称,建议根据字段含义来命名,而不是简单用拼音来定义字段(此部分由负责设计数据集的人员控制);字段简述——中文名称,对于保留字段应该给出默认值;类型——字段类型,含长度和精度信息;非空属性——字段是否可以为空;1.3ETL规则主要描述ETL各个环节的转换规则,包括:数据源过滤规则——描述从源数据集获取数据过程中过滤掉记录的规则;关联规则——当源数据集为多个时,描述相互之间的关联关系;列转换规则——描述源数据集到目标数据集的字段间的转换规则;此规则非常重要,要清晰描述字段间的逻辑关系,包括业务逻辑;目标数据集更新规则——描述目标数据集的更新策略,包括更新机制和更新频度,如“每日全量更新”、“每周增量更新”等;ETL作业列表——由于ETL所开发的作业之间包含一定的业务逻辑和编码逻辑,所以调度过程中应遵循一定的逻辑顺序,此部分主要用来明确调度的顺序,包括:作业名称——实现Mapping的作业名称,包括该作业功能描述;调度顺序——用序号或者是流程图模式描述作业的调度顺序,需要综合考虑业务逻辑、编码逻辑以及系统资源等多方面情况,在保证业务逻辑和编码逻辑的基础上,通过控制调度,最大限度地合理利用系统资源;参数列表——列举每个作业中所使用的参数,不同作业中的相同参数最好使用相同的名称,便于调度时进行控制。
第2章.ETL开发规ETL项目的开发往往是多人团队开发模式,由于周期较长,期间难免会出现开发人员交替现象。
无论是开发过程中的人员交替还是从开发到系统运营之间的转换,都需要良好的交接。
为保证项目开发各个时期的平稳过度及顺利交接,在开发过程中,应该遵循一定的开发规。
主要包括:✧命名规✧结构规✧代码封装规2.1命名规2.1.1作业命名规ETL是一个复杂的工作,数据仓库的建设一般会花费70%以上的工作量在ETL上面,而且这是一个细致活,任何一点小的错误都有可能造成后续工作的出错和失败;此外,数据仓库需要不断的更新维护,相应的ETL程序也需要进行相关的更新维护,所花费的成本也很大。
一个好的命名规,能够使ETL的程序更清晰易懂,很好地避免了开发过程中出错;同时更好的可读性,也极大地减低了ETL程序的更新维护成本。
作业命名规则:[JOBTYPE][DESCRIPTION][SEQNUM]JOBTYPE:作业类型DESCRIPTION:有效的描述信息SEQNUM:作业的编号。
由于一定的原因,有可能需要拆分作业数据多次加载数据,这个编号就可以区分加载。
如果一次加载可以成功的话这个编号就不需要了。
2.1.2作业部命名规对于作业部命名,应该遵循代码的可读性与可传递性原则,命名规则:[Function][Description]Function:表示用途,Ex:抽取,Create:创建,Ld:装载,Lookup:查找等Description:有意义的描述,比如数据库表名,文件名等。
2.1.3作业注释规ETL开发过程往往要经历一个较长时间段,为了便于团队开发和后期维护,除开发设计文档要齐全外,还应该在作业设计界面中适当加注释信息,主要包括作业功能说明、所属模块、开发时间、开发人员等信息。
2.2结构规2.2.1作业目录组织结构对于ETL PROJECT而言,我们需要划分清晰的目录结构,根据一定的规则将作业组织起来,这样无论是对ETL设计人员,运行人员,维护人员,都有很大的帮助。
目录结构划分遵循以下原则:1.体现作业的依赖关系。
2.体现作业功能。
3.独立放置二次开发作业。
2.2.2模块化结构ETL按照处理逻辑分为E阶段(Extract)、T阶段(Transformer)和L阶段(Loading)。
E、T、L阶段可能分处不同的服务器上,需要跨网络运行,他们之间的配置情况可能存在较大的差异,而多数ETL设计的处理机制是串行运行机制,基于数据行处理。
如果E、T、L的过程同时运行,那么整体的处理能力应该是三个环节中效率最低的那个环节的处理水平。
如果我们将三个环节的设计分开,实行模块化流程处理,即E环节、T环节、L环节均设计成可独立运行的模块,那么在整个处理过程中,将可以最大限度发挥功效,不会因为串性处理机制而相互制约。
另外,模块化的流程设计,对于开发阶段的调试以及维护阶段的出错处理都提供了良好的辅助作用。
第3章.ETL维护规3.1日志检查3.1.1日志文件报告ETL提供日志监测和报告功能。
报告分汇总报告和详细报告。
汇总报告报告容:作业总数,WARNING作业数,成功作业数,失败作业数,开始时间,结束时间等详细报告报告容:作业名称,开始时间,结束时间,运行状态等3.1.2作业状态排查在ETL管理控制台上,可点击进入查看作业更为详细的状态及出错信息,以便于维护更正。
3.2出错处理即使是经过严格测试的程序,在实际运行中仍然会因为种种原因而导致出错,根据ETL的处理逻辑,我们将错误分为以下三类:抽取错误:简称E(Extract)类错误转换错误:简称T(Transformer)类错误装载错误:简称L(Loading)类错误3.2.1E类错误这类错误发生在数据抽取阶段。
诸如数据库连接故障、网络资源不足等原因都可以导致此类故障。
由于此类错误发生时,数据还处于原始状态,未发生转换,对目标数据集也未产生任何影响,理论上可以看做是ETL处理未开始,因此处理此类错误相对简单,只需要排除故障原因后重新运行ETL处理即可。
3.2.2T类错误这类错误发生在数据转换阶段。
引发原因较多,既有环境资源故障的可能,也有设计逻辑缺陷的可能。
此类错误发生在ETL的中间阶段,应根据实际故障原因进行处理。
对于环境资源故障所引发的错误,只需要排除故障原因,重新运行ETL的T (Transformer)阶段和L(Loading)阶段即可。
对于设计逻辑缺陷所引发的错误,处理相对复杂——首先要定位错误并修正程序,同时要明确该错误是否涉及到数据源的抽取逻辑,如果未涉及到,则在修正逻辑后重新运行T(Transformer)阶段和L(Loading)阶段程序即可;若逻辑错误与数据源相关,则需要重新运行包括E(Extract)阶段在的整个ETL处理。
3.2.3L类错误这类错误发生在数据装载阶段,除环境资源故障原因外,最大可能性是需要装载到目标集的数据违反了目标数据集数据约束,如主键重复、非空字段出现空值、数据超长、类型不匹配等等。
因环境资源故障(网络故障等等)所引发的出错,处理简单,只需排除故障,将目标数据集恢复到装载前状态,重新运行L阶段的处理即可。
对于非环境资源所引发的问题,处理与T类错误类似:先定位原因,根据以往的经验,问题多数发生在T阶段,可能存在设计缺陷或者运行逻辑缺陷,需要对T部分的处理进行修正,并将目标数据集恢复到装载前状态,重新运行T阶段和L阶段的处理。
在上一章“设计规”里,我们强调了模块化的流程设计,将E阶段、T阶段、L阶段按流程分模块化设计,其实不仅仅是为了解决系统资源瓶颈问题,同时也是为了方便出错时进行处理。
在发生T类和L类错误时,由于各处理阶段设计相对独立,对于不同阶段的问题,只需要单独运行与该阶段相关的处理,而无须将所有处理过程都重新运行,大大减低重复运行的代价。
3.3备份、恢复与版本控制ETL系统的备份包括两个部分,即ETL运行环境备份及数据库的备份。
运行备份是指为保证如果运行的ETL系统崩溃时可以通过备份的ETL系统继续完成ETL的工作,为达到这个目的,应安装两台ETL环境,并建立相同的配置,其中一台处于运行状态,而另一台为待机状态。
每日在日常ETL完成后对运行环境的各文件进行备份,即将ETL的运行目录转储到外挂磁盘或外部存储介质。
而数据库的数据备份对于ETL非常重要,建议系统管理员每日做数据的完全备份,每天保留一个备份文件,建议至少保留7天。
ETL系统的恢复相应也包括两个部分,即运行恢复及数据恢复运行恢复是指当运行系统遇到严重故障如硬件故障、操作系统崩溃等无法及时修复时,启用备份的运行系统继续,通过将上一日备份的ETL环境恢复到待机系统,然后启动待机系统运行日常ETL。
数据库恢复通常两种情况下会用到,一种是数据库系统本身出了故障需要重新安装,这时需要将上一日备份的数据恢复到新的数据库环境中。
还有一种是数据加载过程中发现几天以前加载了某些有问题的数据,需要从之前某一天开始重新加载修正后的数据,这时需要将指定日的备份重新恢复到数据仓库中,然后顺序运行每日的日常ETL。
另外,开发过程中需要对所有ETL程序及文档进行相应的版本控制,跟踪开发过程中的修改,以保证开发版本的一致性及保持开发的连续性。