《数据清洗》第六章课后操作题_Sleeping憨豆豆的博客-程序员秘密

技术标签: mysql  etl  数据清洗  

(1)打开Kettle工具,新建转换
使用Kettle工具,创建一个转换generalization,并添加文本文件输入控件、表输入控件、字段选择控件、排序记录控件、记录集连接控件、表输出控件以及Hop跳连接线,具体效果如图6-1所示。

(2)配置文本文件输入控件
双击图6-1中的“文本文件输入”控件,进入“文本文件输入”界面,单击【浏览】按钮,选择要抽取personnel_data.txt文件;单击【增加】按钮,将要抽取的personnel_data.txt文件添加到generalization转换中。

 单击“内容”选项卡,在分隔符处清除默认分隔符“;”,单击【Insert TAB】按钮,在分隔符处插入一个制表符;取消勾选“头部”复选框。“内容”选项卡的配置具体效果如图6-3所示。(若预览出现乱码,则可以将编码方式设置为GBK或UTF-8)

 在图6-3中,单击“字段”选项卡,根据personnel_data.txt文件的内容添加对应的字段名称,并指定数据类型。“字段”选项卡的配置,如图6-4所示。

单击【确定】按钮,完成“文本文件输入”控件的配置。
(3)配置字段选择控件

双击图6-1中的“字段选择”控件,进入“选择/改名值”界面,在“选择和修改”选项卡处添加字段名称,具体如图6-5所示。

 在图6-5中,单击【确定】按钮,完成“字段选择”控件的配置。
(4)配置排序记录控件
双击图6-1中的“排序记录”控件,进入“排序记录”界面,并在“字段”框中添加字段household_register,对其进行排序,具体如图6-6所示。

 在图6-6中,单击【确定】按钮,完成“排序记录”控件的配置。
(5)配置表输入控件
双击图6-1中的“表输入”控件,进入“表输入”界面,单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。MySQL数据库连接的配置,

 在图6-7中的SQL框中编写SQL语句,用于查询city数据表(注:该表需提前创建,)中字段city和pid的数据,用于与personnel_data.txt文件中household_register字段进行合并连接,具体如图6-9所示。

 在图6-9中,单击【确定】按钮,完成“表输入”控件的配置。
(6)配置排序记录2控件
双击图6-1中的“排序记录 2”控件,进入“排序记录”界面,在“字段”框中添加字段city,并对其进行排序,具体如图6-10所示。 


在图6-10中,单击【确定】按钮,完成“排序记录2”控件的配置。
(7)配置记录集连接控件
双击图6-1中的“记录集连接”控件,进入“合并排序”界面,在“第一个步骤”处的下拉框中选择“排序记录”,“第二个步骤”处的下拉框中选择“排序记录2”;在“第一个步骤的连接字段”和“第二个步骤的连接字段”处添加连接字段,这里添加的连接字段是household_register和city;在“连接类型”处的下拉框选择连接类型,这里选择的LEFT OUTER,即左外连接,具体如图6-11所示。

  

在图6-11中,单击【确定】按钮,完成记录集连接控件的配置。
(8)配置字段选择2控件
双击图6-1中的“字段选择2”控件,进入“选择/改名值”界面,在“选择和修改”选项卡处添加字段名称,这里添加的是记录集连接流中的字段household_register和pid,具体如图6-12所示。

 

在图6-12中,单击【确定】按钮,完成“字段选择2”控件的配置。
(9)配置排序记录3控件
双击图6-1中的“排序记录 3”控件,进入“排序记录”界面,在“字段”框中添加字段pid,并对其进行排序,具体如图6-13所示。

 

在图6-13中,单击【确定】按钮,完成排序记录3控件的配置。
(10)配置表输入2控件
双击图6-1中的“表输入2”控件,进入“表输入2”界面,单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。MySQL数据库连接的配置,具体如图6-15所示。

 

在图6-14中的SQL框中编写SQL语句,用于查询provincial数据表(注:该表需提前创建)中字段Provincial和pid的数据,用于与household_register字段进行合并连接,具体如图6-16所示。

