8.3.9 加载租赁数据至租赁事实表
1.打开Kettle工具,创建转换
使用Kettle工具,创建一个转换load_fact_rental,并添加表输入控件、字段选择控件、过滤记录控件、计算器控件、增加常量控件、数据库查询控件、维度查询/更新控件、插入/更新控件以及Hop跳连接线,如图1所示:
图1 创建转换load_fact_rental
2.配置表输入控件
双击“表输入”控件,进入“表输入”配置界面,单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。MySQL数据库连接的配置,如图2所示:
图2 配置数据库连接
在SQL框中编写SQL语句,用于获取字段rental_last_update中的最大值,将该值替换为”1970-01-01 00:00:00”并赋值给临时字段max_fact_rental_last_update;单击“预览”按钮,查看临时字段max_fact_rental_last_update是否将默认值设置为“1970-01-01 00:00:00”,如图3所示:
图3 编写SQL语句
3.配置表输入2控件
双击“表输入2”控件,进入“表输入”界面,单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。MySQL数据库连接的配置,如图4所示:
图4 配置数据库连接
在SQL框中编写SQL语句,用于获取sakila数据库中rental数据表中的最新数据,如图5所示:
图5 编写SQL语句
4.配置字段选择控件
双击“字段选择”控件,进入“选择/改名值”界面,在“选择和修改”选项卡中添加要修改的字段,如图所示;在“元数据”选项卡的“需要改变元数据的字段”处添加字段。这里使用字段选择控件用于构建数据仓库中维度表需要的字段数据,如图6、图7所示:
图6 “选择和修改”选项卡
图7 “元数据”选项卡
5.配置过滤记录控件
双击“过滤记录”控件,进入“过滤记录”界面,在“条件”处设置过滤的条件,对归还时间进行过滤操作;单击左边“<field>”框,弹出字段对话框,选择要过滤的字段return_datetime(归还时间),单击“=”框,弹出函数对话框,选择过滤条件(这里选择的是IS NOT NULL(不为空)),单击【确定】按钮,完成过滤条件的选择,判断归还时间不为空。字段return_datetime的过滤设置,在“发送true数据给步骤:”处的下拉框中选择“计算器”,将字段return_datetime不为空的数据传递到计算器控件流中;在“发送false数据给步骤:”处的下拉框中选择“增加常量”,将为空的数据传递到增加常量控件流中,如图8所示:
图8 配置过滤记录控件
6.配置计算器控件
双击“计算器”控件,进入“计算器”界面,在“字段”处,添加新字段milisecs、rental_duration_milisecs、rental_duration、count_returns、return_date_key1,其中字段milisecs为自定义常量,值为1000;字段rental_duration_milisecs用于存储租赁的毫秒数;字段rental_duration用于存储租赁的周期;字段count_returns为自定义字段,用于统计归还的次数;字段return_date_key1用于存储归还的日期。这里使用计算器控件用于计算租赁的周期,如图9所示:
图9 配置计算器控件
7.配置增加常量控件
双击“增加常量”控件,进入“增加常量”界面,在字段框中添加常量字段rental_duration、count_returns、return_date_key1,用来记录归还的日期(由于在过滤记录控件中将归还日期为空的,输出到增加常量控件流中,因此需要在增加常量控件中添加用于记录归还日期的字段),如图10所示:
图10 配置增加常量控件
8.配置数据库查询控件
双击“数据库查询”控件,进入“数据库查询”界面,单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。单击表名右侧的【浏览】按钮,添加数据表inventory,用于查询电影库存的信息;在“查询所需的关键字”框中,添加查询所需的关键字字段inventory_id,用于指定表字段和流字段的比较条件;在“查询表返回的值”框中,添加查询表返回的值,即字段film_id和store_id的数据,如图11所示:
图11 配置数据库查询控件
9.配置数据库查询2控件
双击“数据库查询2”控件,进入“数据库查询”界面,单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。单击表名右侧的【浏览】按钮,添加维度表dim_film,用于获取数据仓库中维度表dim_film中的数据;在“查询所需的关键字”框中,添加查询所需的关键字字段film_id,用于指定表字段和流字段的比较条件;在“查询表返回的值”框中,添加查询表返回的值,即字段film_key,如图12所示:
图12 配置数据库查询2控件
10.配置维度查询/更新控件
双击“维度查询/更新”控件,进入“维度查询/更新”界面,单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。单击目标表右侧的【浏览】按钮,选择输出的目标表,即维度表dim_customer;在“关键字”选项卡处添加关键字字段;在“代理关键字段”处的下拉框中选择customer_key为代理关键字段,并指定“创建代理键”是使用自增字段;在“Stream日期字段”处的下拉框中选择rental_datetime;在“开始日期字段”处的下拉框中选择customer_valid_from;在“截止日期字段”处的下拉框中选择customer_valid_through,如图13所示:
图13 配置维度查询/更新控件
11.配置维度查询/更新2控件
双击“维度查询/更新2”控件,进入“维度查询/更新”界面,单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。单击目标表右侧的【浏览】按钮,选择输出的目标表,即维度表dim_staff;在“关键字”选项卡处添加关键字字段staff_id;在“代理关键字段”处的下拉框中选择staff_key为代理关键字段,并指定“创建代理键”是使用自增字段;在“Stream日期字段”处的下拉框中选择rental_datetime;在“开始日期字段”处的下拉框中选择staff_valid_from;在“截止日期字段”处的下拉框中选择staff_valid_through,如图14所示:
图14 配置维度查询/更新2控件
12.配置维度查询/更新3控件
双击“维度查询/更新3”控件,进入“维度查询/更新”界面,单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。单击目标表右侧的【浏览】按钮,选择输出的目标表,即维度表dim_store;在“关键字”选项卡处添加关键字字段store_id;在“代理关键字段”处的下拉框中选择store_key为代理关键字段,并指定“创建代理键”是使用自增字段;在“Stream日期字段”处的下拉框中选择rental_datetime;在“开始日期字段”处的下拉框中选择store_valid_from;在“截止日期字段”处的下拉框中选择store_valid_through,如图15所示:
图15 配置维度查询/更新3控件
13.配置增加常量2控件
双击“增加常量2”控件,进入“增加常量”界面,在字段框中添加常量字段count_rentals,用于统计租赁的次数,如图16所示:
图16 配置增加常量2控件
14.配置插入/更新控件
双击“插入/更新”控件,进入“插入/更新”界面,单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。单击目标表右侧的【浏览】按钮,弹出“数据库浏览器”窗口,选择目标表,即维度表fact_rental;单击【获取字段】按钮,用来指定查询数据所需要的关键字字段rental_id,用于指定表字段和流字段的比较条件;单击【获取和更新字段】按钮,用来指定需要更新的字段,如图17所示:
图17 配置插入/更新控件
15.运行load_fact_rental转换
单击转换工作区顶部的按钮,运行创建的转换load_fact_rental,实现加载租赁数据至租赁事实表fact_rental中,如图18所示:
图18 运行load_fact_rental转换
17.查看事实表fact_rental中的数据
通过SQLyog工具,查看事实表fact_rental是否已成功插入数据,查看结果如图19所示(部分数据):
图19 查看事实表fact_rental
8.3.10 加载数据库sakila中的数据至数据仓库sakila_dw
1.打开Kettle工具,创建转换
使用Kettle工具,创建一个作业load_rentals,并添加Start控件、转换控件、发送邮件控件、中止作业控件以及Hop作业项连接线,如图20所示:
图20 创建作业load_rentals
2.配置转换控件
双击“转换”控件,进入“转换”界面,单击“Transformations”处的【浏览】按钮,选择添加转换load_dim_staff,如图21所示:
图21 配置转换控件
3.配置转换2控件
双击“转换2”控件,进入“转换”界面,单击“Transformations”处的【浏览】按钮,选择添加转换load_dim_customer,如图22所示:
图22 配置转换2控件
4.配置转换3控件
双击“转换3”控件,进入“转换”界面,单击“Transformations”处的【浏览】按钮,选择添加转换load_dim_store,如图23所示:
图23 配置转换3控件
5.配置转换4控件
双击“转换4”控件,进入“转换”界面,单击“Transformations”处的【浏览】按钮,选择添加转换load_dim_actor,如图24所示:
图24 配置转换4控件
6.配置转换5控件
双击“转换5”控件,进入“转换”界面,单击“Transformations”处的【浏览】按钮,选择添加转换load_dim_film,如图25所示:
图25 配置转换5控件
7.配置转换6控件
双击“转换6”控件,进入“转换”界面,单击“Transformations”处的【浏览】按钮,选择添加转换load_fact_rental,如图26所示:
图26 配置转换6控件
8.配置发送邮件控件
双击发送邮件控件,进入“发送邮件”界面,在“地址”选项卡中添加收件人和发件人的信息,在“服务器”选项卡中添加邮件服务器和验证的信息;在“邮件消息”选项卡中添加消息内容,如图27、图28、图29所示:
图27 配置“地址”选项卡
图28 配置“服务器”选项卡
图29 配置“邮件消息”选项卡
9.配置发送邮件2控件
双击”发送邮件2”控件,进入“发送邮件”界面,在“地址”选项卡中添加收件人和发件人的信息,在“服务器”选项卡中添加邮件服务器和验证的信息,在“邮件消息”选项卡中添加消息内容,如图30、图31、图32所示:
图30 配置“地址”选项卡
图31 配置“服务器”选项卡
图32 配置“邮件消息”选项卡
10.运行作业load_rentals
单击作业工作区顶部的按钮,运行创建的作业load_ rentals,实现加载数据库sakila中的数据至数据仓库sakila_dw中,如图33所示:
图33 运行作业load_rentals
11.查看数据仓库sakila_dw中维度表的数据
通过SQLyog工具,查看数据仓库sakila_dw中的维度表和事实表是否已成功插入数据,查看结果如图34、图35、图36、图37、图38、图39、图40、图41所示:
图34 维度表dim_customer中的数据
图35 维度表dim_date中的数据
图36 维度表dim_actor中的数据
图37 维度表dim_film中的数据
图38 维度表dim_film_actor_bridge中的数据
图39 维度表dim_staff中的数据
图40 维度表dim_time中的数据
图41 事实表fact_rental中的数据