kettle中判断输入的数据是不是 偶然错误
2017-03-30 15:10
176 查看
参照表一个常见的用途就是做数据的查询和检验。提供一个输入字段,如果输入字段里的值没有匹配上,就给对应的数据行做一个错误标志。下面使用城市和邮政编码查询做个例子,演示如何使用计算器步骤和查询步骤来判断地址和邮政编码是否匹配。完整的转换如下图:
首先,需要一些输入数据,本例使用了“自定义常量数据”步骤,并添加一些测试数据作为输入,如下图:
第一个清洗步骤就是从邮政编码里提取数字,要使用计算器步骤。在计算器步骤选择“Return only digits from string A”,新增加一个字段保存这些数字,字段名使用像PC4_1这样有业务含义的字段名。然后就需要一个参照表。这里也是用“自定义常量数据”步骤来模拟一个参照表,如下图:
根据PC4_1字段里的四位数字,再使用“流查询”步骤从参照表中查询城市名称。为了后面再处理没有查询到的数据,建议在查询失败时,使用一个容易识别的默认值,下图显示了完整的流查询步骤,这里设置的查询失败的默认值是“***unknown***”。
这里设置的默认值的前缀和后缀都是***,这样设置有两个目的:首先,检查数据的时候比较容易找到这些异常数据;其次,查询后在模糊匹配原始输入的城市名时,这个默认值不会和原来的任何城市名有相似度。后面模糊查询的目的主要是为了检查一些拼写或完整性错误。再使用另一个计算器步骤,把City和RefCity作为字段A和字段B,使用Jaro-Winkler匹配算法,把新生成的字段命名为cityscore。此时预览数据,可以看到如下图所示的结果。
从数据里还不能判断出错误出在哪里:是邮政编码对了城市名错了?还是城市名对了邮政编码错了?为了得到结论,还要做一次相反的校验,“相反”校验是指根据城市名称再去参照表里找邮政编码,然后再和原始数据的邮政编码比较,如果邮政编码非常接近,就可以得出结论,是邮政编码拼写错误。
首先,需要一些输入数据,本例使用了“自定义常量数据”步骤,并添加一些测试数据作为输入,如下图:
第一个清洗步骤就是从邮政编码里提取数字,要使用计算器步骤。在计算器步骤选择“Return only digits from string A”,新增加一个字段保存这些数字,字段名使用像PC4_1这样有业务含义的字段名。然后就需要一个参照表。这里也是用“自定义常量数据”步骤来模拟一个参照表,如下图:
根据PC4_1字段里的四位数字,再使用“流查询”步骤从参照表中查询城市名称。为了后面再处理没有查询到的数据,建议在查询失败时,使用一个容易识别的默认值,下图显示了完整的流查询步骤,这里设置的查询失败的默认值是“***unknown***”。
这里设置的默认值的前缀和后缀都是***,这样设置有两个目的:首先,检查数据的时候比较容易找到这些异常数据;其次,查询后在模糊匹配原始输入的城市名时,这个默认值不会和原来的任何城市名有相似度。后面模糊查询的目的主要是为了检查一些拼写或完整性错误。再使用另一个计算器步骤,把City和RefCity作为字段A和字段B,使用Jaro-Winkler匹配算法,把新生成的字段命名为cityscore。此时预览数据,可以看到如下图所示的结果。
从数据里还不能判断出错误出在哪里:是邮政编码对了城市名错了?还是城市名对了邮政编码错了?为了得到结论,还要做一次相反的校验,“相反”校验是指根据城市名称再去参照表里找邮政编码,然后再和原始数据的邮政编码比较,如果邮政编码非常接近,就可以得出结论,是邮政编码拼写错误。
相关文章推荐
- 判断多个文本框输入的数据是不是有重复
- 判断多个文本框输入的数据是不是有重复(原创)
- 让用户输入一个5位数(若不是5位数,则提示错误),判断它是不是回文数,输出判断结果。回文数:如12321是一个回文数,万位与个位相同,十位与千位相同。
- java程序中,数据验证,如何判断输入的文本框中的值是不是int型?
- java程序中,数据验证,如何判断输入的文本框中的值是不是int型?
- javascript判断输入的值是不是正整数
- Asp.net 判断输入的字符串是不是数字
- [java]判断输入字符串类型( 附测试数据)
- 应用自定义控件实现页面输入数据自动判断
- 一个acm试题,怎样判断是不是数据结尾
- 每天学习一算法系列(9) (输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果)
- 用JavaScript判断用户输入的数据是否如何要求!
- javascript判断输入的值是不是正整数
- 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。这个错误很难判断错在哪里,刚开……
- DataGridView中输入错误数据的处理(五)
- boj problem 1326 冒泡的话复杂度太高 TLE错误。输入时就应该进行判断
- Asp.net 判断输入的字符串是不是数字
- 处理在 Windows 窗体 DataGridView 控件中输入数据时发生的错误
- javascript小实例(判断用户输入的是不是数字,截取两位,四舍五入)
- C++输入数据流用回车符判断终止