在图6-16中,单击【确定】按钮,完成“表输入2”控件的配置。
(11)配置排序记录4控件
双击图6-1中的“排序记录 4”控件,进入“排序记录”界面,在“字段”框中添加字段pid,并对其进行排序,具体如图6-17所示。

  

在图6-17中,单击【确定】按钮,完成“排序记录4”控件的配置。
(12)配置记录集连接2控件
双击图6-1中的“记录集连接2”控件,进入“合并排序”界面,在“第一个步骤”处的下拉框中选择“排序记录3”,“第二个步骤”处的下拉框中选择“排序记录4”;在“第一个步骤的连接字段”和“第二个步骤的连接字段”处添加连接字段,这里添加的连接字段是pid;在“连接类型”处的下拉框选择连接类型,这里选择的LEFT OUTER,即左外连接,具体如图6-18所示。

 

在图6-18中,单击【确定】按钮,完成“记录集连接2”控件的配置。
(13)配置字段选择3控件
双击图6-1中的“字段选择3”控件,进入“选择/改名值”界面,在“选择和修改”选项卡处添加字段名称,这里添加的是记录集连接2流中的字段household_register和Provincial,具体如图6-19所示。

 在图6-19中,单击【确定】按钮,完成“字段选择3”控件的配置。
(14)配置表输出控件
双击图8-1中的“表输出”控件,进入“表输出”配置界面,单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。MySQL数据库连接的配置,具体如图8-20所示

 在图6-20中,单击目标表右侧的【浏览】按钮,选择输出的目标表,即临时数据表personnel;勾选“指定数据库字段”的复选框,具体如图8-21所示,单击【输入字段映射】按钮,让Kettle自动实现映射。

 (15)打开Kettle工具,新建转换
使用Kettle工具,创建一个转换generalization_merge,并添加表输入控件、字段选择控件、排序记录控件、记录集连接控件、文本文件输出控件以及Hop跳连接线,具体效果如图6-25所示。

(16)配置表输入控件
双击图6-25中的“表输入”控件,进入“表输入”界面,如图6-7所示。
在图6-26中,单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。MySQL数据库连接的配置,具体如图6-27所示。

 在图6-26中的SQL框中编写SQL语句,用于查询数据表personnel中的数据,具体如图6-28所示。

在图6-28中,单击【确定】按钮,完成“表输入”控件的配置。
(17)配置字段选择控件
双击图6-25中的“字段选择”控件,进入“选择/改名值”界面,在“选择和修改”选项卡处添加字段名称,具体如图6-29所示。

 在图6-29中,单击【确定】按钮,完成“字段选择”控件的配置。
(18)配置排序记录控件
双击图6-25中的“排序记录”控件,进入“排序记录”界面,并在“字段”框中添加字段id,对其进行排序,具体如图6-30所示。

在图6-30中,单击【确定】按钮,完成“排序记录”控件的配置。
(19)配置文本文件输入控件
双击图6-25中的“文本文件输入”控件,进入“文本文件输入”界面,单击【浏览】按钮,选择要抽取personnel_data.txt文件;单击【增加】按钮,将要抽取的personnel_data.txt文件添加到generalization_merge转换中,如图6-31所示。 

在图6-33中,单击【确定】按钮,完成“文本文件输入”控件的配置。
(20)配置字段选择2控件
双击图6-25中的“字段选择2”控件,进入“选择/改名值”界面,在“选择和修改”选项卡处添加字段名称,具体如图6-34所示。

在图6-34中,单击【确定】按钮,完成“字段选择”控件的配置。
(21)配置排序记录2控件
双击图6-25中的“排序记录”控件,进入“排序记录”界面,并在“字段”框中添加字段id,对其进行排序,具体如图6-35所示。

 

在图6-35中,单击【确定】按钮,完成“排序记录2”控件的配置。
(22)配置记录集连接控件
双击图6-25中的“记录集连接”控件,进入“合并排序”界面,在“第一个步骤”处的下拉框中选择“排序记录”,“第二个步骤”处的下拉框中选择“排序记录2”;在“第一个步骤的连接字段”和“第二个步骤的连接字段”处添加连接字段,这里添加的连接字段是id;在“连接类型”处的下拉框选择连接类型,这里选择的LEFT OUTER,即左外连接,具体如图6-36所示。

 在图6-36中,单击【确定】按钮,完成“记录集连接”控件的配置。
