文档库 最新最全的文档下载
当前位置:文档库 › ETL开发指南V0.3

ETL开发指南V0.3

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) 作业流名称
作业流名称一般是按源系统的作业个数进行配置一般2030个作业配置成一个作业流 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
批次表模板说明
字段名称 字段描述
系统简称 源系统简称如CBCI等
主机名称 源系统主机名称用来区分主、备机
批次 源系统数据就绪批次如1、2??
表名 源系统表名

滞后天数 就绪中止时刻在0点以前赋00点以后赋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程序
101-全表覆盖加载
202-按日期删除后追加
303-Upsert包含(del、ins、upd)
404-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 增加ODMSDM对应子系统
在开始定义作业之前, 你必须要先定义子系统. 所谓的子系统主要是用来将作业做分
类以方便管理, 并且可以根据子系统中的设置参数决定了作业日志的保留期的长短。
在对子系统进行操作之前必须要选中结构树中“子系统”在页面右边编辑区单击“创
建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无法单独进行恢复处理因此
需要进行备份对于数据量比较大的表初始备份一次全量以后每月只备份增量
 UpSertU、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项

相关文档