亿信ABI
当前版本:5.6.1

创建ETL任务

1. 概述

ETL任务是对数据进行抽取、转换和加载等一系列操作。目的是将数据从源系统中迁移到目标系统,在迁移过程中对数据进行清洗、整合和格式化,以满足后续分析和使用的需求。

本文档是ETL任务的入门示例,希望帮助大家了解ETL任务的制作步骤和设计思路。

下文以《员工个人信息表》(F_YGGRXXB)和《员工职位信息表》(F_YGZWXXB)的数据整合为例,通过物化生成的《员工个人信息岗位表》,讲解ETL任务的制作步骤。

具体需求如下:

1) 《员工个人信息表》和《员工职位信息表》这两个表通过员工ID(YGID)进行关联;

2) 过滤掉离职的人员(是否在职(SFZZ)应为1);

3) 将出生日期(CSRQ)、入职时间(RZSJ)、离职时间(LZSJ)字段转换成yyyymmdd格式的日期类型;

4) 将MZ(民族)字段中的空值替换成01;

5) 输出到数据库表《员工个人信息岗位表》。

员工个人信息表(F_YGGRXXB)和员工职位信息表(F_YGZWXXB)结构:

员工职位信息表(F_YGZWXXB)和员工职位信息表(F_YGZWXXB)的部分数据:

2. 制作步骤

2.1新建ETL任务

在“设计区”中打开ETL任务定义页面,点击【新建】,选择任务类型。支持三种任务类型:批处理任务、交换任务和实时任务。

批处理任务:主要用于数据迁移、数据清洗、数据脱敏等数据仓库的基础操作,它将一段时间内积累的数据集中起来,作为一个批次进行处理;

交换任务:主要用于库表、文件和接口等不同系统或应用之间的数据传输与共享,实现数据的交换与同步;

实时任务:支持以流模式进行数据的采集与处理,通常在数据产生后立即处理并返回结果。与批处理任务和交换任务按固定时间间隔执行不同,实时任务是实时计算,即时处理数据。

本示例选择“批处理任务”。

进入ETL任务设计器。

 

2.2添加表输入组件

根据需求,我们将对数据库中的表执行ETL操作,以《员工个人信息表》(F_YGGRXXB)和《员工职位信息表》(F_YGZWXXB)作为输入表。

【表输入】组件支持选择任意接入的连接池中的数据库表作为输入表。

将“表输入组件”拖拽到编辑区,双击组件进行配置,选择相关连接池和表(如下图),确定即可。

2.3添加连接组件,完成两表连接

根据需求1,我们需要将【员工个人信息表(F_YGGRXXB)】和【员工职位信息表(F_YGZWXXB)】作为输入表,并完成表连接。

【连接组件】用于将多个表进行连接,并输出连接后的结果。它支持5种连接方式,与数据库中的表连接方式类似。通过确定关联字段和关联条件,最终生成匹配后连接的结果集。连接组件需要两个或以上的输入表,输出为一个结果集。

关于组件之间的连接。将鼠标悬浮在前置任务组件的中间位置,会出现一个黄色箭头的圆点,并且鼠标会由指针变为手状图标,拖动黄色箭头的圆点向右移动,箭头会随之移动。将鼠标悬停在目标组件的中央位置并松开,即可完成两个任务组件的连接。

将“连接组件”拖拽到编辑区,与【员工个人信息表(F_YGGRXXB)】和【员工职位信息表(F_YGZWXXB)】的表输入组件连接。双击“连接组件”进行配置。由于两个表输入组件是补充关系,选择连接方式为左连接。设置两表连接条件,将两个表的员工ID(YGID)进行关联。

注意:如果连接组件的输入表中有相同字段,系统会自动创建连接表达式,如不需要可以自行删减连接条件。

2.4添加过滤组件,实现数据过滤

根据需求2,我们需要过滤掉“离职人员”,在两个表的数据中,在职状态用1表示,离职状态用0表示。

【过滤组件】用于实现数据过滤功能,从输入数据中筛选出符合条件的结果集,最后装载到目标中去,其功能类似于数据库的Where操作。

将“过滤组件“拖拽到编辑区,双击组件进行配置。选择过滤方式有简单过滤和自定义过滤(效果相同),本示例选择简单过滤。点击【选择】按钮,选择需要过滤的字段“是否在职(SFZZ)”,选择操作符、取值及条件之间的连接符,具体配置如下图所示:

如果选择”自定义过滤“,配置方式如下图所示:

2.5添加表达式组件,对字段进行处理

【表达式组件】支持通过表达式对前置组件中各字段的数据进行转换处理,生成新的结果集。

将”表达式组件“拖拽到编辑区,双击组件进行配置。在弹出框中,选择需要处理的字段。点击表达式框右侧的三个点,在弹出的编辑框中编写处理逻辑。可使用产品内置函数或数据库内置函数(操作步骤如下图),配置完成后,点击【确定】保存。

按照需求3,将出生日期(CSRQ)、入职时间(RZSJ)和离职时间(LZSJ)字段转换成yyyymmdd格式的日期类型。本示例表达式如下:

STRTODATE(Filter1.CSRQ,'yyyymmdd')

STRTODATE(Filter1.RZSJ,'yyyymmdd')

STRTODATE(Filter1.LZSJ,'yyyymmdd')

同时”字段类型”设置为【日期型】,具体配置如下图。

其中,STRTODATE函数用于将字符串转换为日期。表达式组件不仅支持”函数列表”中的函数,还支持”数据库函数”。

2.6添加清洗组件,实现数据清洗

根据需求4,将MZ(民族)字段中的空值替换成01。这里可以使用到【清洗组件】,通过多种清洗规则对源数据进行清洗。

“清洗组件”用于对输入数据进行标准化处理,包括去除重复值、填补缺失值、纠正错误数据以及格式化数据等操作,以确保数据质量满足后续分析和使用的需求。

将“清洗组件“拖拽到编辑区,双击组件进行配置。点击”新增”规则,需求是将”MZ(民族)字段中的空值替换成01“,故我们选择”空值替换“-“空值替换为指定值”,选择目标字段,设定替换方式和指定值,点击确定即可。具体配置如下图所示:

至此,数据处理部分已完成,最终将处理好的结果集输出到一张新的数据库表中。

2.7添加表输出组件

数据处理完成后,现在需要将结果集输出到一张新的数据库表中。

将”表输出组件“拖拽到编辑区,双击组件进行配置。选择要输出的数据源和表【员工个人信息岗位表(F_YGGRXXGWB2)】,配置“字段映射”。如果目标表在连接池中不存在,需勾选“不存在则创建”,此选项可避免目标表被删除后,ETL任务无法正常执行。

然后在目标设置中选择更新方式和批量大小(如下图)。

 

表输出的几种更新方式

1)数据附加:将源数据追加到目标目的表中,若某条源数据记录在目标中已经存在,则忽略该条源数据。
2)数据覆盖:先将目标表清空(delete),在将源数据插入目标表中。

3)数据更新:更新目标表中已有的数据,源数据在目标表中的不存在的话,将不作处理。

4)更新插入:源数据如果在目标表中不存在,则插入该条数据;源数据如果在目标表中存在,则更新该条数据。

至此,ETL任务设计已完成,最终任务如下图所示:

 

2.8运行调试

ETL任务设计完成后,点击【运行】,即可执行ETL任务。这里需要注意的是:建议在设计过程中逐步调试各组件的运行结果,而非全部设计完成后再运行。系统支持逐步调试功能,在想要预览结果的组件上,单击右键,选择“运行到”,在弹出窗口点击【确认】,ETL任务将只执行到所选组件。

表示已经执行过的组件,表示当前运行到的组件,表示还未执行的组件。继续执行剩余全部组件,停止当前执行。

选择已执行或当前运行到的组件,单击右键,点击“预览数据”可预览当前处理逻辑的执行结果。可查看当前生成的SQL是否符合需求。

 

2.9保存ETL任务

点击菜单栏中【保存】按钮,在弹出的对话框中,设置ETL任务的名称和标题即可完成保存。如下图所示:

最后,点击”设计区“-”任务定义“中可查看新建好的ETL任务。

附件列表

0

文档内容仅供参考
如果您需要解决具体问题,还可以登录亿信社区
在提问求助板块提问,30分钟内帮您解决问题

如果您认为本词条还有待完善,请编辑

上一篇ETL任务设计器界面功能介绍

下一篇实时任务

请先登录