(23)配置字段选择3控件
双击图6-25中的“字段选择3”控件,进入“字段选择”界面,在“选择和修改”选项卡处添加字段名称,并将字段household_register_new改为household_register,具体如图6-37所示。

 图6-37 配置字段选择3控件
在图6-37中,单击【确定】按钮,完成“字段选择3”控件的配置。
(24)配置文本文件输出控件
双击图6-25中的“文本文件输出”控件,进入“文本文件输出”界面,单击“文件名称”右侧的【浏览】按钮,选择输出文件,即文本文件personnel_data_new,如图6-38所示;

单击“内容”选项卡,进入“内容”界面,清除分隔符处的默认分隔符,单击【插入Tab】按钮,插入Tab分隔符。并在编码处的下拉框选择“UTF-8”编码,如图6-39所示;

单击“字段”选项卡,进入“字段”界面,添加要输出的字段,如图6-40所示。

在图6-40中,单击【确定】按钮,完成“文本文件输出”控件的配置。
(25)打开Kettle工具,新建作业
使用Kettle工具,创建一个作业generalization,并添加Start控件、转换控件、成功控件以及Hop作业项连接线,具体效果如图6-41所示。

 

(26)配置转换控件
双击图6-41中的“转换”控件,进入“转换”界面,单击“Transformations”处的【浏览】按钮,选择添加转换generalization,具体如图6-42所示。

 在图6-42中,单击【确定】按钮,完成“转换”控件的配置。
(27)配置转换2控件
双击图6-41中的“转换2”控件,进入“转换”界面,单击“Transformations”处的【浏览】按钮,选择添加转换generalization_merge,具体如图6-43所示。

 在图6-43中,单击【确定】按钮,完成“转换2”控件的配置。
(28)运行作业generalization
单击作业工作区顶部的按钮,运行作业generalization,实现将文本文件personnel_data.txt中字段为household_register的数据统一成省份(直辖市),并输出到文本文件personnel_data_new.txt中。运行作业generalization的效果如图6-44所示。

从图6-44中的执行结果来看,即每个控件的右上角均有“√”,则说明作业generalization执行成功。
(29)查看文本文件personnel_data_new.txt中的数据
通过文本编辑器工具,查看文本文件personnel_data_new.txt中的数据,查看结果如图6-45所示。

 

 


 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_46618641/article/details/121414333

智能推荐

Android集成Zxing实现二维码的扫描与生成(含动态权限)_李诗雨的博客-程序员资料

不诗意的女程序猿不是好厨师~ 【转载请注明出处:From李诗雨】目前在做一个和机顶盒相关的app,项目中需要使用二维码扫描来绑定机顶盒。由于工期的原因,也没时间细细研究,只是粗略集成了一下。在此,又重新写了一个demo,以示记录。源码demo:点击下载。Demo说明:①实现二维码的扫描②实现二维码的生成③使用RxPermissions做了动态

STM32 串口通信介绍及cubemx配置_Nie_Hen的博客-程序员资料

