一个ETL作业通常包含很多小作业、转换等。本节介绍如何开发一个简单的ETL作业,实现从应用开发环境数据库中抽取User表的增量数据,经过转换后加载到租户自建库中,方便对数据进行集中处理。
使用ETL引擎,您可以从应用开发环境数据库中抽取数据,并进行数据转换,将数据加载到租户自建库中。ETL在数据转换方面提供了很灵活的各种操作功能,例如在数据输入输出之间,可进行检验、连接、分割、合并、转置、排序、过滤、替换等操作。
已创建外部数据库(如MySQL类型数据库),并获取到数据库相关信息,例如数据库IP、端口、数据库名、登录用户名以及密码等。
新建转换,实现从应用开发环境数据库抽取数据并输出到租户自建库中。
一个简单的转换通常包括数据输入、一些数据转换步骤、数据输出、错误处理几个流程。
单击,选择“转换”。新建一个转换。
从输入中选择“获取系统信息”拖曳至右侧空白区域,双击该图标,字段“名称”配置为“collect_time”,“类型”配置为“系统日期(可变)”。单击“确定”。
该配置目的是获取当前时间。
从脚本中选择“JavaScript脚本”拖曳至右侧。
“JavaScript脚本”用于执行JavaScript代码。
按住“Shift”,选择“获取系统信息”连线至“JavaScript脚本”,连接两个图标。
双击“JavaScript脚本”图标。
弹出“JavaScript代码”配置框。
在“JavaScript代码”中将脚本配置为“var dataString=date2str(collect_time, 'yyyy-MM-dd hh:mm:ss')”,单击“确定”。
该配置用于将日期转换成字符,赋值给变量“dataString”。
从Bingo中选择“Bingo查询”拖曳至右侧。
Bingo文件中图元是我们基于ETL进行定制开发的。功能介绍如下:
“Bingo Rest”用于从外部Rest接口获取数据。
表 1 Bingo Rest配置说明
“Bingo查询”用于按照一定的条件从应用开发环境数据库中抽取数据。如何配置在下面步骤会进行介绍。
“输出到Bingo”用于把数据输出到应用开发环境数据库中。您需要配置目标对象和字段映射关系。
“文件输出到OBS”:用于将文件输出到OBS的存储桶中。
在“文件输出OBS”上配置OBS终端节点ID、OBS用户的访问密钥 ID(Access key ID)和秘密访问密钥(Secret access key),选择存储桶以及桶上具体的文件名。选择“字段”页签,单击“获取字段”可将上一步输出的字段全部显示,您可根据需要选中具体字段所在行按“Delete”删除不需要的字段。选择“内容”页签可以配置文件内容格式。单击“确定”完成配置。
“OBS文件输入”用于从OBS的存储桶中获取文件数据作为输出。在“OBS文件输入”上配置OBS终端节点ID、OBS用户的访问密钥 ID(Access key ID)和秘密访问密钥(Secret access key),选择存储桶以及桶上具体的文件名。单击“确定”进行数据输出。
8. 按住“Shift”,选择“JavaScript代码”连线至“Bingo查询”,选择“主输出步骤”连接两个元素。
9. 双击“Bingo查询”图标。
弹出“Bingo查询”配置框。
10. 在“Bingo查询”中单击“浏览”选择用户表“User”,在“查询所需的关键字”中配置当表中字段“creatData”取值小于变量“dataString”取值,单击“获取返回字段”,“查询表返回的值”区域会出现从应用开发环境数据库中取出的用户表中的哪些字段数据。单击“确定”。
该配置表示从应用开发环境数据库中抽取截止目前生成的用户业务数据。
**图 9** 配置“Bingo查询”<a name="fig10922192475114"></a>
![](../../image/B-i-n-g-o-_-z-h/figures/配置-Bingo查询.png "配置-Bingo查询")
11. 从输出中选择“表输出”拖曳至右侧。
“表输出”用于配置抽取数据的输出源。即外部数据库。
12. 按住“Shift”,选择“Bingo查询”连线至“表输出”,选择“主输出步骤”连接两个元素。
13. 双击“Table output”图标。
弹出“表输出”配置框。
14. 在“表输出”中单击“数据库连接”所在行后的“新建”,如[图11](#fig1292314243516)所示配置外部数据库信息(包括数据库连接名、数据库类型、数据库IP、数据库名、端口、登录用户名以及密码)。配置外部数据库后,在“数据库连接”后的下拉框中选择建好的数据库。在“目标表”后单击“浏览”,如[图12](#fig209231224175118)所示选择具体导入的用户表。“提交记录数量”配置为“1000”,表示每1000条记录提交一次。
**图 10** 配置“表输出”<a name="fig11923102415511"></a>
![](../../image/B-i-n-g-o-_-z-h/figures/配置-表输出.png "配置-表输出")
**图 11** 新建数据库<a name="fig1292314243516"></a>
![](../../image/B-i-n-g-o-_-z-h/figures/新建数据库.png "新建数据库")
**图 12** 选择目标表<a name="fig209231224175118"></a>
![](../../image/B-i-n-g-o-_-z-h/figures/选择目标表.png "选择目标表")
15. 在“表输出”中选择“数据库字段”,勾选“指定数据库字段”,单击“输入字段映射”。
**图 13** 选择“数据库字段”<a name="fig99231024115110"></a>
![](../../image/B-i-n-g-o-_-z-h/figures/选择-数据库字段.png "选择-数据库字段")
16. 在“映射匹配”中单击“猜一猜”,系统会自动将源字段和目标字段进行映射。检查无误后,选择未匹配的源字段和目标字段,单击“Add”,映射结果显示在右侧。单击“确定”。
**图 14** 进行字段映射<a name="fig6923724175112"></a>
![](../../image/B-i-n-g-o-_-z-h/figures/进行字段映射.png "进行字段映射")
17. 在“表输出”中单击“确定”。
18. 从流程中选择“空操作(什么也不做)”拖曳至右侧。
“空操作(什么也不做)”用于配置当上一步出现报错时进行的逻辑处理,即什么也不做。如果不拖曳该元素,当上一步报错时,整个流程将会被中断。
19. 按住“Shift”,选择“Bingo lookup”连线至“Dummy (do nothing \)”,选择“错误处理步骤”连接两个元素。
![](../../image/B-i-n-g-o-_-z-h/figures/zh-cn_image_0152271873.png)
20. 在编辑的转换页面上方单击![](../../image/B-i-n-g-o-_-z-h/figures/zh-cn_image_0151949996.png),设置该转换所在的文件夹和名称,例如该转换名称设置为“get\_user\_data\_from\_bingo”。
**图 15** 保存转换并配置名称<a name="fig149251224165113"></a>
![](../../image/B-i-n-g-o-_-z-h/figures/保存转换并配置名称.png "保存转换并配置名称")
双击“Transformation”图标。
弹出“转换”配置框。
在“转换”中单击“浏览”,选择之前创建的转换。单击“确定”。
按住“Shift”,选择“START”连线至“Transformation”,连接两个元素。
按住“Shift”,选择“Transformation”连线至“Success”,连接两个元素。
在编辑的作业页面上方单击,设置该作业所在的文件夹和该作业名称,例如该作业名称设置为“get_user_data”。
在打开的作业页面上方单击,单击“Run”执行该作业。
执行后,可在执行结果中查看日志,检查该作业是否执行成功。