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)数据附加:将源数据追加到目标目的表中,若某条源数据记录在目标中已经存在,则忽略该条源数据。 3)数据更新:更新目标表中已有的数据,源数据在目标表中的不存在的话,将不作处理。 4)更新插入:源数据如果在目标表中不存在,则插入该条数据;源数据如果在目标表中存在,则更新该条数据。 |
至此,ETL任务设计已完成,最终任务如下图所示:
2.8运行调试
ETL任务设计完成后,点击【运行】,即可执行ETL任务。这里需要注意的是:建议在设计过程中逐步调试各组件的运行结果,而非全部设计完成后再运行。系统支持逐步调试功能,在想要预览结果的组件上,单击右键,选择“运行到”,在弹出窗口点击【确认】,ETL任务将只执行到所选组件。
表示已经执行过的组件,
表示当前运行到的组件,
表示还未执行的组件。
继续执行剩余全部组件,
停止当前执行。
选择已执行或当前运行到的组件,单击右键,点击“预览数据”可预览当前处理逻辑的执行结果。可查看当前生成的SQL是否符合需求。
2.9保存ETL任务
点击菜单栏中【保存】按钮,在弹出的对话框中,设置ETL任务的名称和标题即可完成保存。如下图所示:
最后,点击”设计区“-”任务定义“中可查看新建好的ETL任务。
请先登录