6.3数据粒度的转换

业务系统一般存储非常明细的数据,而数据仓库中数据是用来分析的,不需要非常明细的数据。一般情况下,会将业务系统数据按照数据仓库粒度进行聚合,这个过程就被称为数据粒度的转换

案例介绍:通过Kettle工具将对数据表company进行数据粒度的转换操作,即将数据表company中字段为salesArea的数据都统一成省级份,并存储到新数据表company_new中。

A公司的日手机销售情况中的销售区域是市级,而B公司的日手机销售情况中的销售区域是省级,A公司和B公司的日手机销售情况合并后存储在数据表company中,通过仔细观察数据表company中字段为salesArea的一列,发现该列既包含市级也包含省级。数据表company中的部分数据内容,如图所示。

使用Kettle工具,创建一个转换,并添加表输入控件、字段选择控件、排序记录控件、记录集连接控件、过滤控件、空操作控件、表输出控件以及Hop跳连接线,具体如图所示: 

配置“表输入”控件

单击“新建”按钮,配置数据库连接,配置完成后单击“确认”按钮。MySQL数据库连接的配置,具体如图32所示;在SQL框中编写获取数据表company中所有数据的SQL语句,然后单击“预览”按钮,查看数据表company中数据是否成功从MySQL数据库中抽取到表输入流中,具体如图所示:

 配置“字段选择”控件

双击“字段选择”控件,进入“选择/改名值”界面,在“选择和修改”选项卡的“字段”处手动添加所需字段,这里添加字段id和salesArea,具体如图所示:

配置“排序记录”控件

双击“排序记录”控件,进入“排序记录”配置界面,在“字段”框中添加字段salesArea,通过以该字段为基础对整体数据进行升序排序,具体如图所示:

配置“表输入2”控件

双击图31,中的“表输入2”控件,进入“表输入”配置界面,单击“新建”按钮,配置数据库连接,配置完成后单击“确认”按钮。在SQL框中编写SQL语句,用于查询city数据表中字段city和pid的数据,用于与数据表company中字段salesArea进行合并连接;单击“预览”按钮,查看city数据表中的字段city和pid的数据是否成功从MySQL数据库中抽取到表输入流中,具体如图所示:

 

 

配置“排序记录2”控件

双击图中的“排序记录2”控件,进入“排序记录”配置界面,并在“字段”框中添加字段city,以该字段为基础对整体数据进行升序排序,具体如图所示:

配置“记录集连接”控件

双击“记录集连接”控件,进入“合并排序”配置界面,并在“第一个步骤”处的下拉框中选择“排序记录”控件,“第二个步骤”处的下拉框中选择“排序记录2”控件;在“第一个步骤的连接字段”和“第二个步骤的连接字段”处分别添加连接字段,这里添加的连接字段是salesArea和city,将“排序记录”控件流中的数据与“排序记录2”控件流中的数据进行合并连接;在“连接类型”处的下拉框选择连接类型,这里选择的LEFT OUTER,即左外连接,具体如图所示:

 配置“字段选择2”控件

双击“字段选择2”控件,进入“选择/改名值”界面,并在“选择和修改”选项卡的“字段”处手动添加所需字段,这里添加字段id、pid和salesArea,具体如图所示:

 配置“排序记录3”控件

双击“排序记录3”控件,进入“排序记录”配置界面,在“字段”框中添加字段pid,以该字段为基础对整体数据进行升序排序,具体如图所示:

配置“表输入3”控件

双击“表输入3”控件,进入“表输入”界面,单击“新建”按钮,配置数据库连接,配置完成后单击“确认”按钮。在SQL框中编写SQL,用于获取数据表provincial中字段为id和Provincial的数据,后续用于与“排序记录”控件流中的字段数据进行合并连接,然后单击“预览”按钮,查看数据表provincial中字段为id和Provincial的数据是否成功从MySQL数据库中抽取到表输入流中,具体如图所示

配置“排序记录4”控件

双击“排序记录4”控件,进入“排序记录”配置界面,并在“字段”框中添加字段pid,以该字段为基础对整体数据进行升序排序,具体如图所示:

配置“记录集连接2”控件

