ECIFETL总体设计说明书V011209.docx
- 文档编号:24396654
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:18
- 大小:225.22KB
ECIFETL总体设计说明书V011209.docx
《ECIFETL总体设计说明书V011209.docx》由会员分享,可在线阅读,更多相关《ECIFETL总体设计说明书V011209.docx(18页珍藏版)》请在冰豆网上搜索。
ECIFETL总体设计说明书V011209
中国大地财产保险股份有限公司
企业级客户信息管理平台项目(ECIF)
ETL总体设计说明书
文档修订记录表
版本号
作者
操作
日期
说明
第1章引言
1.1编写目的
本文档是为明确中国大地保险ECIF系统的ETL架构设计而编制的,为中国大地保险ECIF项目的ETL系统开发后续工作提供指南。
ETL开发小组的将以本设计文档为基础,进行相应的功能概要设计和详细设计。
1.2预期读者
本文档的预期读者为用户代表、数据库设计人员、概要设计和详细设计人员、开发人员、测试人员和项目相关手册编写人员。
1.3定义
ECIF:
企业级客户信息管理(EnterpriseCustomerInformationFacility)。
ETL:
Extraction(抽取)、Transformation(转换)、Load(加载)。
Reject文件:
ETLPlus处理过程非法数据的输出文件;
ETLPlusJOB:
ETLPlus开发的JOB。
1.4参考资料
《大地保险数据质量评估报告》
第2章ETL设计目标和原则
2.1系统目标
建设一个实现ECIF项目的转换、加载和调度全过程的ETL平台。
2.2数据目标
按照模型的要求完成从源表到ECIF系统目标表的转换处理:
包含完整的获取系统需要的源表和字段,对数据进行清洗和加载,完成个人/企业客户的归并,从客户出发完成各类指标的分析,形成最终的ECIF模型的客户数据,并保证数据的正确性。
2.3功能目标
⏹数据加载:
将源系统提供的数据文件经过清洗后加载到ECIF系统的缓冲区中,供后续的转换工作使用;
⏹ETL调度:
ETL调度需要完成整个系统的依赖关系,转换过程无需人工干预;
⏹错误和异常处理:
提供ETL系统的错误及异常处理机制,增强系统的可靠性;
⏹提取公共模块:
以提取公共模块的方式提高ETL作业的复用性,降低ETL代码的维护难度;
2.4设计原则
提供ETL各模块的结构详细定义、实现详细逻辑、步骤等。
⏹考虑关键路径处理效率的最优
⏹考虑JOB的拆分整合关系
⏹考虑数据的重复利用
⏹考虑文件落地策略
⏹考虑JOB间依赖的适中
第3章开发工具选择
3.1开发工具比较
3.1.1ETLPlus
(1)优点:
⏹快速的ETL开发工具。
⏹可管理性强、可维护性强。
⏹支持并行运行(包括:
Job内部各Stage之间的并行;Stage在各节点的并行),未来实现网格技术后移植性强。
(2)缺点:
⏹除ETL外,要实现其它功能局限性非常强。
比如:
不支持循环。
⏹图形化组件拖拽/设置方式,难以自定义过程。
⏹若Job复杂,难以阅读,不利于扩展与维护。
⏹开发过程不便于调试与纠错。
⏹与底层操作系统的交互性方面较差。
比如:
调用OS的可执行程序只能通过ExecuteCommand组件进行封装调用,但是除了返回码外其它参数的传递较难实现。
(3)适用范围:
⏹单表(或多表的简单整合)的简单加工类需求,尤其是ETL方面。
3.1.2存储过程
(1)优点:
⏹最全面深入地利用数据库核心技术。
⏹过程处理/控制能力强。
⏹开发过程中调试与纠错方便。
⏹支持事务回滚。
(2)缺点:
⏹并行处理能力差,容易造成数据库服务器处理压力大
⏹需要自行编写代码实现。
(3)适用范围:
⏹需要数据库技术。
3.1.3UnixShell
(1)优点:
⏹本身属于操作系统的一部分,通用性和可移植高。
(2)缺点:
⏹局限性很强,不适合进行复杂的应用开发。
(3)适用范围:
⏹基于操作系统层面的一些简单特色应用。
3.2开发工具选择结论
基于以上对各种常用工具的分析,以下总结了在工具选择上的结论:
⏹任务的调度处理应尽量使用ETLPlus。
⏹数据抽取、数据清洗、复杂加工(计算)使用存储过程。
⏹基于操作系统的简单特色应用使用UnixShell。
第4章ETL开发流程设计
4.1数据分析
对于数据源的需求分析分为模型组的数据源分析和ETL组的数据源分析,二者的注重的分析点是不一样的。
ETL注重的是分析数据质量,及模型Mapping关系验证;而模型组注重的是数据体现出来的业务对象和业务逻辑。
本章重点关注ETL的数据源分析。
4.1.1.1分析方法
⏹依据源系统数据字典,分析字段是否存在脏数据情况,如数据唯一性检查,日期合法性检查,值域范围检查;
⏹依据大地保险ECIF系统模型,分析源系统数据是否满足表与表之间关系是否完全成立,如主外键关系检查;
4.1.1.2分析内容
⏹技术分析
Ø数据唯一性:
逻辑主键是否成立
Ø日期合法性:
非Date类型的日期是否合法
Ø非空格约束:
非空格数据质量
Ø非空值约束:
非空值约束是否成立
Ø值域范围:
结合字段含义,阈值范围是否成立
Ø最大值:
最大值是否可信
Ø最小值:
最小值是否可信
Ø记录总数
4.2测试流程
1、模型组提供的Mapping文档作为ETL开发的输入
2、ETL组需要利用测试数据对Mapping规则进行验证,并提出反馈意见
3、数据验证通过的Mapping规则需要经过Job的设计上的验证,是否满足性能及拆分上的需要
4、开发完毕的Job立即进行单元测试
5、整个过程迭代进行
4.3测试流程
1.测试之前需要设计测试案例,案例中应包含测试的功能点和测试方法;
2.由测试人员根据测试案例编写相应的测试代码,并执行测试代码;
3.测试人员根据测试结果,提出缺陷,并提交测试负责人;
4.测试负责人首先分析测试缺陷,判断是否是缺陷,以及缺陷的类型,并制定缺陷的轻重缓急。
5.测试负责人将分类汇总后的缺陷反馈给开发组,开发组负责人再将缺陷分配给相应的开发人员。
6.开发人员修复缺陷,并将查找到的问题原因和具体修改的内容反馈给测试负责人进行登记。
7.测试组重新组织测试。
4.4上线流程
1、评审不通过,需要重新准备上线方案和计划。
2、上线确认不成功,需要重新准备上线方案和计划,并再次评审,准备下次上线。
第5章ETL总体设计
5.1ETL总体逻辑架构
说明:
源系统:
指ECIF的数据源,包含承保类系统、电销系统、客服系统、理赔类系统、95590网站系统,这些系统含有本地的业务数据及客户资料,后续ECIF系统建设完成逐步从ECIF系统同步和查询信息。
抽取:
利用Oracle数据库存储过程把各个源系统文件落地成数据接口文件,供后续过程加载。
数据文件区:
用目录存放从各个源系统抽取落地的数据接口文件。
临时数据区:
oracle数据库临时表,主要用于存储来源于源系统获取的客户数据和业务数据。
辅助目标表:
oracle数据库辅助表,主要用于存储清洗完成的保单客户信息。
客户信息表:
oracle数据库客户表,主要用于存储归并或增强后的客户信息。
前端页面输出:
在经过清洗、归并完成客户信息后,搭建客户信息访问Web页面,供不同岗位和角色的人员进行客户信息的访问。
元数据管理:
ETL过程的元数据包括业务元数据和技术元数据,其中转换任务,存储过程、日志等都作为技术元数据进行管理。
元数据管理可以采用文件或数据库表的方式进行管理,此项目采用数据库表的方式进行管理。
5.2ETL关键任务设计
5.2.1.1数据接口文件的设定
数据接口文件存放在DAT目录下对应的工作日数据存储区(/ECIFETL/DAT/YYYYMMDD)中。
一个源表对应一个数据文件,文件的后缀名为dat。
对于文件暂存区的数据保存三个月的数据,超过三个月的数据手工清除;
5.2.1.2数据加载
数据加载主要利用oracle工具SqlLoad完成将经过处理的接口文件或数据库表的数据加载到中间表中。
为提高加载效率,一般在数据加载前将涉及到的表的索引删除,加载完成后重新创建删除的索引。
通常用到的数据加载方式有三种:
1)Insert:
只需要将文件所有数据完全Insert到目标表中。
2)Upsert:
需要对目标表同时做Update及Insert操作,根据primarykey,对于已有的记录进行Update操作,对于不存在的记录做Insert的操作,对于数据量大的表,由于此操作的效率非常低,可以采用先将数据文件分割为Delete文件及Insert文件,然后先将Delete文件中的记录根据primaykey对应从数据库中删除,然后再从Insert文件中将所有记录全部Insert到目标表中。
3)Refresh:
即将目标表的数据完全更新,一般的做法是先Truncate目标表的数据,然后再完全Insert要加载的记录;
基于本系统的特点,系统在全量加载过程中都采用第3种Refresh方式进行数据加载,在增量加载过程中采用第一种Insert的方式进行数据加载,临时表到辅助表的数据加载利用存储过程实现加载。
5.2.1.3数据清洗/变换
在本系统中数据的清洗/变换工作将在数据接口文件加载进临时表后进行,数据清洗/变换是指将数据源字段根据数据映像表的转换规则,转换为遵循ECIF系统标准的数据格式。
即对数据类型和数据格式进行转换,并对空字段赋予适当的缺省值,形成规整的数据结构。
这个工作主要在数据接口文件加载到辅助表的过程中及在加载到辅助表后进行处理,符合清洗和转换规则的数据加载到辅助数据表中,不符合清洗和转换规则的数据输出到拒绝文件中。
数据清洗/变换的处理流程图:
数据清洗/变换的内容:
1)格式变换:
依据目标表,将源数据对应的字段转为目标字段的指定格式。
如将日期转为yyyy-mm-ddhh:
mm:
ss;
2)赋缺省值:
在目标表中定义取值不为空的字段在源数据对应的字段可能存在没有取值的记录,这时根据业务需要将该记录写入到日志表中进行记录,由业务部门根据日志表记录检查并修补源数据,或者直接赋一个默认值;
3)类型变换,依据目标表,将源数据对应的字段类型转为目标字段的指定类型。
如将源系统中为整形的字段转换为字符型的;
4)长度变换,依据目标表,将源数据对应的字段长度转为目标字段的指定长度;
5)代码转换,依据目标表,将源系统的某些字段经过代码升级以后,将老的代码转换为新的代码等。
6)特殊字符处理,对源表的字符型数据中存在换行符等特殊的字符,应将这些特殊字符在进入文件缓存区之前替换掉。
清洗完毕加载到辅助表后,会用SP进行进一步的清洗和保单级的增强。
5.2.1.4数据转换
数据转换是按照目标表的数据结构,对一个或多个源数据的字段进行翻译、匹配、聚合等操作得到目标数据的字段。
生成与辅助表一一对应的指标数据并存放到辅助表中。
数据转换主要内容:
1)完成源与目标的映射关系。
2)多个数据文件的关联与匹配。
对应ECIF目标表字段的数据源有多个,需要将多个数据源关联并进行匹配最终的临时表字段。
ECIF的数据转换主要在Oracle数据库服务器进行,根据模型的和ETL处理特点,进行数据处理和转换。
通过存储过程实现数据库临时区到数据辅助表的转换过程。
5.3ETL调度控制设计
整个系统的逻辑关系比较复杂,暂考虑用ETLPlus进行ETL作业的调度,为了提高系统的可管理、可使用、可运维性,需要设计合理有效的调度控制程序。
本系统的调度控制的执行流程如下图所示:
5.3.1实现目标
最终要达到整个ETL过程的自动化的,且中间每个环节之间根据需要设定依赖或自动的触发机制(时间或标志文件)。
5.3.2触发动作
可分为手工触发或自动触发两大类,自动触发又可分为:
时间触发、文件触发等,本系统采用手工触发方式。
5.3.3检查运行环境
根据后续任务的要求,检查系统运行的必要条件。
如数据接口文件是否到达、数据库是否可用、机器性能是否满足等。
5.3.4执行作业
本系统共有两大类作业:
SqlLoadJOB和SP。
SqlLoadJOB主要用来完成数据清洗和加载工作;SP主要用于处理复杂逻辑业务工作。
调度程序调用单个作业的基本流程:
5.3.5调度配置
整个调度的作业执行的顺序和依赖关系基于工具ETLPlus完成。
在后续设计和开发工作中需要重点关注完成作业的封装和作业配置。
作业配置应包含以下内容:
⏹作业描述:
对作业功能等进行描述,不超过64个汉字(128个英文字符);
⏹作业类型:
SqlLoadJob、SP、可执行文件等;
⏹所属作业组:
该作业所属作业组;
⏹触发作业:
说明该作业完成后触发的后续作业。
⏹作业启动时间:
设定作业的启动时间,或根据设定的触发条件刻启动该作业
5.3.6日志记录
整个调度过程会记录每个任务执行的开始时间、结束时间、执行的状态等。
同时要求,每个任务依据情况详细记录其日志。
管理人员可通过日志监控整个ETL调度的执行状态。
5.3.7系统参数
为了提高ETLJOB的灵活性,需要设置一些公共的环境参数供ETLJOB在运行过程中动态使用,这些参数在运行过程中可以由运行人员根据实际的运行情况进行调整。
以下是JobParams.cfg文件中的部分参数定义列表
参数名称
说明
WORKDATE
当前ETL数据日期,格式yyyymmdd
ETLDAT
EXF文件的存放目录
DBNAME
目标库的数据库名
DBUSR
目标库用户ID
DBPWD
目标库用户密码
5.4ETL备份&恢复设计
5.4.1程序备份
⏹手工定期进行程序备份、数据库存储过程备份、SqlLoadProject备份
5.4.2数据文件备份
⏹源系统抽取后的数据接口文件保留前三次的接口文件备份。
超过三次以前的接口文件手工删除或手工备份到磁带。
5.4.3日志文件备份
⏹手工定期进行日志文件备份
5.5ETL测试设计
5.5.1ETL功能测试
5.5.1.1模块功能
功能模块
功能子模块
测试指标
测试方法
ETL数据处理
源文件监控与检核
文件是否正常
是否遗漏文件
记录数及文件大小是否符合
可在较小的时间窗口内轮询,分批放入测试文件
数据清洗
清洗是否成功
是否有干净数据被清洗
性能是否满足要求
针对不同清洗规则,选择若干数据文件进行测试
ETL监控
文件监控
是否有遗漏文件未监控
作业监控
能否正确捕捉作业的执行状态,统计信息是否正确
资源监控
资源是否能有效获取
数据库监控
数据库信息是否能有效获取
5.5.1.2调度功能
测试内容
测试指标
测试方法
ETL调度
是否正确执行调度任务,参数传递是否正确,Job是否按照预定顺序执行,调度序列是否正确。
作业之间的依赖关系是否正确
5.5.2数据准确性测试
5.5.2.1准确性测试的原则
⏹模型对数据处理的要求,体现在Mapping文档中,应当依据Mapping文档对处理的诠释,进行数据准确性测试
⏹需制定完整的指标检核体系,应当依据这套检核指标体系进行数据准确性测试
5.5.2.2准确性测试的方法
数据准确性主要由用户测试进行保证,用户测试的方法请参考用户测试相关文档
5.5.3性能测试
5.5.3.1测试方法
⏹统计各作业的运行时间,调整作业依赖关系及串并行关系
⏹监控主机资源、数据库资源利用状况
5.5.3.2调优原则
⏹充分利用主机资源
⏹调整数据库参数配置
⏹调整SqlLoadJob开发逻辑
⏹调整SP开发逻辑
第6章ETL开发规范
6.1ETL程序开发规范
为了提高ETL的开发质量,降低开发周期,增强代码的可重用性和易读性,使程序便于维护,开发人员间便于交流和协作,需指定ETL的开发规范,在本项目中包含ETLPlus、OraclePL/SQL、Shell三种开发规范,请参看相应文档。
6.2目录及权限定义规范
开发、测试环境的目录如下:
说明
/ECIFETL
ECIF项目ETL根目录
/ECIFETL/DAT/WORKDATE
存放ETL过程生成的DAT文件
/ECIFETL/TMP
存放ETL过程生成的临时文件
/ECIFETL/Script
存放Script程序
/ECIFETL/PARA
存放参数配置文件
/ECIFETL/LOG
存放日志文件
数据库用户及权限安排如下:
用户
权限
ECIF_own
接口库和集市库所有者
ECIF_etl
接口库和集市库读写权限,主要供ETL过程使用
ECIF_dm
集市库读写权限,主要供分析过程使用
ECIF_qry
接口库和集市库只读读权限,供普通用户查询用
6.3文件格式定义规范
6.3.1日志文件格式定义规范
日志文件应记录作业的类型,作业运行的时间,日志信息的类型(一般信息,警告信息,错误信息)等,具体设计请参看详细设计文档。
6.3.2源数据文件格式定义规范
请参考《xxx.doc》。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ECIFETL 总体 设计 说明书 V011209
![提示](https://static.bdocx.com/images/bang_tan.gif)