ETL-Talend开发技巧总结

更新时间:2023-03-15 06:54:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Talend开发技巧说明手册

应用产品数据部

ETL说明手册

目 录

一、Talend技术背景................................................................................................................................ 3 二、ETL包设计 .......................................................................................................................................... 3

2.1 子包设计 ..................................................................................................................................... 3 2.2 总包设计 ..................................................................................................................................... 4 2.3 调度管理方式 ............................................................................................................................. 6 三、ETL过程添加以及维护 ...................................................................................................................... 8

3.1 ETL过程添加 ................................................................................................................................ 8 3.2 ETL过程维护 ................................................................................................................................ 8 附录 1 执行参数获取............................................................................................................................... 9 附录 2 ETL日志信息表............................................................................................................................ 9 附录 3 ETL明细包配置信息表(UNI_ETL_INFO).................................................................................. 10 附录 4 ETL总包配置信息表.................................................................................................................. 11

ETL说明手册

一、Talend技术背景

单独的Talend一个JOB,可完成一个独立的数据处理过程,并导出为独立运行的作业脚本。作业脚本包含编译后可执行的JAR包,JAR包引用的类库以及操作系统的批处理命令文件(.bat或者.sh)。

Talend的tRunJob组件可以调用设计好的JOB,从而实现JOB间的调度。tRunJob的调度有两种:第一种是指定某一特定子包,并指定子包执行所需的的context全局变量的参数来源。第二种是可以选择多个子包,具体执行哪个包通过读取参数来识别。

BQW-ETL主要是利用第二种的调度模式,创建调度总包,在总包的tRunjob调度列表中添加所有可能调度的子包。通过查询后台数据库配置信息表返回的子包名传递给tRunjob组件,进行子包的灵活调度。

二、ETL包设计

2.1 子包设计

子包设计原则:

粒度到单表,有独立的读参模块,数据处理模块,写日志模块,可独立运行,在最后导出的可执行ZIP包中可替换,

每个数据表的作业包设计分为三个部分: ? 从XML文件获取执行相关参数

? 连接数据库,进行数据抽取,转换,加工,处理到目标表 ? 将ETL执行信息写入后台日志表(UNI_ETL_LOG) 设计流程图如下:

ETL说明手册

其他数据库扩展开发:

目前只支撑Oracle,MSSQL,后续如果添加新的数据库平台产品的支撑,需要完成三步操作: ? 复制一个数据处理模块

? 将处理模块中的Database组件换成对应数据库类型(例如DB2) ? 将Database组件中的SQL,替换成对应数据库的SQL标准

2.2 总包设计

调度总包设计原则:

不含业务逻辑数据处理,有独立的读参模块,数据处理模块,可独立运行 总包设计模式如下图:

ETL说明手册

总包设计包含三个部分:

? 从XML文件获取执行相关参数 ? 调度需求设计需要的子包

? 根据应用服务器的运行能力,设计并发流程数,分配每个流程的子包 总包设计技术原理:

a) tRunjob组件可以传参动态调度子包

b) tRunjob组件调度的子包需要预先圈定在列表范围内,范围尽量大 c) 总包调度子包时,子包错误则中断整个流程

d) 总包调度子包时,子包的context参数被总包覆盖,保证整个总包调度内的参数共享

对应的tRunjob的属性框设置如下图:

e) 参数(context.Dyn_Job1)通过存储在数据仓库中的ETL包配置信息表(UNI_ETL_INFO)读取传

ETL说明手册

并发的设置:

并发的设计需要谨慎,并发数过多则容易造成java虚拟机的启动内存不足,而导致分支执行失败,目前默认为3个分支,每个分支消耗内存在256M到1024M之间。

每个分支执行的ETL子包,需要根据目标表的记录数以及子包的执行时间自行制定。 设计方法:

? 分支个数,对应总包中毫无关联的模块的个数 ? “多线程的执行”参数勾选

2.3 调度管理方式

ETL的调度管理,通过后台配置信息表来完成,后续产品版本中,可以把配置信息表的维护做成前台界面,实现工具化的ETL配置,管理,调度。

