PDI 7.1 入门实例
这是一个官方的入门实例,实现完整的ETL流程包括提取数据,转换数据和载入数据。并使用作业控制ETL流程的执行。
一、转换
转换用于描述ETL数据流。
场景
现在需要把一份包含销售数据的文件sales_data.csv导入数据库,但是文件中的一些客户的邮编缺失了,需要在导入数据库前把缺失的邮编补全,邮编补全通过查询一份记录了城市邮编的文件Zipssortedbycitystate.csv。
从文件中提取数据
1、新建一个转换
2、在核心对象标签下,展开输入节点,找到文本文件输入拖入绘图区
3、双击绘图区中的文本文件输入进行编辑
-
导入数据文件
-
设置内容格式
- 获取字段
4、保存转换
由于连接了资源库所以有下面设置对话框,如果没连接资源库就和普通保存文件一样。
过滤缺失邮编的记录
1、在核心对象标签下,展开流程节点,找到过滤记录拖入绘图区
2、按着鼠标滑轮在Read Sales Data和过滤记录之间添加一个跳转
3、双击绘图区的过滤记录进行编辑
4、保存转换
载入数据到数据库
1、在核心对象标签下,展开输出节点,找到表输出拖入绘图区
2、在Filter Missing Zips和表输出之间添加TRUE跳转
3、双击绘图区的表输出进行编辑
-
新建数据库连接(为了方便使用SQLite)
-
生成SALES_DATA表
4、保存转换
从邮编查询文件中提取数据
1、在核心对象标签下,展开输入节点,找到文本文件输入拖入绘图区
2、双击绘图区中的文本文件输入进行编辑
-
导入数据文件
-
设置内容格式
-
获取字段
3、保存转换
处理缺失邮编的记录
1、在核心对象标签下,展开查询节点,找到流查询拖入绘图区
2、在Read Postal Codes和流查询之间添加跳转,在Filter Missing Zips和流查询之间添加FALSE跳转
3、双击绘图区中的流查询进行编辑
-
删除不需要的字段
4、保存转换
统一数据字典并载入数据库
1、在核心对象标签下,展开转换节点,找到字段选择拖入绘图区
2、在Lookup Missing Zips和字段选择之间添加跳转
3、双击绘图区中的字段选择进行编辑
-
查询结果ZIP_RESOLVED字段替代原来的POSTALCODE字段
- 在元数据选项中把ZIP_RESOLVED字段重命名为POSTALCODE并设置字段的格式
4、在Select Values和Write to Database之间添加跳转
5、保存转换
执行转换
-
运行配置
-
运行结果
-
查看输出到数据库的数据
二、作业
作业用于调度ETL工作,定义转换的依赖关系,检查执行条件等。
场景
假设有一个外部系统负责在每周六晚上9点生成销售数据文件,现在需要创建一个作业,检查文件是否已经生成,执行转换将数据导入数据库,这个工作将于每周日上午9点执行。
创建作业
1、新建作业
2、在核心对象标签下,展开通用节点,找到START拖入绘图区
添加条件项
1、在核心对象标签下,展开条件节点,找到检查一个文件是否存在拖入绘图区
2、在START和检查一个文件是否存在之间添加跳转
3、双击绘图区中的检查一个文件是否存在进行编辑
添加转换
1、在核心对象标签下,展开通用节点,找到转换拖入绘图区
2、在检查一个文件是否存在和转换之间添加跳转
3、双击绘图区中的转换进行编辑
设置作业定时执行
- 双击绘图区中的START进行编辑
保存作业
执行作业
由于这是一个定时执行的作业,一般应该放在后台执行,PDI提供了命令行执行作业的工具kitchen.bat
1、添加计划任务执行作业
-
打开windows任务计划程序
-
新建计划任务
-
新建触发器
- 添加操作
注:这里日志输出使用了>>追加到日志文件,kitchen.bat有提供/logfile参数设置日志文件,但是使用时日志文件生成了但并没记录内容。
2、运行计划任务
3、查看运行日志
到日志存放目录查看运行日志
注:为了方便观察结果,这里把job的重复时间改成了五分钟。