(1)完全去重
1、数据准备;
2、打开kettle工具,新建转换,如图1所示:
图1
3、配置“csv文件输入”控件;
双击“csv文件输入”控件,进入“csv文件输入”界面,单击“浏览”按钮,选择要进行完全去重处理的csv文件merge.csv,单击“获取字段”按钮,Kettle会自动检索csv文件,并对文件中的字段、类型、格式、长度、精度等属性进行分析,具体如图2所示:
图2
在图2中单击“预览”按钮,查看csv文件merge.csv的数据是否加载到csv文件输入流中,具体效果如图3所示:
图3
从图3可以看出文件merge.csv的数据已经成功抽取到csv文件输入流中,单击“关闭”→“确定”按钮,完成“csv文件输入”控件的配置。
4、配置“唯一行(哈希值)”控件;
双击“唯一行(哈希值)”控件,进入“唯一行(哈希值)”界面,单击“获取”按钮,添加要去重的字段,具体效果如图4所示:
图4
单击图4中的确定按钮,完成“唯一行(哈希值)”控件的配置。
5、运行转换完全去重,效果如图5所示:
图5
图6
(2)填充缺失值
1、打开kettle工具,创建转换,如图7所示:
图7
2、配置“文本文件输入”控件,具体效果如图8所示:
图8
图9
图10 (预览记录)
通过预览记录可以看出,文件people_survey.txt的数据已经成功抽取到文本文件输入流中,单击“关闭”→“确定”按钮,完成“文本文件输入”控件的配置。
将字段workclass同为Private值的字段hours_per_week值相加求均值,并用该均值对字段userid中的值为000016的hours_per_week字段存在的缺失值进行填充。
3、配置“过滤记录”控件;
双击“过滤记录”控件,进入:过滤记录“界面,在条件处设置过滤条件,由于可以看出字段userid为000016用户的hours_per_week存在缺失值,而它的workclass字段值为Private,因此可以将过滤字段设置为workclass、过滤值设置为Private作为过滤条件。具体如图11所示:
图11
在图11中“发送true数据给步骤:”下拉列表中选择“空操作(什么也不做)”,将workclass字段值为Private的数据放在“空操作”控件中;在“发送false数据给步骤:”后的下拉列表中选择“空操作(什么也不做)2”,将workclass字段值不为Private的数据放在“空操作(什么也不做)2”控件中,具体如图12所示:
图12
在图12中单击“确定”按钮,完成“过滤记录”控件的配置。
4、配置“替换NULL值”控件;
双击“替换NULL值”控件,进入“替换NULL值”界面,勾选“选择字段”复选框,并在“字段”框添加字段hours_per_week,值替换为44(44是字段为hours_per_week中所有值相加求的均值这里指用44替换字段hours_per_week中的NULL值),具体如图13所示:
图13
在图13中单击“确定”按钮,完成“替换NULL值”控件的配置。
5、配置“合并记录”控件;
进入“合并记录”控件,进入“合并行(比较)”界面,在“旧数据源:”后的下拉列表中选择“替换NULL值”,在“新数据源:”后的下拉列表中选择“空操作(什么也不做)2”;在“匹配的关键字:”部分添加关键字段,即userid,具体如图14所示:
图14
在图14中单击“确定”按钮,完成“合并记录”控件的配置。
6、配置“替换NULL值2”控件;
进入“替换NULL值”界面,勾选“选择字段”复选框,并在“字段”框添加字段为workclass,值替换为Private(这里用Private替换字段workclass中的NULL值),具体如图15所示:
图15
7、配置“字段选择”控件;
进入“选择/改名值”界面,在“移除”选项卡界面中添加要移除的字段名称,这里移除的是字段flagfield,如图16所示:
图16
在图16中单击“确定”按钮,完成“字段选择”控件的配置。
8、运行转换,效果如图17所示:
图17
图18