开发者二次开发出新的ETL调度包,可以按照规范的命名规则,以及配置方法,添加到ETL配置信息表(UNI_ETL_INFO),包括ETL包的数据仓库层级,属性,所属业务领域等信息,执行序号,依赖关系等信息。开发者可以根据需要,通过修改配置信息表,改变ETL包的业务组合,是否执行,以及执行次序。

子包配置信息表:

ETL说明手册

字段编码 etl_id etl_code etl_name erp_type m_type module dw_layer tab_cls tab_code_dest tab_name_dest tab_code_src is_aggr etl_code_p result 字段名称 执行次序ID ETL包编码 ETL包名称 注释 执行次序ID(整型,代表执行先后次序,由小到大) ETL包编码(tRunjob调度时获取的子包编码) ETL包名称(编码注释) ERP的产品类型 ERP的产品类型(NC5X,U810...) 归属的总包 功能模块 数据仓库层次 表属性 目标表 目标表名称 源表 是否聚合 所属并发分支 是否有效 归属的总包(总包的ETL_CODE) 功能模块(UNI-公共,FA-财务,SCM供应链) 数据仓库层次(ODS,DWT,DW,DQ) 表属性(DIM-维度表 FACT-事实表) 目标表 (数据库中对象名) 目标表名称(编码注释) 源表 (数据库中对象名) 是否聚合(0:否 1:是) 所属并发分支(1,2,3...) 0:有效 1:无效 下面是会计科目档案的三个处理子包的配置SQL的示例:

insert into uni_etl_info (ETL_ID, ETL_CODE, ETL_NAME, ERP_TYPE, M_TYPE, MODULE, DW_LAYER, TAB_CLS, TAB_CODE_DEST, TAB_NAME_DEST, TAB_CODE_SRC, IS_AGGR, ETL_CODE_P, RESULT)

values (480, 'NC5X_FA_ODS_DIM_ACCSUBJ', 'NC5X_FA_ODS_DIM_ACCSUBJ', 'NC5X', 'NC5X_FA_PUB', 'FA', 'ODS', 'DIM', 'ODSNC_FA_DIM_ACCSUBJ', '会计科目表', 'BD_ACCSUBJ', 0, '3', 0);

insert into uni_etl_info (ETL_ID, ETL_CODE, ETL_NAME, ERP_TYPE, M_TYPE, MODULE, DW_LAYER, TAB_CLS, TAB_CODE_DEST, TAB_NAME_DEST, TAB_CODE_SRC, IS_AGGR, ETL_CODE_P, RESULT)

values (540, 'NC5X_FA_DWT_DIM_ACCSUBJ', 'NC5X_FA_DWT_DIM_ACCSUBJ', 'NC5X', 'NC5X_FA_PUB', 'FA', 'DWT', 'DIM', 'DWTNC_FA_DIM_ACCSUBJ', '会计科目表', 'ODSNC_FA_DIM_ACCSUBJ', 0, '3', 0);

ETL说明手册

insert into uni_etl_info (ETL_ID, ETL_CODE, ETL_NAME, ERP_TYPE, M_TYPE, MODULE, DW_LAYER, TAB_CLS, TAB_CODE_DEST, TAB_NAME_DEST, TAB_CODE_SRC, IS_AGGR, ETL_CODE_P, RESULT)

values (541, 'NC5X_FA_DW_DIM_CCODE', 'NC5X_FA_DW_DIM_CCODE', 'NC5X', 'NC5X_FA_PUB', 'FA', 'DW', 'DIM', 'DW_FA_DIM_CCODE', '会计科目表', 'DWTNC_FA_DIM_ACCSUBJ', 0, '3', 0);

三、ETL过程添加以及维护

3.1 ETL过程添加

当用户分析需求超出数据仓库预置数据的覆盖范围时,用户需要添加扩展数据仓库内容,创建新的数据表,并产生填充数据的ETL过程。操作步骤如下:

1) 根据命名规范,以及子包设计原则,创建目标表的子包,测试,并执行通过 2) 根据命名规范,以及总包设计原则,创建目标表的总包 3) ETL总包配置信息表中添加总包信息 4) 设计总包的并发分支数