学习理解STM32的串口通信,中断以及I2C的使用。应用:使用中断和串口通通信获取按键值发送出来并显示到数码管上。使用I2C 将获取到的按键值保存到内存中。串口通信计算机的CPU与外部设备之间的信息交换,以及计算机与计算机之间的信息交换过程称为通信。并行通信数据字节的各位同时传送的通信方式。并行通信的优点是数据传送速度快,缺点是占用的传输线条数多,适用于近距离通信。串行通信(Se...

android 背景图缩放,解决android:background背景图片被拉伸问题_weixin_39639600的博客-程序员资料

ImageView中XML属性src和background的区别:background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸。src是图片内容(前景),bg是背景,可以同时使用。此外:scaleType只对src起作用;bg可设置透明度,比如在ImageButton中就可以用android:scaleType控制图片的缩放方式如上所述,backg...

qt用odbc连接mysql_【原创】Qt 使用ODBC driver 连接SQL Server_午餐时间到了的博客-程序员资料

最近在做数据库的课程设计。第一个需要解决的问题是使用什么工具来实现这个系统。经过一番资料查找,决定使用SQL Server Express 2012作为服务器,使用Qt作为编写客户端程序语言。问题是client如何连接SQL Server? 下面是我的解决方法。1.开启windows上的SQL Server 的ODBC驱动ODBC 是一个调用级接口,它使得应用程序得以访问任何具有 ODBC 驱动程...

翻页时钟代码大公开_lovefan的博客-程序员资料_翻页钟开源代码

不少朋友向我要翻页时钟的代码,现在贴给大家。代码水平有限,见谅。看不明白的可以问我:)js// miniprogram/pages/flipClock/jsconst moment = require('../../../utils/moment-with-locales.min.js');const Lunar = require('../../../utils/lunar.js');var startX, endX;var moveFlag = true; // 判断执行滑动事件.

JAVA切换不了FTP服务器目录_解决linux下ftp指定访问目录无法修改的问题_豪睿刘爱上楼楼梯的博客-程序员资料

他的系统是CentOS,是RH派系的。我把vsftpd安装配置好了,以为大功告成,但客户端访问提示如下错误:500 OOPS: cannot change directory:/home/ftp原因是他的CentOS系统安装了SELinux,因为默认下是没有开启FTP的支持,所以访问时都被阻止了。//查看SELinux设置# getsebool -a|grep ftpftpd_disable_tr...

随便推点

centos7搭建zabbix4.4_萌新包大人的博客-程序员资料

centos7搭建zabbix4.4环境准备:1、centos7服务器一台(版本CentOS-7-x86_64-Minimal-1908)2、已分配主机IP地址172.18.100.113搭建步骤:1、更改主机名、修改hosts文件HOSTNAME=zabbix hostnamectl set-hostname "$HOSTNAME" echo "$HOSTNAME">/etc/hostname echo "$(grep -E '127|::1' /etc/hosts)">/e

thttpd+cgilua_简单并快乐着的博客-程序员资料

PC安装1: 下载thttpd:  http://acme.com/software/thttpd/2: 参考前面文章安装kepler/xavante (实际上要不了那么多lua module,但这种方式安装最简单),或者只安装如下module:wsapi  cgilua  md5  luasocket (luaexpat)3:  创建www组groupadd ww

阿里的BUG智能定位神器!直接定位线上BUG,超给力!必须收藏!_l_瓶中精灵的博客-程序员资料

点击上方“阿拉奇学Java”,选择“置顶或者星标”每天早晨00点00分, 与你相约!往日回顾:Java 14 令人期待的 5 大新特性,打包工具终于要来了! 定位过程分析代码...

机器学习中用到的概率知识_机器学习必备的概率统计基础_weixin_40009393的博客-程序员资料

现如今,计算机科学、人工智能、数据科学已成为技术发展的主要推动力。无论是要翻阅这些领域的文章,还是要参与相关任务,你马上就会遇到一些拦路虎:想过滤垃圾邮件,不具备概率论中的贝叶斯思维恐怕不行;想试着进行一段语音识别,则必须要理解随机过程中的隐马尔科夫模型;想通过观察到的样本推断出某类对象的总体特征,估计理论和大数定理的思想必须建立;在统计推断过程中,要理解广泛采用的近似采样方法,蒙特卡洛方法以及马...

oracle使用sqlplus远程连接ASM实例的方式_kadwf123的博客-程序员资料_oracle连接asm实例

sqlplus sys/[email protected]:1521/+ASM as sysasm至于配置成tns,照着普通oracle连接方式配置就行,此处每次不记得命令格式,写在这边记录一下;最后的+ASM指的是服务名,不是实例名,写成实例名连不上。...

一文了解人脸识别:从实现方法到应用场景都讲明白了_大数据v的博客-程序员资料

导读:在本文中,我们将会接触到一个既熟悉又陌生的概念——人脸识别。之所以熟悉,是因为人脸识别技术在我们日常生活中应用极其广泛,例如火车站刷脸验票进站、手机人脸解锁等;之所...