ETL笔记——第五章 数据清洗与校验(异常值)

一、删除包含异常值的记录

通过Kettle工具,去除文件temperature.txt中的异常值。

1、数据准备

现在有这样一份记录一天中不同时间温度的数据文件temperature.txt,其中包含时间和温度(摄氏度)两个字段,具体内容如图所示(展示部分数据)。

2、delete_anomalous _value转换

(1)通过使用Kettle工具,创建一个转换delete_anomalous _value,并添加“文本文件输入”控件、“过滤记录”控件、“空操作(什么也不做)”控件以及Hop跳连接线。

 

(2)各控件配置

1)配置文本文件输入控件

将要去除异常值的文件temperature.txt添加到“文本文件输入”控件中。

 

清除分隔符处的默认分隔符“;”,在分隔符处插入一个制表符;取消勾选“头部”复选框。

 

根据文件temperature.txt的内容添加对应的字段名称,并指定数据类型。

 

查看文件temperature.txt的数据是否成功抽取到文本文件输入流中。

 

2)配置过滤记录控件

在“条件”处设置过滤的条件,由于文件temperature.txt中time为6:30的温度是137摄氏度,不在非异常值的范围内,因此属于异常值,我们应该将过滤字段设置为temperature、过滤值为137。

在“发送true数据给步骤:”处的下拉框中选择“空操作(什么也不做)2”,将异常值放在“空操作(什么也不做)2”控件中;在“发送false数据给步骤:”处的下拉框中选择“空操作(什么也不做)”,将非异常值放在“空操作(什么也不做)”控件中。

3、运行delete_anomalous _value转换

单击“空操作”控件,再单击执行结果的“Preview data”选项卡,查看文件temperature.txt是否去除了异常值。

 

二、修补异常值

通过Kettle工具,替换和修改数据表interpolation_data中的异常值。

1、数据准备

现在有一份500人的身高调查数据表interpolation_data,其中包括id、Gender和Height字段,具体数据内容如图所示(注:这里只截取了部分人的数据)。

 

2、fill_unusual_value转换

(1)通过使用Kettle工具,创建一个转换fill_unusual_value,并添加“表输入”控件、“过滤记录”控件、“空操作(什么也不做)”控件、“设置值为NULL”控件、“合并记录”控件、“替换NULL值”控件、字段选择控件以及Hop跳连接线。

 

(2)各控件配置

1)配置表输入控件

配置数据库连接

 

在SQL框中编写查询数据表interpolation_data的SQL语句,查看数据表interpolation_data的数据是否成功从MySQL数据库中抽取到表输入流中。

 

 

2)配置过滤记录控件

在“条件”处设置过滤的条件,即设置Height字段的取值范围([114-226]),从而判断数据表中的每个数据是否为异常值。若是在非异常值的取值范围内,则是非异常值,否则是异常值。

在“发送true数据给步骤:”处的下拉框中选择“空操作(什么也不做)2”,将非异常值放在“空操作(什么也不做)2”控件中;在“发送false数据给步骤:”处的下拉框中选择“空操作(什么也不做)”,将异常值放在“空操作(什么也不做)”控件中。

 

预览“空操作(什么也不做)”控件中的数据,观察异常数据

 

 

3)配置设置值为NULL控件

在“字段”处添加要设为NULL值的字段名称和值。

 

4)配置合并记录控件

在“旧数据源:”处选择“设置为NULL值”,“新数据源:”处选择“空操作(什么也不做)2”;在“匹配的关键字:”处,添加关键字段,即id。

 

5)配置替换NULL值控件

勾选“选择字段”处的复选框,并在“字段”框添加字段为Hight,值替换为170(通过计算得到499人的平均身高值近似为170,因此用170替换字段Hight中的NULL值)。

 

6)配置字段选择控件

移除字段flagfield。

 

3、运作fill_unusual_value转换

查看数据表interpolation_data中的异常值是否修改并替换。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值