5) 将子包信息配置到UNI_ETL_INFO表中,设定对应的总部,所属分支数,执行次数等字段值 6) 在总包的tRunjob的列表中添加子包job 7) 导出可执行脚本,测试

如果添加的子包可以归属到已有总包,则上述步骤可以跳过2),3),4)。

3.2 ETL过程维护

总包维护:

1) 添加并发分支数

复制已有一个流程,添加context参数Dyn_Job*(*为自行设定,不能与已有参数重复),替换

复制流程tRunjob中的context.Dyn_Job参数

更改原总包中UNI_ETL_INFO中子包的字段“所属分支”,重新进行分支执行配置。

2)添加执行的子包

在tRunjob组件中添加新的子包到列表

在UNI_ETL_INFO中添加子包信息,并将M_TYPE(所属总包)字段设为当前总包

子包维护:

ETL说明手册

子包进行修改并测试通过后,导出“可执行作业脚本”,将导出的目录中子包名对应的JAR包,拷贝复制到对应总包目录下,将原有子包的JAR包替换,即完成维护。

附录 1 执行参数获取

根据用户需要,BQW前台将提供用户ETL执行的配置界面,ETL执行的参数信息将临时存储到XML文件中,ETL作业包从XML文件获取执行所需的信息,信息内容包括数据仓库,ERP源库的数据库连接参数,以及ETL处理的业务年度,公司维度,相关业务单据的状态参数开关。

XML文件保存相对路径(/usr/BIData/ETL_TALEND/BQW_CONF):BQW_ds.xml。XML文件格式如下:

附录 2 ETL日志信息表

每个可执行的ETL作业包里,都含有数据仓库日志表记录的过程,记录本次ETL包的执行过程及结果。根据日志表(UNI_ETL_LOG)的记录,BQW前台向用户展示最后的执行结果。

ETL说明手册

编码 etl_code table_src table_dest table_rows etl_time start_time remark 名称 ETL包编码 源表 目标表 记录条数 结束时间 开始时间 备注

附录 3 ETL明细包配置信息表(UNI_ETL_INFO)

Name ETL包标识 ETL包编码 ETL包名称 ERP类型 总包类型 业务领域 数据层 表分类 目标表编码 目标表名称 源表 是否聚合 上级ETL包编码 是否可执行 Code ETL_ID ETL_CODE ETL_NAME ERP_TYPE M_TYPE MODULE DW_LAYER TAB_CLS TAB_CODE_DEST TAB_NAME_DEST TAB_CODE_SRC IS_AGGR ETL_CODE_P RESULT

ETL说明手册

附录 4 ETL总包配置信息表

ETL_ID ETL_CODE 10 20 30 40 50 60 70 NC5X_PUB_PUB NC5X_FA NC5X_FA_PUB NC5X_FA_GL NC5X_FA_FA NC5X_FA_ARAP ERP_TYPE ETL_COMMENT ETL_CODE_P IS_DEFAULT IS_DIM NODE_TYPE 表结构调整 公共模块 财务 财务公共 财务总账 财务固定资产 财务应收应付 0 0 0 NC5X_FA NC5X_FA NC5X_FA NC5X_FA 1 1 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 NC5X NC5X NC5X NC5X NC5X NC5X NC5X_UNI_DB_REDEF NC5X

ETL说明手册

附录 4 ETL总包配置信息表

ETL_ID ETL_CODE 10 20 30 40 50 60 70 NC5X_PUB_PUB NC5X_FA NC5X_FA_PUB NC5X_FA_GL NC5X_FA_FA NC5X_FA_ARAP ERP_TYPE ETL_COMMENT ETL_CODE_P IS_DEFAULT IS_DIM NODE_TYPE 表结构调整 公共模块 财务 财务公共 财务总账 财务固定资产 财务应收应付 0 0 0 NC5X_FA NC5X_FA NC5X_FA NC5X_FA 1 1 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 NC5X NC5X NC5X NC5X NC5X NC5X NC5X_UNI_DB_REDEF NC5X

本文来源:https://www.bwwdw.com/article/hl7v.html

Top