【实验目的】
1、利用Kettle的“维度查询/更新”,“表输入”步骤,实现的转换创建与数据仓库缓慢变化维更新的方法。
2、熟练掌握“维度查询/更新”,“表输入”等组件的使用,利用Kettle转换实现数据仓库缓慢变化维更新(类型2)的方法。即业务主体数据发生变化时,用当前最新数据生成新的数据行,保存多个历史版本。
【实验原理】
通过创建Kettle转换 ,利用“维度查询/更新”,“表输入”等组件,实现数据仓库缓慢变化维更新(类型2),即业务主体数据发生变化时,用当前最新数据生成新的数据行,保存多个历史版本。
【实验环境】
操作系统:Windows10
Kettle版本:7.1.0.0
jdk版本:1.8.0及以上版本
【实验步骤】
一、建立转换
双击spoon.bat打开kettle。(1)点击新建按钮,在下拉菜单中点击选择“转换”即可创建;(2)然后点击“保存”重命名该转换文件,保存在某个指定的路径;(3)选择输入步骤、输出步骤和跳。
二、各组件的配置
1.Mysql中创建数据表并插入数据
Step1:创建数据表student,代码如下:
CREATE TABLE student
(
id
bigint(20) NOT NULL AUTO_INCREMENT,
account
varchar(255) DEFAULT NULL,
name
varchar(255) DEFAULT NULL,
address
varchar(255) DEFAULT NULL,
loadtime
datetime DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
插入数据后,查询数据表如下图所示:select * from student;
Step2:创建数据表student_scd2,代码如下:
CREATE TABLE student_scd2
(
id
bigint(20) NOT NULL AUTO_INCREMENT,
account
varchar(255) DEFAULT NULL,
name
varchar(255) DEFAULT NULL,
address
varchar(255) DEFAULT NULL,
updatetime
datetime DEFAULT NULL,
version
int(11) DEFAULT NULL,
date_from
datetime DEFAULT NULL,
date_to
datetime DEFAULT NULL,
id_1
bigint(20) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8;
插入数据后,查询数据表如下图所示:select * from student_scd2;
2.“表输入student_scd2”的配置
Step1:双击‘表输入student_scd2’组件,设置数据库连接为sqlconn,并测试连接
Step2:获取SQl查询语句,设置表student最大的更新时间,其中,
使用coalesce()解释:返回参数中的第一个非空表达式(从左向右依次类推)
3.“表输入student”的配置:
双击“表输入student”组件,设置缓慢维度变化维度是类型2(添加新的内容同时保存历史记录)
3.“维度查询/更新student_scd2”的配置:
Step1:配置目标表、关键字段的名称、以及代理关键字段
Step2:配置‘字段’选项卡,设置字段名称和与之匹配的流字段,更新的类型设置为插入
三、执行转换
点击按钮,执行转换,结果如下:
四、实验结果:
输出结果数据表‘student_scd2’:
五、实验总结
本次实验的目的主要是希望通过创建Kettle转换,利用“维度查询/更新”,“表输入”等组件,实现数据仓库缓慢变化维更新(类型2)的数据历史版本输出和保存。
本次实验过程中,在数据库运用的过程中,进一步增强了遇到问题网上搜索解决的能力,并从中获取更多的知识和运用。