一、数据一致性处理
通过Kettle工具,使用弱一致性对数据表Personnel_Information中的数据进行一致性处理,即利用数据表Personnel_Information中的字段GENDER中的值训练出一个健康值预测模型,用于将原始数据中的字符串特征转化为模型可识别的数字特征。
1、数据准备
现在数据库中有一张名为Personnel_Information的数据表,该表中主要记录了500名职员的性别、身高、体重及健康值,具体数据内容如图所示(注:这里只截取数据表中的部分数据进行展示)。
![](https://img-blog.csdnimg.cn/7405885ce0124eb3ab1c3577f6d13fb8.png)
2、data _consistency转换
(1)创建一个转换data _consistency,并添加“表输入”控件、“值映射”控件、“插入/更新”控件以及Hop跳连接线。
![](https://img-blog.csdnimg.cn/208b9301f7964fbb927a88308a06bd27.png)
(2)各控件配置
1)配置“表输入”控件
配置数据库连接。
在SQL框中编写查询数据表Personnel_Information的SQL语句。
![](https://img-blog.csdnimg.cn/07d5ec7849ac4055a99c8f8af3c7a380.png)
查看数据表Personnel_Information的数据是否成功从MySQL数据库中抽取到表输入流中。
![](https://img-blog.csdnimg.cn/901a757e453f4cd19e2e1a4b9804f666.png)
2)配置“值映射”控件
在“使用的字段名”处的下拉框选择字段GENDER;在“字段值”框中,添加源值和目标值,这里是将Male替换成数字0,将Female替换成数字1。
![](https://img-blog.csdnimg.cn/7775a007d0f24cacad83bba2e568208e.png)
3)配置”插入/更新”控件
单击目标表右侧的【浏览】按钮,选择目标表Personnel_ Information_New。单击【获取字段】按钮,用来指定查询数据所需要的关键字,这里选择的是Personnel_ Information_New数据表中的USERID字段和输入流里面的USERID字段;单击【获取和更新字段】按钮,用来指定需要更新的字段。
![](https://img-blog.csdnimg.cn/ee3b07a8e2304790ac8248f00a1c585b.png)
3、运行data _consistency转换
通过SQLyog工具,查看数据表Personnel_ Information_New是否已成功插入501条数据,查看结果如图所示。
![](https://img-blog.csdnimg.cn/35ef493fd3fb4976a0d0a9bb715c4528.png)
(注:由于转换data _consistency的运行只是单次的,若是后续需要进行将原始数据进行转换、插入操作,则需要运行该转换,这样工作效率很低,因此,通过Kettle工具创建一个作业,对转换data _consistency设置定时器,使得转换data _consistency程序定时自动执行数据同步的操作。)
二、数据规范化处理
通过Kettle工具,对数据进行检验操作。
1、data_validation转换
(1)创建一个转换data_validation,并添加“自定义常量数据”控件、“计算器”控件、“数据检验”控件、“空操作”控件以及Hop跳连接线。
![](https://img-blog.csdnimg.cn/f70bc5a98f514dc4a510405803cd1424.png)
(2)各控件配置
1)配置”自定义常量数据”控件
在该控件里配置实验用的数据;单击“元数据”选项卡,添加字段常量ProductionDate、ProductionName、ProductionNumber以及CommoditySales并指定其数据类型;单击“数据”选项卡,添加自定义的数据。
![](https://img-blog.csdnimg.cn/00a7986274d647c8b0e776d6e5e37cd6.png)
![](https://img-blog.csdnimg.cn/7df688cf0a0d4ff59336e92c2dfcc311.png)
2)配置”计算器”控件
添加一个新字段UnitPrice,用于存储计算出的产品单价数据;在“字段A”和“字段B”处的下拉选项中分别选择“CommoditySales”(销售额)和“ProductionNumber”(销售数量)字段;在“计算”处的下拉框中选择“A/B”,即表示将字段A与字段B进行相除计算。
![](https://img-blog.csdnimg.cn/d4eb36e341694727a58ff80afe5aaa1f.png)
3)配置”数据检验”控件
这里我们制定的检验条件有三个,即日期(ProductionDate)不能在2019年1月1日之前、产品名称(ProductionNumber)必须都是小写以及单个产品价格(UnitPrice)不能超过10这三个检验条件;
单击【增加检验】按钮,弹出“输入检验的名称”窗口,在该窗口中添加检验名称date_verify用于校验如期,添加后单击【确定】按钮关闭“输入检验的名称”窗口。在“要检验的字段名”处,添加要检验的字段;在“错误代码”和“错误描述”处自定义检验到错误数据时日志的输出内容;勾选“检验数据类型”处的复选框;在“数据类型”处指定数据类型;在“转换掩码”处输入与指定检验字段相同的日期格式;在“最小值”处添加检验条件。
![](https://img-blog.csdnimg.cn/1f67c14850db4d06824a97ba985e4324.png)
添加检验名称name_verify用于校验商品名称,对其进行如下配置(这里添加的正则表达式用于校验产品名称是否为小写)。
![](https://img-blog.csdnimg.cn/fe4efa5aa7714d49941fc840345ff34c.png)
添加检验名称price_verify用于校验产品单价,对其进行如下配置。
![](https://img-blog.csdnimg.cn/b9727d63769b4ad8b530f843ecde1f09.png)
4)配置”空操作(什么也不做)”控件
单击选中“数据检验”控件,然后按住Shift键,通过分发方式设置“主输出步骤”连接到“空操作(什么也不做)”控件;设置“错误处理步骤”连接到“空操作(什么也不做)2”控件。
![](https://img-blog.csdnimg.cn/373eb4c748bf460d936cbb78db66d966.png)
2、运行data_validation转换
选中“空操作(什么也不做)2”控件,单击执行结果窗口的“Preview data”选项卡,查看是否将不符合校验规则的数据检验出来。
![](https://img-blog.csdnimg.cn/53d633a45d4f4a3cb37dcf802b5dfc41.png)