双击“记录集连接2”控件,进入“合并排序”配置界面,并在“第一个步骤”处的下拉框中选择“排序记录3”控件,“第二个步骤”处的下拉框中选择“排序记录4”控件;在“第一个步骤的连接字段”和“第二个步骤的连接字段”处分别添加连接字段,这里分别添加的连接字段是pid和pid;在“连接类型”处的下拉框选择连接类型,这里选择的LEFT OUTER,即左外连接,在“字段”框中添加字段pid,以该字段为基础对整体数据进行升序排序,具体如图所示:

.配置“过滤记录”控件

双击“过滤记录”控件,进入“过滤记录”配置界面;在“条件”处设置过滤的条件,将字段为Provincial中值为“null”的数据过滤掉;在“发送true数据给步骤:”处的下拉框中选择“空操作”,将Provincial字段值为不为null的数据放在“空操作”控件中;在“发送false数据给步骤:”处的下拉框中选择“空操作(什么也不做)2”,将Provincial字段值为null的数据放在“空操作(什么也不做)2”控件中,具体如图所示:

配置“字段选择3”控件

双击“字段选择3”控件,进入“选择/改名值”界面;在“选择和修改”选项卡的“字段”处手动添加所需字段,这里添加字段id和Provincial,用于后续进行输出,具体如图所示:

.配置“表输出”控件

双击“表输出”控件,进入“表输出”控件的配置界面;单击“新建”按钮,配置数据库连接,配置完成后单击“确认”按钮。单击目标表右侧的“浏览”按钮,指定输出目标表,即数据表temporary;勾选“指定数据库字段”复选框,用于将数据表temporary的字段与字段选择3控件输出流中的字段进行匹配,具体如图所示;单击“数据库字段”选项卡;单击“输入字段映射”按钮,弹出“映射匹配”对话框,依次选中“源字段”选项框的字段和“目标字段”选项框对应的字段,再单击“Add”按钮,将一对映射字段添加至“映射”选项框中,若“源字段”选项框的字段和“目标字段”选项框的字段相同,则可以单击“猜一猜”按钮,让Kettle自动实现映射,具体如图所示;单击“确定”按钮,完成“源字段”与“目标字段”的映射匹配。“表输出”界面最终的配置如图所示:

配置“字段选择4”控件

双击“字段选择4”控件,进入“选择/改名值”界面,并在“选择和修改”选项卡的“字段”处手动添加所需字段,这里添加字段id和salesArea,用于后续进行输出,具体如图所示

 

.配置“表输出2”控件

双击“表输出2”控件,进入“表输出”控件的配置界面,单击“新建”按钮,配置数据库连接,配置完成后单击“确认”按钮。单击目标表右侧的“浏览”按钮,指定输出目标表,即数据表temporary;勾选“指定数据库字段”复选框,用于将数据表temporary的字段与字段选择4控件输出流中的字段进行匹配;单击“数据库字段”选项卡,具体如图所示;单击“输入字段映射”按钮,弹出“映射匹配”对话框,依次选中“源字段”选项框的字段和“目标字段”选项框对应的字段,再单击“Add”按钮,将一对映射字段添加至“映射”选项框中,若“源字段”选项框的字段和“目标字段”选项框的字段相同,则可以单击“猜一猜”按钮,让Kettle自动实现映射,具体如图所示;单击“确定”按钮,完成“源字段”与“目标字段”的映射匹配。“表输出”界面最终的配置如图所示:

.打开Kettle工具,新建转换

使用Kettle工具,创建一个新的转换,并添加表输入控件、字段选择控件、排序记录控件、记录集连接控件、表输出控件以及Hop跳连接线,具体如图所示:

配置“表输入”控件

双击步骤中的“表输入”控件,进入“表输入”界面,单击“新建”按钮,配置数据库连接,配置完成后单击“确认”按钮。在SQL框中编写获取数据表temporary中字段id和salesArea的数据的 SQL语句,然后单击“预览”按钮,查看数据表temporary中数据是否成功从MySQL数据库中抽取到表输入流中,如图所示:

 

配置“字段选择”控件

