ETL开发指南 ETL开发指南
1 开发流程
1.1 程序版本管理
1.1.1 保持版本唯一
所有程序源码在文档机上维护一套最新版本同时在测试环境和生产环境尽量不
留源码像Shell等无法进行编译的脚本性语言例外以保证测试环境和生产环境程
序的稳定。如果需要在测试环境和生产环境进行编译则在测试或上线完成后需要将
对应的源码删除。
开发测试阶段
程序的开发和修改只能在开发环境进行完成后上传到文档机进行管理。在测试
和上线时只能从文档机获取程序如果在测试环境进行测试时发现有程序需要修改的
需要记录下错误情况然后到开发环境进行修改。
上线阶段
在程序测试完成具备上线条件时将相应模块打包存放到发布区。以维持每一个
模块包历史版本的管理。
1.1.2 变更记录管理
程序变更记录通过两种方式进行同步管理
程序添加变更注释
在开发程序时需要在程序头添加开发人员、开发日期、程序功能等注释
每次对程序进行变更时要在程序头注释变更记录注释内容包括变更人
员、变更日期和变更内容说明同时还要在修改的程序行、或程序块前后
注释修改的人员、日期及内容说明以方便查询和修改。
在程序外部进行记录
对于Shell、Perl、SQC等公共程序的源码在后续工作中可能会牵涉到增
加功能或修改功能的情况需要建立一个公共程序变更管理Excel在该ETL开发指南 Excel中要需要记录所有公共程序和配置文件的功能并记录程序变更记
录以保证公共程序变更管理Excel中的变更记录同程序内部变更记录一
致。程序变更管理模板如下所示 公共程序管理模板.
xls
对于每个表开发的Shell、Perl、SQC、DataStage等非公共程序维持现有
的程序变更日志管理用于对每个表的上线时间进行管理方便以后可以
查找到哪些程序在哪天进行了上线。
1.1.3 组长及项目经理监管
由于人员有限不可能安排专人对版本进行管理只能由开发人员在文档机上对
各自修改的程序版本进行控制。但版本进行管理的工作会比较枯燥并且会增加人员
工作量在管理初期可能会有人员重视程度不够但为了保证版本的正确性需要各
模块组长对所有程序的变更进行监督管理项目经理不定时进行抽查。 ETL开发指南 1.2 开发、测试及上线流程 测试人员集成
测试
上线人员进行
上线
验证人员在程
序上线后进行
验证
开发人员开发
并进行单元测
试
文档机
获取程序、配置、上线步骤及测试案例
测试人根据测
试标准提出测
试方案
角色开发人员
输入Mapping
电子版及纸质变更单
输出程序、配置、单元测试
案例、单元测试报告、
部署脚本及步骤
角色测试设计人员
接收Mapping
电子版及纸质变更单
输出集成测试案例
角色验证人员
职责在上线过程中监督上线人员按
照上线步骤正确执行并在上
线验证数据正确性
输出程序跟踪表
模型组提交变
更单
角色模型设计人员
输出Mapping
电子版及纸质变更单
数据库建表数据准备
集
成
测
试
问
题
相关人员审
核完善
角色上线人员
职责部署程序上线
输入程序、配置、上线部署
脚本及步骤
输出上线日志
测试人员提交测
试报告与上线步
骤进行审核
获取程序、配置、上线步骤
存放程序及配置等产出物
存放集成测试方案
安排上线并通
知相关接口人
角色测试人员
职责测试程序的正确性验证部
署步骤的正确性推动
输入程序、配置、测试案例、
部署脚本及步骤
输出集成测试报告
开发人员在完成开发、配置、部署脚本及步骤后要该将这部分输出物放到文
档机上采用文档机统一管理将文档管理贯彻到开发、测试、上线每一个环ETL开发指南 节中。
测试方案设计人员在开发人员开发前要按照测试标准会在后续的文档中提炼
出适合中信ODS项目的测试标准提出测试方案。将测试方案提交给相关人员
包括测试人员、开发人员等审查审查过程中相关人员要对测试内容的全
面性进行审查不断完善测试方案确认没有遗漏时再交给测试人员按照测
试步骤完成测试。
测试人员拿到测试方案后要严格按照测试步骤进行测试。测试过程中产生的
问题要记录下来并反馈给开发人员每一次修改都要同步文档机程序测试人
员只能从文档机上获取程序。
测试过程中按照中信银行运行部要求完成测试报告和上线步骤提交到运行
部审核通过后才能安排上线。。
上线人员进行上线时要严格按照上线步骤执行并对每一个步骤执行完后进行
验证。
验证人员要在上线人员上线过程中监督上线人员按照上线步骤正确执行当发
现上线人员操作错误时要及时提醒并在上线完成后验证数据正确性。
2 ETL目录规划及命名规范
2.1 ETL目录规划 目录规范.xls
2.2 ETL 任务命名
根据不同ETL JOB规则实现的差异(在向目标系统加载数据时有一对一、一对多、多对一
等情况对于不同的JOB其加载策略与抽取方式也不
相同),需要通过JOB的命名来进行约束
与规范以简化开发视图降低维护成本并对元数管理的标准化提供依据。数据加载策略
与抽取方式具体的命名见下面的列表; ETL开发指南 2.2.1 任务策略说明
数据库表处理策略
加策略编号 加载策略名称
T1 全表覆盖加载
T2 按日期删除后追加
T3 主表加载[del、insert、update]
T4 主表加载[insert、update]
T5 历史拉链表加载
T7 初始化加载
T9 定期同步加载
TA 特殊时点加载
TB 预处理
TC 年终结转
文件处理策略
处理策略编号 处理策略描述 处理手段
FO 文件预处理
F1 全量比对增量 DataStage
F2 增量表覆盖 File Copy
F3 全表覆盖 File Copy
处理周期
处理周期编号 描述 处理手段
P0 每日 调度平台
P1 每周[周末] 调度平台、任务封装
P2 每旬[旬末] 调度平台、任务封装 ETL开发指南 P3 每月[月末] 调度平台、任务封装
P4 每季[季末] 调度平台、任务封装
P5 半年[6.30] 调度平台、任务封装
P6 年末 调度平台、任务封装
P7 初始化一次性加载 调度平台、初始化手工
P8 错误重跑时加载
P9 定期同步时加载
PA 年初
PB
历史数据追溯时特
殊处理
PC 年终结转
入库卸数处理策略
编号 描述 处理手段
T1 datastage入FDM库同时卸数 DataStage
01 datastage入SDM库同时卸数 DataStage
02 datastage入SDM库 DataStage
03 datastage直接从数据库卸数 DataStage
04 datastage关联删除记录后卸数 DataStage
08 SQC入库 SQC
2.2.2 任务命名规则
源系统中导出数据在ODM和SDM层的字段级映射基本是贴源的处理考虑到ODM
层、SDM层两层的目标表命名已经将源表名拼接上“数据层次”和“来源系统”因
此对于不同的数据层次的JOB命名有所区别具体见下面的描述
ETL加工 ETL开发指南 数据层次 命名规则 处理策略命名参考
ODM $处理周期_$处理策略_$目标表名
参考“文件处理策
略”命名
SDM[文
本]
$处理周期_$目标表名
例如P0_S_CI_CIFCUSAA
SDM[入
库]
$处理周期_$处理策略_$目标表名
例如P0_01_S_CI_CIFCUSAA
FDM
$处理周期_$处理策略_$目标表名
[注意如果一张目标表来自多个系统的源表任
务需要按源系统进行划分因此这种情况需要单
独按源系统为后缀进行命名非此类任务无需跟
源系统作为后缀]
例P0_T3_F_NI_EBE_EXLC_BILL
如平台客户表来源于13个源系统的客户主档表,
平台客户表的处理的任务将划分为13个任务
例
p0_T3_f_ods_cust_cb
p0_T3_f_ods_cust_cg
p0_T3_f_ods_cust_cp
?
参考“数据库表处理
策略”和源系统编
号
命名
数据卸载
数据层次 命名规则 处理策略命名参考
ODM $处理周期_$处理策略_$目标表名 参考“数据卸载处理策略”命名
SDM $处理周期_$目标表名 参考“数据卸载处理策略”命名
FDM $处理周期_$处理策略_$目标表名 参考“数据卸载处理策略”命名、 ETL开发指南 2.3 ETL文件命名
ETL过程中使用的输入和输出文件都采用小写
2.3.1 源系统接口文件命名
<增全量标志>_<源系统简称>_<表名>_数据日期.dat
增量/全量标志
取值为增量“i”全量“a”
数据日期
8位的数据日期例如20080101
2.3.2 各层落地文件命名
<表名>_<数据日期>.dat
2.3.3 数据加载RJ文件命名
rjd_ods_<数据层次>_<文件名称>_<数据日期>.dat
2.3.4 数据清洗Reject、Warnning文件命名
公共清洗Reject文件命名
文件命名规则rej_<组件类型>_<系统简称>_<数据层次>_<表名称>_<数据日
期>.dat
命名样例rej_ct_ods_s_xxxxx_20080627.dat
组件类型
标识本Reject文件是从哪个公共组件中产生的。组件类型统一采用2位编码
ct代码转换组件
pc公共清洗组件
kc主键检核组件 ETL开发指南 公共清洗warning文件命名
文件命名规则rej_<组件类型>_<系统简称>_<数据层次>_<表名称>_<数据日
期>.dat
文件名中的字母统一采用小写。
如wrn_pc_ods_s_xxxxx_20080627.dat
组件类型
标识本Warning文件是从哪个公共组件中产生的。组件类型统一采用2位编码
ct代码转换组件
pc公共清洗组件
gl总分核对组件
2.4 环境说明
2.4.1 ETLPLUS
登陆地址 II系统用户 ODS系统用户
开发环境 http://22.5.246.8:9080/etlplus-zx/ iiuser adminetl
测试环境 http://22.5.246.5:9080/etlplus-zx/ iiuser adminetl
生产环境 http://21.244.18.51/UA iiuser adminetl
2.4.2 II环境
服务器IP 数据库 实例名 程序目录 用户
开发环境 22.5.228.91 iidb db2inst1 /etlplus/IIDB iiuser
iidbb db2inst3 /etlplus/IIDBB iiuserb
测试环境 22.5.234.18 iidb db2inst1 /etlplus/IIDB iiuser
iidbb db2inst3 /etlplus/IIDBB iiuserb
生产环境 21.244.18.1 iidb db2inst1 /etlplus/IIDB iiuser ETL开发指南 iidbb db2inst3 /etlplus/IIDBB iiuserb
2.4.3 ETL环境
DS环境
服务器IP 工程名 用户
开发环境 22.5.228.91 ETL_ODS dsadm
测试环境 22.5.234.2 ETL_ODS dsadm
生产环境 21.244.18.11 ETL_ODS dsadm
21.244.18.13 ETL_ODS dsadm
数据库及程序环境
服务器IP 数据库 数据库实例 程序目录 用户
开发环境 22.5.228.88 odsdb db2inst1 /prog dsadm
测试环境 22.5.234.3 odsdb db2inst3 /prog dsadm
生产环境 21.244.18.7 odsdb db2inst1 /prog dsadm
存储环境
目录 目录说明
开发环境 /gpfs 存放源数据、ODM、
SDM、REJ、WRN及FDM下发数据
测试环境 /gpfs 存放源数据、ODM、SDM、REJ、WRN及FDM下发数据
生产环境 /gpfsii 存放源数据
/gpfsos 存放ODM,SDM,REJ,WRN数据
/gpfsf 存放FDM下发数据
3 ETL开发
在中信ODS项目 ETL包括II抽取数据、ETL程序处理及对应的ETLPLUS任务调度
如下图所示展示了ETL的主要内容及其在整个ODS系统中的位置。 ETL开发指南 页面 1ETL处理流程源系统核心
国际业务
个人网银
CIF
?ETL加工处理过程
数
据
分
发
平
台
下游应用
ETLPLUS 任务调度平台
数据质量平台
元数据管理平台预处理
ODM处理
SDM处理
FDM处理
FDM卸数
SDM入库
ODM文件
SDM文件
FDM文件
WRN、REJ文
件
ODS数据库
零售评级
风险计量
分行MIS
非现场审计
?
II
数
据
抽
取 由于ETLPLUS任务调度是结合II和ETL使用的在描述II和ETL会进行相关内容描
述不再单独描述。
3.1 II数据抽取
在新增加源系统和新增加表时需按照如下内容进行操作 ETL开发指南 新增表
II作业配
置及导入
配置表和
批次表配
置及导入
新增源系统
创建
Sever
配置就绪
表
重建就绪
表视图
配置系统
与DB关系
新建源系
统
3.1.1 新增源系统
3.1.1.1 创建Sever
当II新增加源系统时需要建立II服务器到远程数据库服务器的映射建立好的这
个映射我们称之为远程数据库服务器在II本地的server在这个server的基础上才可以
建立II数据库上表到远程数据库服务器上表的映射即创建昵称。
根据远程数据库服务器类型创建Server的过程是不同的如下所示。
3.1.1.1.1 AS400 II配置步骤
1、说明
$ip服务器IP地址。
$server服务名。
$usr用户名
$pwd密码
2、对400数据库进行编目
db2 catalog tcpip node node_dev remote $ip server 446 ostype OS400 ETL开发指南 db2 catalog dcs database $server as $server
db2 catalog database $server at node node_dev authentication dcs
3、连接iidb
Db2
connect to iidb
4、建立包装器
CREATE WRAPPER "IIDRDA" LIBRARY 'libdb2drda.a' OPTIONS( ADD DB2_FENCED 'N')
5、创建Server
CREATE SERVER $server TYPE DB2/ISERIES VERSION '5.4' WRAPPER "IIDRDA" AUTHID
"$usr" PASSWORD "$pwd" OPTIONS( ADD PUSHDOWN 'Y', DBNAME '$server',
DB2_MAXIMAL_PUSHDOWN 'Y')
6、创建对server的mapping
CREATE USER MAPPING FOR iiuser SERVER $server OPTIONS(REMOTE_AUTHID
'$usr',REMOTE_PASSWORD '$pwd');ff
3.1.1.1.2 db2配置步骤
1、说明
$ip服务器IP地址。
$server库名。
$usr用户名
$pwd密码
$ndnm 节点名称
2、对db2 数据库编目
db2 catalog tcpip node $ndnm remote $ip server 50000 ETL开发指南 db2 catalog database $server at node $ndnm
1、连
接iidb
db2 connect to iidb
4、建立包装器
CREATE WRAPPER "IIDRDA" LIBRARY 'libdb2drda.a' OPTIONS(ADD DB2_FENCED 'N')
5、创建server
CREATE SERVER $server TYPE DB2/AIX VERSION '9.5' WRAPPER "IIDRDA" AUTHID "$usr"
PASSWORD "$pwd" OPTIONS( ADD PUSHDOWN 'Y', DBNAME '$server ',
DB2_MAXIMAL_PUSHDOWN 'Y')
6、创建对server的mapping
CREATE USER MAPPING FOR iiuser SERVER $server OPTIONS(REMOTE_AUTHID
'$usr' ,REMOTE_PASSWORD '$pwd')
3.1.1.1.3 执行脚本
根据上述创建过程分别编写了一个执行脚本如下所示详细使用方法见“公共程序
管理模板.xls”
/etlpus/IIDBB/script/public/iicrt400.sh
/etlpus/IIDBB/script/public/iicrtdb2.sh
3.1.1.2 配置就绪表
II轮询程序在运行时会对就绪表进行轮询。就绪表分两种一种是源系统提供就需表
II创建对应的就绪表昵称一种是源系统部提供就绪表只提供抽数时间窗口II在时间
窗口的开始时间进行模拟就绪即定时向模拟就绪表中插入就绪记录。
就绪表配置文件$ETLPLUS_HOME/script/public/IIReadyBySys.conf用于确定II轮
询程序对哪些就需表进行轮询。对于源系统提供有就绪表的系统会根据源系统简称找到
对应的就绪表进行轮询对于源系统没有提供就绪表的系统轮询程序会默认对模拟就绪ETL开发指南 表SRC_N_EXT_READY进行轮询。
就绪表配置文件如下所示
当新增源系统时根据源系统是否提供就绪表进行不同的配置
提供就绪表
创建II数据库到源系统就绪表的昵称昵称命名规范为源系统简称_TO_ODS
向就绪表配置文件$ETLPLUS_HOME/script/public/IIReadyBySys.conf追加源系
统简称与就绪表对应关系
不提供就绪表
创建模拟就绪作业并设定为每天定时运行
3.1.1.3 重建就绪表视图
由于分发平台会用到所有系统就绪的信息需要为其提供一个所有就绪表合并起来的
一个视图。同上节分析相同如果源系统提供有就绪表需要重建就绪接口表view将新
系统的就绪表加入进来如下脚本所示 Create_view.sql
3.1.1.4 配置系统与DB关系
由于II服务器上根据源系统不同的Codepage配置了多个DB因此在ETLPLUS知识库
中增加了一张源系统与DB的关系表以判断不同的源系统在哪个DB上进行抽取数据因
此当新增加源系统之后要根据源系统的Codepage设定对应的II数据库将这种关系插
入SYS_DB_RELATIVE表中如下图所示。 SYS_DB_RELATIVE.sql
3.1.1.5 新建源系统
在II进行抽取数据时源系统简称是抽取程序的一个参数因此当新增源系统时也需ETL开发指南 要在ETLPLUS中新增相应的系统信息以供配置抽取作业时使用。具体配置方法见ETLPLUS
用户手册。
3.1
.2 新增表
3.1.2.1 作业配置
3.1.2.1.1 单个作业配置导入
打开ETLPLUS主界面点击子系统-》II-》创建ETL作业出现如下图所示界面
点击子系统II再点击创建ETL作业
编辑填入相应作业名和作业属性信息关于各属性意义详细描述可参见ETLPLUS使用
说明点击确定即可。例如 ETL开发指南
需 要 说 明 的 是 作 业 属 性 程 序 名 称 填 写 方 法 为
“$ETLPLUS_HOME/script/public/SrcExtract.pl N tablename”后面的参数数据日期、
系统简称由ETLPLUS公共参数配置提供。
3.1.2.1.2 作业批量配置
作业批量导入时需要填写ETLPLUS 作业指定excel模板模板标准格式
II_PEIZHI.xls
II作业配置方法
ETL
服
务
器
名
称
子
系
统
作业
名
作业
描述
作
业
流
名
称
作
业
类
型
执
行
系
统
执行程序
名
数
据
层
次
主
题
时
间
类
型
运
行
周
期
类
型
运
行
周
期
属
性
运
行
策
略
D
S
工
程
名
数
据
源
系
统
作业
参数
名称
优
先
级
可
重
跑
标
志
II_
PRO
I
I
SRC_
N_CB
SRC_
N_CB
II_
EXT
2
I
I
/etlplus/
script/pu
9
I
I 0 9 0 0
C
B
DATA
_DT,
0 1 ETL开发指南 G _WHM
XA
_WHM
XA
_CB
_07
blic/SrcE
xtract.pl
N WHMXA
DATA
_SRC
配置模板表头有19列如图表显示下面分别介绍如何配置
1) ETL服务器名称
打开etlplus页面查看下面红框中的内容及时etl服务器名称
2) 子系统
对于II来说子系统是II
3) 作业名
II作业名称的格式是SRC_N_$系统_$表名$系统和$表名在配置中要换成实际的系统
名和表名
4) 作业描述
作业描述是对作业的简述可以写任何东西通常写的和作业名一样
5) 作业流名称
作业流名称一般是按源系统的作业个数进行配置一般2030个作业配置成一个作业流 ETL开发指南 如果是添加一个作业作业流从已有的作业流选择一个就可以了格式如
II_EXT_CB_07
6) 作业类型
作业类型有五种DSjob、存储过程、perl程序、可执行文件、虚拟节点它们在作业
批量配置的时候分别对应0、1、2、3、4对II作业来说作业类型选填2
7) 执行系统
对于II执行系统填II
8) 执行程序名
格式如/etlplus/script/public/SrcExtract.pl N WHMXA
它由三部分组成程序绝对路径/etlplus/script/public/SrcExtract.pl
参数N、表名。需要注意的地方是表名它是根据模型组提供的配置表中的源表名称来
确定的。配置的时候需要小心。
9) 数据层次
II没有数据层次配置为9
10) 主
题
II主题是II
11) 时间类型
时间类型配置为0
12) 运行周期类型
运行周期类型是根据模型组的ODM层mapping中表级映射说明sheet中的源表抽取方式
内容确定的对应模式如下
每日增量、每日全量-----------------------------9
月底增量、月中全量-----------------------------3 ETL开发指南 13) 运行周期属性
对于运行周期属性为日的配置成0
对于运行周期类型为月底配置成31、运行周期为月中配置为2-6
14) 运行策略
配置为0
15) DS工程名
配置为空
16) 数据源系统
作业所抽取的表属于那个源系统就配置为那个源系统简称如作业所抽取的表是核心的
表配置为CB
17) 作业参数名称
配置作业所需的公共参数II只配置两个
数据日期DATA_DT,
源系统简称DATA_SRC
18) 优先级
优先级从数字0开始一般配置为0,如果所需作业要比其他作业优先被执行就把数字
配为1
19) 可重跑标志
配置为1
3.1.2.2 数据抽取配置导入
3.1.2.2.1 配置表、批次表批量导入及昵称创建
与批量导入作业一样抽取配置批量导入也需要填写相应excel模板标准模板说明如
下 ETL开发指南 配置表模板说明
字段名称 字段描述
系统简称 系统标识两位如CB等
源表名称 源系统表名
代码页 源表所在数据库codepage
是否有效 是否有效1有效0无效
表类型
T对时间点敏感但可以从历史表获取数据的表流水类表
B对时间点敏感且不能从历史表获取数据的表余额类表
O: 对时间点不敏感表参数表、非账户表
增全量标志 日常处理的增全量标志A:全量,I:增量
卸数条件
数据抽取条件符合标准sql where语句规范
无条件置空条件中动态数据日期用标志{DATA_DT}代替
换行处理字段
名
换行符处理字段名多个字段时用“”分隔
历史表名称 源系统表所对应历史表有则填之无则留空
历史表代码页 历史表所在数据库codepage
历史表卸数条
件
数据抽取条件符合标准sql where语句规范
无条件设置空条件中动态数据日期用标志{DATA_DT}代替
目标表名
ODM层的源表名大部分是与配置表的源表名是相同的是为
防止一个ODM层的表要从多个源表取数的情况
作业名称 抽取的作业名称由 SRC_N_系统简称_目标表名 组成 ETL开发指南 Excel模板E:\Gessy's
Documents\中信ODS\数据抽取\配置表说明.xls
批次表模板说明
字段名称 字段描述
系统简称 源系统简称如CBCI等
主机名称 源系统主机名称用来区分主、备机
批次 源系统数据就绪批次如1、2??
表名 源系统表名
滞后天数 就绪中止时刻在0点以前赋00点以后赋1
库名 源系统表库名外围db2表填模式名
服务名 源系统表所在数据库服务名外围db2表填数据库名
起始时间 数据就绪起始时间
中止时间 数据就绪中止时间
Excel模板E:\Gessy's
Documents\中信ODS\数据抽取\批次表说明.xls
按照以上模板填写SRC_EXT_PRFL、SRC_BATCH_TAB两个sheet如 prfl25.xls
点击作业管理-》 ETL开发指南
点击 、 将文件上传到服务器导入方式选择正常处理点
击 即开始导入并创建nickname。
3.1.2.2.2 单独导入或更新抽取配置信息
点击配置管理-》源系统抽取数据管理
点击源系统抽取管理
ETL开发指南 点击 可以单条导入配置信息
在相应字段中填入内容即可添加新的配置信息。
3.1.2.2.3 更新单条抽取配置信息
点击配置管理-》源系统抽取数据管理
点击源系统抽取管理
找到需要编辑的配置记录如
点击 出现 ETL开发指南
编辑相应字段即可。
同样点击 即可删除此条数据抽取配置信息。
3.1.2.3 批次信息导入
新添加一个表的批次信息的时候需要把相关的信息按照批次表模板填好相关的信息然后
按照数据抽取配置导入的步骤把批次信息导入。
批次表模板批次表模板.xls
ETL开发指南 3.2 ETL
3.2.1 ETL开发内容 ETL部分的开发主要分为ETL程序的开发和ETLPLUS作业调度配置主要内容如下图所示。 ETL开发单表贴源处理
新增表
全表覆盖
按日期删
除后追加
Upsert(U
、I、D)
Upsert(U
、I
ETL作业
配置
不定期同
步配置
源文件配
置
新增源系统
新建系统
添加系统
关系
增加对应
ODM,SDM
子系统
新建作业
流ETLPLUS作
业
配
置ETL程
序
开
发特殊处理
机构撤并
历史拉链
表
客户整合
不定期同
步
根据ETL日常变更表的处理方式进行分类其中程序部分只列出了需要开发的程序详细
开发方法见ETL程序开发章节对应内容。
3.2.1.1 全表覆盖
程序部分:
ODM链接程序
SDM清洗转换程序 ETL开发指南 FDM入库+卸数程序
作业部分
ODM作业
SDM清洗转换作业
FDM入库+卸数作业
FDM生成就绪文件作业
ODM、SDM生成就绪文件配置
源文件管理配置 全表覆盖.xls 源文件管理配置.xl
s
3.2.1.2 按日期删除后追加
程序部分:
ODM层链接程序
SDM层清洗转换程序
SDM层入库+卸FDM数程序
FDM层数据加载处理程序
程序部分:
ODM层作业
SDM层清洗转换作业
SDM层入库+卸FDM层数据作业
FDM层数据加载处理作业
FDM生成就绪文件作业
ODM、SDM生成就绪文件配置
源文件管理配置 按日期删除后追加.
xls源文件管理配置.xls ETL开发指南 数据备份程序部分:
调用/prog/script/public/TAB_EXP.sh公用程序无须单独开发程序
数据备份作业部分:
FDM层数据备份处理作业配置 备份作业配置.xls
3.2.1.3 Upsert(U、I、D)
程序部分:
ODM层链接程序
SDM层清洗转换程序
SDM层入库+卸FDM数程序
FDM层日常数据加载处理程序
FDM层不定期同步数据加载处理程序
作业部分
ODM层日常作业
ODM层不定期同步作业
ODM层日常+不定期同步控制作业
SDM层清洗转换作业
SDM层入库+卸FDM层数据作业
FDM层日常数据加载处理作业
FDM层不定期同步数据加载处理作业
FDM层日常+不定期同步数据控制作业
FDM生成就绪文件作业
ODM、SDM生成就绪文件配置
源文件管理配置
不定期同步配置 ETL开发指南 Upsert(U、I、D).x
ls 源文件管理配置.xls 不定期同步配置.xls
3.2.1.4 Upsert(U、I)
程序部分:
ODM层链接程序
SDM层清洗转换程序
SDM层入库+卸FDM数程序
FDM层日常数据加载处理程序
FDM层不定期同步数据加载处理程序
作业部分
ODM层作业
SDM层清洗转换作业
SDM层入库+卸FDM层数据作业
FDM层日常数据加载处理作业
FDM层不定期同步数据加载处理作业
FDM层日常+不定期同步数据控制作业
FDM生成就绪文件作业
ODM、SDM生成就绪文件配置
源文件管理配置
不定期同步配置 Upsert(U、I).xls 源文件管理配置.xl
s 不定期同步配置.xls
数据备份程序部分:
调用/prog/script/public/TAB_EXP.sh公用程序无须单独开发程序
数据备份作业部分:
FDM层数据备份处理作业配置 ETL开发指南 备份作业配置.xls
3.2.2 ETL程序开发 根据表的处理过程对各层程序的开发进行说明如下所述。 3.2.2.1 预处理层
预处理层主要是针对一些特殊的业务或数据规则而进行处理的目标是输出的数据能
够正确反映数据日期当天实际状况。
3.2.2.1.1 机构撤并
由于目前中信核心系统的账户号是与机构挂钩的机构撤并直接涉及到账号的变
更和挪账的操作。由于机构撤并是在每天业务完成后跑批时进行的而ODS抽取数据
是在跑批完成后才开始的这样抽取的数据就不是数据日期当天真正的机构信息这
就需要ODS在处理时将新机构还原为旧机构于是在每个相关表进行日常处理前加一
个预处理通过新旧机构对照表对新机构进行还
原。
3.2.2.1.2 特殊数据处理
在存贷款相关的一些表中存在开户日期大于数据日期的数据这一部分数据不
是正确的数据需要在预处理中将其过滤。这样可能会造成ETL处理后的数据和源系
统提供的数据存在记录数的差异。 ETL开发指南 3.2.2.1.3 取数时点纠正处理
由于取数的时候源系统已经换日得到的数据可能有误。比如会出现记录状态为
销户但是余额不为0的情况这个时候需要和上一天的数据关联把错误的记录状
态修改为上日的记录状态保证数据的真实性。
这种处理主要出现在存款主题和贷款主题相关的表具体的处理逻辑参考ETL设计
文档。
3.2.2.2 ODM层
对于ODM层任务主要的加载任务包括如下三种
全量比对增量[例如核心主文件、历史文件]
增量表覆盖[例如事件流水]
全表覆盖[例如代码参数表]
3.2.2.2.1 增量剥离
开发
全量比对增量部分使用DataStage处理可通过自动化生成工具生成 详见DataStage
自动生成工具使用说明文档。
调度
调度时需要配置如下参数
ODS_FILE_PATH
ODS_PROC_PATH
ODS_LAST_DT
ODS_WORKDATE
ODS_RJD_PATH
3.2.2.2.2 链接程序
开发
另两种方式使用Perl程序建立ODM文件到源文件的链接暂时为人工开发如下所示ETL开发指南 为程序模板 P0_F2_O_AB_BTHLOG.pl
需要修改的地方涉及源系统简称(AB)目标表名(o_ab_bthlog)及增全量标识(i/a)
如下图所示
调度
由于程序中引用的变量除了数据日期外都是在配置在变量配置文件Env.pm中配
置好的因此在调度时只需要配置数据日期参数{ODS_WORKDATE}即可。
3.2.2.2.3 拉链表增量剥离 拉链表是选择本表中比较重要的一些字段进行拉链其增量剥离也是只选择拉链表相关字段,
使用本表剥离后的增量文件同上个数据日期的文件进行二次比对。 开发
开发模板如下图所示 ETL开发指南
其中CP01和FT01都是将本表有但拉链表不需要的字段过滤掉同时FT01将增删改标识中
修改标识的记录过滤出来同上个数据日期的数据进行二次比对对于新增和删除标识的数据不再进
行比对直接与二次比对出的结果合并。 调度
调度时需要配置如下参数
ODS_FILE_PATH
ODS_PROC_PATH
ODS_LAST_DT
ODS_WORKDATE
ODS_RJD_PATH 3.2.2.2.4 不定期同步 ODM层的不定期同步是针对在日常通过全量比对获取增量及在后续处理时出现问题需要加
载一次全量进行数据恢复而进行的。在做不定期同步时需要取数据日期当天的全量数据但通过全
量比对后的增量会比源文件多一列增删改标识因此需要在源全
量数据文件后增加标识为新增的一
列。 开发 这个操作通过一个公共程序实现
/prog/script/public/TERM_ODM_DATAFILEPROCC.pl
在使用时只需要配置指定的参数
源文件名(不包含{_数据日期.dat})、目标表名、源系统、源文件路径、目标文件路径、数据日期。 调度
对于一个表而言其源文件名目标表名和源程序名是不会发生变化的因此在ETL开发指南 配置作业时可以将前三个参数作为程序的一部分进行配置剩余的三个参数源文件路
径、目标文件路径和数据日期需要作为作业参数进行配置。
3.2.2.2.5 主键重复清理数据
由于源系统中一些表在进行数据处理的时候会进行先删除后插入的操作导致II在抽
取数据的时候抽取到多条主键重复的记录在ETL进行处理的时候会有一定影响。针对此
类数据文件在ODM层进行处理时需要将主键重复的数据删除最后落地两个文件一
个是增量文件一个是当日全量文件删除重复数据后的文件。
开发 这个操作通过一个DS程序实现
00.Develop_Aera\Incr\ODM\CB\ P0_FR_O_CB_FNT_LCACA
两条主键相同的数据若想删除其中一条数据需要在数据中增加一列标志位通过
标志位来区别并删除重复的数据。
首先将当日数据文件 和 上一日数据文件删除重复数据后文件进行比较比对完
在数据文件中增加一列数据比对结果change_code
其次将主键重复并且change_code小的数据删除
最后落地两个文件一个是增量文件一个是当日全量文件删除重复数据后的文件。
处理过程如下图所示
图中各Stage具体说明如下 ETL开发指南 Stage1: Sequential file
功能读取昨日全量数据文件
设置说明本组件需要设置读取的昨日全量数据文件的存放路径如下图所示在
该组件的Properties选项卡中设置。
File= #ODS_PROC_PATH#/PREODM/CB/pre_lcaca_rd_#ODS_LAST_DT#.dat
读取文件的格式在该组件的Format选项卡中设置如下图所示
Final delimiter = end表示一行的结束 ETL开发指南 Record delimiter = UNIX newline表示记录结束符用UNIX字符换行
Delimiter String =\x03 表示文件中各字段的分隔符是^C
Null Field value =’’表示空值用’’表示
Quote = none 表示不用引号包围
Stage2: Sequential file
功能读取今日全量数据文件
设置说明本组件需要设置读取的今日全量数据文件的存放路径设置方法与Stage1
相同在该组件的Properties选项卡中设置。
File= #ODS_FILE_PATH#/#ODS_WORKDATE#/CB/a_cb_lcaca_#ODS_WORKDATE#.dat
因为此文件需要将reject输出所以需要在Properties选项卡中将Reject Mode设
置reject方式为Output这样就可以将reject输出如下图所示
此组件的文件格式设置与Stage1相同同样是在Format选项卡中进行设置。
Stage3: Sequential file
功能读取今日全量文件时产生的rej文件
设置说明本组件需要设置rej文件的存放路径设置方法与Stage1相同在该组件
的Properties选项卡中设置。
File=ODS_RJD_PATH#/RJD/#ODS_WORKDATE#/rjd_ods_o_o_cb_lcaca_#ODS_WORKDATE#.dat ETL开发指南 文件的格式设置与Stage1相同同样是在Format选项卡中进行设置。
Stage4: Change Capture Stage
功能将今日数据和昨日数据进行比较增加change_code字段记录比对结果其中
0:表示相同、1:表示新增、2:表示删除、3:表示修改。
设置说明本组件需要在Properties选项卡中设置key值和排序策略、key值及value
的选取策略以及输出策略如下图所示。
Key = ACACNO 表示字段ACACNO为Key值
Sort Order = Ascending 表示排序策略为升序
Change Mode = Explicit Keys, All Values 表示出了指定的Key以外其它字段
都作为Value值
Drop Output For Copy = False 表示保留before及after link中key值相同的行
Drop Output For Delete = False表示保留before link中有但是after link
中没有的key值所在的行
Drop Output For Edit = False 表示保留key值相同,value不同的行
Drop Output For Insert = False 表示保留before link中没有但after link中
有的key值所在的行 ETL开发指南 如需调整Before Link和After Link的顺序可以在Link Ordering中进行设置
如下图所示
为了提高效率还可以在Input选项卡的Partitioning中设置哈希分区如下图所示:
Stage5: Sort Stage
功能按照指定的Key值进行排列可以选择升序还是降序。
设置说明在Properties选项卡中设置Key值及排序方式本例中选择按照ACACNO
和ODS_CHG_CODE进行升序的排列如下图所示 ETL开发指南
Stage6: Remove Duplicates Stage
功能输入根据关键字分好类的有序数据去除所有记录中关键字重复的记录本
例中是将change_code小的记录去掉留下change_code大的记录。
设置说明在Properties中设置去重关键字和去重后留下的数据如下图所示
Key = ACACNO 表示选择ACACNO作为去重的关键字
Duplicate To Retain =Last 表示选择保留重复记录的最后一条即change_code较
大的记录保留。 ETL开发指南 在Input选项卡的Partitioning中设置哈希分区此时可以选择与前一个组件的分区
方式相同选择same如下图所示
Stage7: Filter Stage
功能根据不同的筛选条件可以将数据输出到不同的output link本例中将
change_code为1、2、3的记录输出到增量文件中
将change_code为0、1、3的记录
输出到当日的全量文件中。
设置说明在Properties选项卡中设置筛选条件、是否输入Reject等如下图所
示
Predicates中的设置表明当ODS_CHG_CODE=1或2或3时输出到0的Output LinkETL开发指南 中当ODS_CHG_CODE=0或1或3时输出到1的Output Link中不用输出Reject,如果
某一行满足多个筛选条件不要只输入第一个满足条件的。
Stage8: Sequential file
功能存放ODS_CHG_CODE=1或2或3的增量文件。
设置说明设置方法与Stage1相同在该组件的Properties选项卡中设置。
File=#ODS_PROC_PATH#/ODM/CB/o_cb_fnt_lcaca_#ODS_WORKDATE#.dat
Stage9: Sequential file
功能存放ODS_CHG_CODE=0或1或3的全量文件。
设置说明设置方法与Stage1相同在该组件的Properties选项卡中设置。
File= #ODS_PROC_PATH#/PREODM/CB/pre_lcaca_rd_#ODS_WORKDATE#.dat
调度
调度时需要配置如下参数
ODS_FILE_PATH
ODS_PROC_PATH
ODS_LAST_DT
ODS_WORKDATE
ODS_RJD_PATH
3.2.2.3 SDM层
SDM层是用来对ODM层生成的数据进行清洗转换的对于不符合清洗转换规则的会被
拒绝或发出Warning。该层使用DataStage进行处理包含三个自定义组件commonCheck(通
用清洗)组件、keyCheck(主键检核)组件和Etl_check_tran(代码转换)组件。
如下图所示 ETL开发指南
1.通用清洗按照配置好的清洗规则对数据进行清洗。包括空格清洗、空值清洗等。
2.主键检核检核是否有主键重复的数据。
3.代码转换包括代码转换、代码检核、组合检核。
检核规则通过配置表里面配置其中部分检核的内容已经不在SDM层中处理放在事
后检核但是功能仍然保留只要配置的规则里有还是可以进行检核。
开发
该部分使用DataStage 按照统一的规范进行开发可以使用自动化工具生成详见
DataStage自动生成工具使用说明文档。
调度
调度时需要配置如下参数
ODS_PROC_PATH
ODS_RJ_PATH
ODS_WORKDATE ETL开发指南 ODS_KCFILE
3.2.2.4 SDM层入库
对于有后续SQC处理的表需要先将SDM层经过清洗转换后的标准数据加载到SDM层
库表中。在入库过程中对于没有复杂逻辑处理的表可以直接在此部分进行卸数而对于
后续有复杂逻辑处理的要在FDM处理完成后从FDM库表中进行卸数。
因此对于无复杂逻辑处理的表在此可以通过自动化工具生成详见DataStage自动生
成工具使用说明文档。
3.2.2.4.1 不带卸数入库 开发
如下图所示
对于单一字段是没有做任何转换的只是数据形式由文本转换为表。图中
SQF_S_CB_LNP_LCMLA表示SDM处理完的数据DBA_S_CB_LNP_LCMLA表示表TR01没做任
何转换
只是为了方便以后扩展而保留。 调度 调度时需要配置如下参数
ODS_PROC_PATH
ODS_WORKDATE
ODS_DB_INST
ODS_DB_USER
ODS_DB_PASS
ODS_F_MOD
ODS_S_MOD ETL开发指南 3.2.2.4.2 带卸数入库 开发
如下图所示
对于单一字段是没有做任何转换的只是数据形式由文本转换为表。图中
SQF_S_CB_LNP_LCMLA表示SDM处理完的数据DBA_S_CB_LNP_LCMLA表示数据库里的表。同
时把SDM数据输出到数据分发的目录图中的SQF_F_LN_PEN_LCTRA 调度 调度时需要配置如下参数
ODS_PROC_PATH
ODS_WORKDATE
ODS_PUT_PATH
ODS_DB_INST
ODS_DB_USER
ODS_DB_PASS
ODS_F_MOD
ODS_S_MOD
3.2.2.4.3 SQC入库 开发 调用DB2提供的API把文本数据Load到SDM层表里。 ETL开发指南 调度 3.2.2.5 FDM层
输入数据分类
源增量表以日为单位的时间戳保留当期数据与源系统结构相同的存储
方式。
源全量表保留全量数据与源系统结构相同的存储方式。
输出数据分类
基础快照表保留更新时期的时间戳保留当期的全量快照。
事件流水表按照事件发生的时间保留一段时期的流水历史。
历史拉链表按照指定字段属性的变化增加对应变化周期的时间戳保留
一段时期的连续变动历史。
数据加工要点
快照更新修改目标表存在记录的指定字段属性在目标表中插入新增记录。
历史拉链对快照表的指定单一字段比对变化根据时间变化的闭区间建
立时间戳。修改上次结束日期插入新的记录。
异常处理数据加载转换Reject输出数据装载失败ETL重新处理等。
数据加工分类
增量--〉快照源数据为增量更新目标表。
增量--〉历史源数据为增量指定字段比对当期快照表产生拉链数据
插入并更新目标表。
增量--〉变动源数据为增量指定字段组合比对当期快照表产生变动数
据插入并更新目标表。
增量--〉流水源数据为增量插入目标表。 ETL开发指南 全量--〉快照源数据为全量完全覆盖目标表
3.2.2.5.1 全表覆盖加载 开发
对于单一字段是没有做任何转换的只是数据形式由文本转换为表。图中
SQF_S_CB_LNP_LCCIA表示SDM处理完的数据DBA_F_LN_PEN_LCCIA表示数据库里FDM层的
表。同时把SDM数据输出到数据分发的目录图中的SQF_F_LN_PEN_LCCIA 调度
调度时需要配置如下参数 ODS_PROC_PATH
ODS_PUT_PATH
ODS_WORKDATE
ODS_DB_INST
ODS_DB_USER
ODS_DB_PASS
ODS_F_MOD
ODS_S_MOD 3.2.2.5.2 按日期删除后追加 开发 ETL开发指南 使用SQC进行开发根据提供的
数据日期把原来FDM表里面与数据日期匹配的数据
先删除然后把SDM层的数据追加加载到FDM表里。
这种加载方式主要存放历史数据还有月底快照表。 调度
调度时需要配置如下参数 DATA_DT
ODS_DB_NAME
ODS_DB_USER
ODS_DB_PASS 3.2.2.5.3 Upsert(U、I、D) 开发
使用SQC进行开发这种处理逻辑中SDM表里的数具有以下特点 在ODM层的处理中是以增量剥离方式产生的带变动标志字段ODS_CHG_CODE
目标表存在主键
根据变动标志的值对数据分别做以下处理
把变动标志为修改和删除的数据从FDM层表中删除
把变动标志为新增和修改的数据从SDM层表插入到FDM层表
在加载的过程中可能需要在删除前保留数据的需要在删除前把数据插入到临时中间
表然后在插入的时候再从中间表中取出来。比如在处理上日余额和积数的时候就需要把
帐号对应的余额保存起来。 调度
调度时需要配置如下参数 DATA_DT
ODS_DB_NAME
ODS_DB_USER
ODS_DB_PASS ETL开发指南 3.2.2.5.4 Upsert(U、I) 开发 使用SQC进行开发,这种处理逻辑中SDM表里的数据有以下特点
II卸数的时候可以通过某些条件把当天增量数据区分出来
ODM层不需要做增量剥离直接复制增量数据
目标表存在主键
根据变动标志的值对数据分别做以下处理
FDM表数据和SDM表通过主键关联把关联上的数据从FDM层表中删除
把SDM层表插入到FDM层表 调度
调度时需要配置如下参数 DATA_DT
ODS_DB_NAME
ODS_DB_USER
ODS_DB_PASS 3.2.2.5.5 历史拉链记载 开发 使用SQC进行开发这种处理逻辑中SDM表里的数据有以下特点
每个拉链表都有对应的主文件
ODM层中需要做拉链表增量剥离也就是在主文件增量剥离完之后再做一次剥离
拉链表对应的主文件存在主键
根据变动标志的值对数据分别做以下处理
为了支持重跑把拉链表恢复到数据日期当天的状态
SDM表和FDM表关联把拉链表中需要闭链的数据也就是关联上的数据放进中
间表
删除拉链表中需要闭链的数据 ETL开发指南 中间表数据插入拉链表完成闭链。这个时候END_DT被设置为当前数据日期
把需要开链的数据插入拉链表包括增加、修改和删除的数据。这个时候START_DT
被设置为当前数据日期END_DT被设置为‘2099-12-31’表示一个无穷大日期 调度
调度时需要配置如下参数 DATA_DT
ODS_DB_NAME
ODS_DB_USER
ODS_DB_PASS 3.2.2.5.6 不定期同步 开发 使用SQC进行开发不定期同步处理是为了在FDM数据加载错误时使用全量进
行加载的
过程。在FDM层的处理逻辑就是将目标表的数据清空然后将全量数据插入
进去。 调度
调度时需要配置如下参数 DATA_DT
ODS_DB_NAME
ODS_DB_USER
ODS_DB_PASS 3.2.2.6 FDM卸数
3.2.2.6.1 FDM直接卸数
开发 ETL开发指南
相当一个export的过程中间单独的字段没有做转换。图中DBA_F_LN_ENT_LNMLA代
表FDM层一个物理表SQF_F_LN_ENT_LNMLA代表卸数文本中间的TR01没有做任何转换。 调度
3.2.2.6.2 FDM表关联SDM文本卸数 开发
由于从表里面直接卸出来的数据不能体现当天被删除的数据表里已经不存在为
了在卸数文件中体现这部分数据需要关联SDM处理完的数据。图中DBA_F_LN_PEN_LCMLA
表示FDM表SQF_S_CB_LNP_LCMLA表示SDM处理完的数据。把FDM表里面数据日期等于当
天的数据和SDM处理后文本中记录状态为删除的数据合在一起输出到卸数目录。 调度
ETL开发指南 3.2.2.7 代码表开发 代码表的开发首先得开发日常作业参考3.2.1ETL开发内容。其次如果代码表数据需放入
F_CM_PUB_CODE中需开发1个DS入库程序修改公用程序P0_T4_F_CM_PUB_CODE.sqc 程序部分:
SDM入库程序
公用程序P0_T4_F_CM_PUB_CODE.sqc修改(在sqc的c_f_cm_pub_code CURSOR
的游标声明中增加代码表。
作业部分:
SDM层_P表入库作业配置
所属源系统代码表公共作业每个源系统都有一个公用的代码表作业增加作
业依赖关系 代码表配置.xls
3.2.2.8 DS自动生成工具说明 DS自动生成工具支持生成以下FDM加载策略的DS程序
101-全表覆盖加载
202-按日期删除后追加
303-Upsert包含(del、ins、upd)
404-Upsert包含(insert、upd)
DS自动生成工具的使用说明见下附件
中信ODS各层DataSt
age自动生成工具使用说明.doc
ETL开发指南 3.2.3 ETLPLUS作业配置 在开发和变更过程中会碰到两种情况一是新增表所在的系统已经纳入ODS二是新增表还
未纳入ODS对于第二种情况需要在ODS增加源系统的相关配置。 3.2.3.1 新增源系统
3.2.3.1.1 添加系统
在“配置管理”中选择“系统管理”
进入系统管理维护界面
点击“新建系统”按钮进入新增系统编辑界面
ETL开发指南 填写系统名称系统简称通常使用系统名称的字母简写,点击“确定”按钮保
存并返回。
3.2.3.1.2 源系统管理中添加系统关系
数据来源于“系统管理“在此只是建立当前执行系统与其他系统间的关系被选中
的系统就为当前执行系统的源系统。
选择“配置管理”“源系统管理”进入维护界面选择“某某系统”作为当前执行
系统的源系统点击“保存”按钮
保存修改结果。
3.2.3.1.3 增加ODMSDM对应子系统
在开始定义作业之前, 你必须要先定义子系统. 所谓的子系统主要是用来将作业做分
类以方便管理, 并且可以根据子系统中的设置参数决定了作业日志的保留期的长短。
在对子系统进行操作之前必须要选中结构树中“子系统”在页面右边编辑区单击“创
建ETL子系统”按钮 ETL开发指南
进入新增子系统的编辑界面键入系统名称选择相应的执行服务器中文描述可以
不填写。
填写完成后点击“新增”即可得到相应的子系统
在左侧的子系统目录下可看到新建的子系统ODM-xx ETL开发指南
以同样方式新建子系统SDM-xx
3.2.3.1.4 新增作业流
按照作业流划分原则在新增源系统后必然要新增对应的作业流INCR_XX1在新增作业
流时需要按如下步骤进行设置。
3.2.3.1.4.1 新建翻牌作业
选择FDM-FLIP子系统点击创建ETL作业然后按照下图所示进行填写
填写好之后在窗口下方点击“新增”按钮即可。 ETL开发指南 3.2.3.1.4.2 新建作业流日期参数
选择“配置管理”“公共参数管理”
进入公共参数维护界面, 点击“新建作业自定义参数”进入新增界面
填写完相关信息后点击“确定”保存。 ETL开发指南 3.2.3.1.4.3 新建作业流
选择“作业管理”“作业流管理”
进入作业流管理界面点击“新建作业流”按钮
输入作业流名称作业流策略选择日常点击“选择”按钮进入如下界面根据作业
名称查找到之前创建的翻牌作业点击“确定”按钮在日期参数下拉选项中选择之前创
建的翻牌日期参数设置是否有效为有效。 ETL开发指南
3.2.3.1.4.4 卸载翻牌表
登陆CLIENT服务器将新增的作业流ID及作业流名称从job_flow表中查询出来以逗
号为分隔符追加到flw_dt.ini中。
db2 "select FLOW_ID,FLOW_NM from job_flow where FLOW_NM='INCR_XX1' with ur"
3.2.3.2 新增表
3.2.3.2.1 作业配置
详见ETLPLUS操作手册。
3.2.3.2.2 源文件配置
源文件配置的目的是为数据流的首作业创建文件触发供文件监控程序使用当程序
监控到源文件到达时就会调起对应的作业。
配置内容如下所示
其中
源文件名配置时一般为“$ODS_FILE_PATH/{DATA_DT}/源系统简称/文件名”其中
$ODS_FILE_PATH为II卸数的文件主目录{DATA_DT}为数据日期源系统简称和文件名参
考第二章的命名规范 ETL开发指南 源系统简称参考第二章的命名规范
作业名即文件要触发的作业
源表名即源表名称。
3.2.3.2.3 不定期同步配置
配置模板如下详见
3.2.3.2.4 表备份
由于数据库备份只在数据库出现重大问题时才会进行数据库恢复如果数据库本身没
有问题当ETL进行错误重跑需要恢复某张表的数据时ODSDB数据库备份并不能支持。
因此需要考虑表级备份即将需要备份的表导出到文件进行备份。
按照表加载方式进行分类有如下类型表需要备份
按日期删除后追加
程序本身支持重跑但当表本身出现问题时 ETL无法单独进行恢复处理因此
需要进行备份对于数据量比较大的表初始备份一次全量以后每月只备份增量
UpSertU、I
需要备份在加载错误时需要恢复加载错误前一天的数据然后重新运行。
拉链表
虽然程序本身支持重跑但当表本身出现问题时ETL还是无法进行恢复处理因
此需要通过备份表来实现。
快照表 ETL开发指南 需要备份处理周期为一个月。该种类型的表一般比较大初始备份一次全量
以后每月只备份增量。
销户表
需要备份备份周期同对应主表这种类型的表一般比较小每次同主表一起备
份全量即可。
备份策略
由于备份的表中存在很多流水表和拉链表这些表一般都比较大在备份时需要
将大表错开以减轻对时间窗的压力
如果存在月底全量有特殊用途的表需要在每月1日对其进行备份
对于处理周期不是每日的表考虑按照处理周期进行备份具体备份时间以处理时间
向后延一天再进行备份
对于基于同一主表的拉链表、销户表要同主表同时备份
表备份模板如下 CLEAR_BACKUP.xls
3.2.3.3 开发作业配置自动生成
ODS系统开发了一个公共程序EasyConfig.pl(程序源码在/VSS109/09、程序源码/01、
ETL组/02、ETL_ETL组/ETLPLUS作业配置自动化),可以自动生成加载策略为T1,T2,T3,T4
的数据流的ETLPLUS作业配置。
生成程序使用步骤
在本地配置“自动化配置模板.xls”模板及配置方法见下附件 自动化配置模板.xl
s
生成程序部署在22.5.246.6上将“自动化配置模板.xls”上传到服务器上执行命
令perl /home/etlplus/script/kit/EasyConfig.pl $path/自动化配置模板.xls
(其中$path为自动化配置模板.xls的绝对路径) ETL开发指南 生成后的作业配置存放在/home/etlplus/script/xhm下FTP取到本地
3.2.3.4 卸数作业配置自动生成
ODS系统开发了一个公共程序GenExport.pl((程序源码在/VSS109/09、程序源码/01、
ETL组/02、ETL_ETL组/卸数配置自动化生成),可以自动生成卸数作业的ETLPLUS作业配置。
生成程序使用步骤
在本地配置“卸数配置文件模板.xls”模板及配置方
法见下附件 卸数配置文件模板.
xls
生成程序部署在22.5.246.6上将“卸数配置文件模板.xls”上传到服务器上执行
命令perl /home/etlplus/script/kit/GenExport.pl $path/卸数配置文件模板.xls
(其中$path为卸数配置文件模板.xls的绝对路径)
生 成 后 的 作 业 配 置 存 放 在/home/etlplus/script/xhm下 文 件 名
JOB_EXPORT_$data.xls($data为8位当前日期如20100801), FTP取到本地
3.2.3.5 卸数作业配置说明
卸数作业配置模板如下
ETL_卸数模板.xls
模板的填写说明如下
卸数模板填写说明.
xls
ETL开发指南 3.2.3.6 卸数作业计划调度 卸载作业的计划调度首先进入ETLPLUS界面点击“调度管理”—“所有计划”再点击
“添加计划作业按钮”弹出界面如下图
注意:
1.结束日期当天作业将不会被调起
2.如果结束日期小于等于开始日期或结束时间小于等于开始时间作业将永远不被
调起
3.调度时间如果设置为0则作业的调度间隔时间为调度服务器扫描的间隔时间
4.调度服务器是间隔一段时间扫描所以调起作业的时间精确到调度间隔时间
5.调度时间以调度服务器为准
6.下次调度时间为最后一次执行时间 + 间隔时间并不一定是开始时间 + n * 间隔
时间
比如系统需要在2011-01-07号的中午12:00调起“EXP_TEST5”的作业只执行一次
那么配置如下图 ETL开发指南
3.2.4 ETL公共程序开发部署 公共程序清单见如下附件 公共程序清单.xls
对于ETL公共程序在变更时需要同步部署
应用名称 服务器IP
TDL 21.244.18.73
ODS 21.244.18.1
ODS 21.244.18.7
3.2.5 ETL复核步骤
详见附件“ETL复核步骤.xls” ETL开发指南 ETL复核步骤.xls
3.3 部署步骤及脚本
这部分单独在这里列出来是为了说明在开发阶段就要考虑好如何进行部署并在测
试阶段对部署步骤进行测试。
部署步骤模板如下
4 ETL测试
根据中信ODS环境制定如下测试流程及规范
采用交叉测试方法对开发人员和测试人员进行分离。
测试人员记录测试过程中的问题由开发人员修改组长定期对问题进行汇总并组
织人员讨论避免在以后开发过程中发生类似问题。
开发人员在开发阶段和单元测试阶段需要同时开发出部署步骤及部署脚本对于
超过3个命令的步骤需要以脚本方式进行部署,在集成测试时对部署步骤也要进行
测试以保证上线时上线步骤的正确性。
在集成测试尽量不保留源码在测试部署时也使用编译后的程序尽量不在集成
测试环境修改程序
4.1 ETL测试标准 根据中信ODS项