亿信ABI
当前版本:5.3.1

创建ETL过程

创建ETL过程

ETL过程是数据处理的最小逻辑单元。这里以个人周报数据抽取为例,讲述ETL过程的制作步骤。

1.概述

本文档是ETL过程的入门示例,希望大家通过这个示例理解ETL过程的制作步骤以及设计思路。下文我们以一个个人周报数据抽取为例,讲述ETL过程的制作步骤。

具体需求如下:

  • 【个人周报表IGRZB_B0】中去掉“是否合计行”为1的数据,合计行为1代表是合计数据,我们需要保留明细数据,去掉合计行;去掉“参与任务”为空的垃圾数据,个人周报填写必须包含参与的任务。
  • 完善个人周报信息,将【员工信息表FACT_YGXX】中的“所属部门”、“工作地点”等维度字段添加到个人周报信息中。
  • “参与任务”由任务编号+员工id组成,员工id位数固定为7位,例如01002.01060020007P000.1400003,01002.01060020007P000为任务编号,1400003为员工id。需要截掉后面的员工id,保留参与任务编号。
  • 为不影响源表数据,需要把处理好的数据抽取到一张新数据表中。

图1:个人周报表表结构IGRZB_B0

创建ETL过程

图2:个人周报表部分数据

创建ETL过程

2.制作步骤

2.1新建ETL过程

在数据整合下,打开到设计区的ETL过程列表,点击【新建】,创建ETL过程。

创建ETL过程

或者在左侧资源树上ETL过程节点上右键【新建ETL过程】。

05创建ETL过程533

2.2添加表输入组件

根据需求,我们要对数据库中的表进行ETL,将IGRZB_B0作为输入表。

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

将表输入组件拖入到右边编辑区,双击组件进行配置,选择连接池和表。我们选择个人周报表IGRZB_B0。

创建ETL过程

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

根据需求,我们需要去掉“是否合计行”为1和“参与任务”为空的脏数据。

过滤组件】主要完成过滤功能,在输入数据中筛选出需要的结果集合,最后装载到目标中去,类似于数据库的where操作。

拖入过滤组件,鼠标悬浮到前置任务组件中间位置,会出现一个黄色箭头的圆点05创建ETL过程813,并且鼠标会由指针变为手状,鼠标拖动这个圆点向右移动,这时黄色箭头也会跟着向右移动,然后将鼠标落在需要连接的组件中央松开鼠标即可完成两个任务组件的连接。

05创建ETL过程891

双击过滤组件,在过滤组件的公式编辑区域可以编辑过滤表达式,完成对输入结果的过滤。可以选择简单过滤或自定义过滤,这两种过滤方式产生的效果是一样的,这里我们选择简单过滤。点击【选择】按钮选择需要过滤的字段“ISHJ_(是否合计)”和“CYRW(参与任务)”,选择操作符、取值,以及条件之间的连接符,配置如下图所示:

创建ETL过程

如果使用自定义过滤,则如下图所示

创建ETL过程

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

按照需求,我们需要将【员工信息表FACT_YGXX】中的“所属部门”、“工作地点”等维度字段添加到个人周报,此时需要将【员工信息表FACT_YGXX】也作为输入表,并与【个人周报表IGRZB_B0】完成表连接。

连接组件】用于完成将多个表进行连接,将连接后的结果输出。连接组件的连接方式主要有以下几种:内连接、左连接、右连接、全连接,与数据库里表连接的方式类似,通过确定关联字段和关联条件,最后得到匹配连接后的结果集。连接的输入是两个以上,输出只有一个。

拖入连接组件,过滤组件和【员工信息表FACT_YGXX】的表输入组件作为连接组件的输入,双击连接组件进行配置。根据需求员工信息表是作为补充,所以选择连接方式为左连接,并设置两表连接条件。

创建ETL过程

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

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

表达式组件】可以通过表达式对前置组件中各字段的数据进行转换处理,得到新的结果集数据。

拖入表达式组件,作为连接组件的输出。双击表达式进行配置,在弹出框配置需要处理的字段,点击表达式框的三个点(见下图1),在弹出框中编辑处理逻辑。可以使用产品内置函数,也可以使用数据库内置的函数。

按照需求,我们需要截取掉“参与任务”字段中的员工id,保留参与任务编号,表达式应写为:

LEFT(Filter1.CYRW,LENGTH(Filter1.CYRW)-8)

其中:

LENGTH(Filter1.CYRW)-8,是获取参与任务的数据长度,减去人员编码固定7位数和“.”的1位。

创建ETL过程

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

2.6添加表输出组件

以上我们数据就处理好了,现在需要将结果集输出到一张新的数据库表中。拖入【表输出】组件,作为表达式组件的输出,双击表输出组件,选择要输出的数据源和表,并配置“字段映射”。如果目标表在连接池中不存在,可以勾选“不存在则创建”,此选项也可以避免将来输出表被删除后,ETL无法正常执行。然后在目标设置中选择更新方式和批量大小。

创建ETL过程

表输出的几种更新方式:

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

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

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

至此,ETL过程就设计完成了,得到如下ETL过程。

创建ETL过程

2.7运行调试

ETL过程设计完成后,点击运行,可以执行ETL过程。这里我们需要注意的是:ETL过程最好不要全部设计完成后点击运行,要在设计过程中逐步对各个组件的运行结果进行检查调试。系统提供逐步调试的功能,在想要预览结果的组件上,单击鼠标右键,选择“运行到”并在弹出窗口点确认,ETL过程就会只执行到选择的组件。例如,选择执行到“过滤组件1”,如下图所示。

05创建ETL过程2374

创建ETL过程

05创建ETL过程2378表示已经执行过的组件,05创建ETL过程2390表示当前运行到的组件,05创建ETL过程2402表示还未执行的组件。05创建ETL过程2413继续执行剩余全部组件,05创建ETL过程2425停止当前执行。

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

05创建ETL过程2497

创建ETL过程

2.8保存ETL过程

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

05创建ETL过程2562

附件列表

2

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

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

上一篇ETL过程设计器界面功能介绍

下一篇ETL过程流设计器界面功能介绍

请先登录