双击步骤中的“字段选择”控件,进入“选择/改名值”界面,并在“选择和修改”选项卡的“字段”处手动添加所需字段,这里添加字段id和salesArea,后续用于与数据表company中的数据进行合并,“选择和修改”选项卡的配置如图所示:

配置“排序记录”控件

双击步骤中的“排序记录”控件,进入“排序记录”配置界面,并在“字段”框中添加字段id,以此字段为基础对所有数据进行升序排序,如图所示:

配置“表输入2”控件

双击步骤中的“表输入2”控件,进入“表输入”配置界面,单击“新建”按钮,配置数据库连接,配置完成后单击“确认”按钮。在SQL框中编写SQL语句,用于查询数据表company中的全部数据,然后单击【预览】按钮,查看数据表company中的数据是否成功从MySQL数据库中抽取到表输入流中,如图所示:

 

.配置“字段选择2”控件

双击步骤中的“字段选择2”控件,进入“选择/改名值”界面,并在“选择和修改”选项卡的“字段”处手动添加所需字段,这里添加字段id、brand、model、unitPrice、number,后续通过字段id将数据表temporary中字段salesArea和数据表company中的数据进行合并,“选择和修改”选项卡的配置如图所示:

配置“排序记录2”控件

双击步骤中的“排序记录2”控件,进入“排序记录”配置界面,并在“字段”框中添加字段id,以此字段为基础对全部数据进行升序排序,具体如图所示:

.配置“记录集连接”控件

双击步骤中的“记录集连接”控件,进入“合并排序”配置界面,并在“第一个步骤”处的下拉框中选择“排序记录”,“第二个步骤”处的下拉框中选择“排序记录2”;在“第一个步骤的连接字段”和“第二个步骤的连接字段”处添加连接字段,这里添加的连接字段是id和id,用于将“排序记录”控件流中的数据与“排序记录2”控件中的数据合并连接;在“连接类型”处的下拉框选择连接类型,这里选择的FULL OUTER,即完全外连接,具体如图所示:

配置“字段选择3”控件

双击步骤中的“字段选择3”控件,进入“选择/改名”配置界面,并在“选择和修改”选项卡的“字段”处手动添加所需字段,由于源数据表company中包含字段id、salesArea、brand、model、unitPrice、number,因此需要获取“记录集连接”控件流中的字段id、salesArea、brand、model、unitPrice、number,用于与源数据表company中的字段相对应,具体如图所示:

 

配置“表输出”控件

双击步骤中的“表输出”控件,进入“表输出”配置界面,单击“新建”按钮,配置数据库连接,配置完成后单击“确认”按钮。单击目标表右侧的“浏览”按钮,指定输出目标表,即数据表company_new;勾选“指定数据库字段”复选框,用于将数据表temporary的字段与字段选择3控件输出流中的字段进行匹配;单击“数据库字段”选项卡;单击“输入字段映射”按钮,弹出“映射匹配”对话框;依次选中“源字段”选项框的字段和“目标字段”选项框对应的字段,再单击“Add”按钮,将一对映射字段添加至“映射”选项框中,若“源字段”选项框的字段和“目标字段”选项框的字段相同,则可以单击“猜一猜”按钮,让Kettle自动实现映射,具体如图所示;单击“确定”按钮,完成“源字段”与“目标字段”的映射匹配。“表输出”界面最终的配置,具体如图所示:

 使用Kettle工具,创建一个作业granularity,并添加Start控件、转换控件、成功控件以及作业跳连接线,具体如图所示:

.配置“Start”控件

双击步骤中的“Start”控件,进入“作业定时调度”界面,该控件中可以设置时间调度以执行作业,这里使用默认配置,不作修改。单击“确定”按钮,完成Start控件的配置,具体如图​​​​​​​所示 

配置“转换”控件

双击步骤中的“转换”控件,进入“转换”配置界面,单击“浏览”按钮,选择添加转换granularity至作业中,具体如图​​​​​​​所示:

配置“转换2”控件

双击步骤中的“转换2”控件,进入“转换”配置界面,单击“浏览”按钮,选择添加转换granularity_merge至作业中,具体如图所示:

 

运行作业granularity

查看数据表company_new中的数据

 转换完成

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清水*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值