前边介绍了34个子程序
关于清洗和校验的子系统包含四个:
清洗、错误处理、审计维度、排重
Kettle里没有单一的数据清洗步骤,但有很多的步骤组合起来可以完成数据清洗的功能。数据清洗的工作从抽取数据时就开始了:很多输入步骤里都可以设置特定的数据格式,按照特定的数据格式来读取数据,尤其是日期和数值类型。
一、转换目录下的步骤为清洗工作提供了很多不同的选项:
1、Calculator(计算器):
1)ISO8601标准的星期数字和年份数字
2)大小写的转换:首字母大写、全部大写、全部小写可以让字符串的大小写同一。
3)返回/移除数字:这个功能可以把既包含数字也包含字母的字符串拆分成数字和字母部分。
2、Replace in string(字符串转换):
这个步骤可以使用正则表达式用某个字符串来替换字符串里的部分数据。
3、splitting fields(拆分字段)和splitting fields to rows(拆分字段成行)
这两个步骤使用分隔符拆分字段
4、String cut(字符串剪切)
5、Value Mapper(值映射):使用一个标准的替换字段里的其他值
在查询步骤中与Calculate相似的步骤是Fuzzy match(模糊匹配)
Calculate的工作方式是比较一行里的两个字段,Fuzzy match是使用查询的方式,从字典表中查询出相似度在一定范围的两个字段。
二、使用参照表校验数据一致性,使用(Data Grid)添加一些数据。
三、数据校验
Kettle中能完成校验功能的就是Data Validator(数据校验)步骤。第一次编辑数据校验步骤的时候这个步骤是空的,可以选择增加检验来创建一个校验。这个步骤的特点:
1、可以给一个列设置多个约束:有的列可能需要多个约束,这个步骤没有限制在同一个列上可以设置几个约束。
2、校验数据类型:当输入的是字符串格式的数值和日期类型的数据时非常有用,通过设置格式掩码可以很容易找到非法数据。
3、错误合并:把这一行里发现的所有错误,连接合并成一个字符分割的字符串,保存到错误描述字段里。
4、约束条件参数化:几乎所有的约束条件都可以参数化,这样可以通过一个中心规则库来管理这些约束条件,可以不通过ETL工具维护这些约束。只要ETL工具可以读取这些规则并传递给数据验证的步骤。
5、正则表达式匹配:正则表达式匹配不仅仅局限在开头的字符、结尾的字符串等简单匹配。
6查询值:可以从其他步骤读到允许的值,可以有多个其他步骤设置在多个校验规则里。
和过滤步骤相比,数据校验步骤更像是一个高度可配置化的过滤器。满足各种校验条件的数据被发送到主数据流里,不满足条件的数据被发送到错误数据流中。和Filter rows(过滤行)步骤不同的是,“数据校验”
步骤不用必须制定不满足条件的数据的流向。但建议要设置不满足条件的数据流向。“数据校验”步骤的前面两个复选框:
1)报告所有错误,不只第一个:一条记录里可能会不满足多个校验条件。如果选择了这个复选框,即使已经发现一条记录不满足某个验证条件,还是要用其他验证条件来验证这条记录,这样可以获取这条记录的所有错误。
2)输出一行,使用分隔符连接所有错误:当选中这个选项,一行记录的所有错误都放在一行的字段里,如果选中了‘报告所有错误’选项,而没有选中这个选项,所有的错误就会放到多行里。
四、错误处理
错误处理的目的很明确:你希望ETL作业或转换可以捕获并处理运行过程中发生的任何错误。但错误的种类是不同的:
1、处理过程错误:因为技术原因导致处理过程不能继续的错误。
2、数据校验错误:一些数据不能通过数据校验步骤。
3、过滤器错误:实际这不是错误,只不过“过滤行”步骤需要两个输出步骤,一个接收通过过滤器的数据,一个接收没有通过过滤器的数据。经常使用“空操作”步骤接手后面这一类数据。
4、一般步骤错误:Kettle里的很多步骤可以定义错误处理步骤,错误处理步骤用来接收当前步骤处理错误的数据。
启用错误处理:右键单击“数据校验”步骤并选中“定义错误处理”,会打开错误数据处理对话框:
1)错误字段名:设置一个字段名,这个字段保存错误的总个数,如果“数据校验”步骤里没有选中‘输出一行’,这个字段的值永远是1。
2)错误描述列名:设置一个字段名,这个字段保存错误描述,错误描述在“数据校验”步骤里设置。
3)错误列的列名:设置一个字段名,这个字段保存发生错误的字段的字段名。
4)错误编码列名:设置一个字段名,这个字段保存错误编码,错误编码在“数据校验”的步骤里设置。
5)允许的最大错误数:如果设置了这个值,当错误数达到这个值时,转换会抛出一个异常(失败代码)。
6)允许的最大错误百分比:和上面一样,使用一个相对数字,而不是绝对数字。
7)在计算百分比前最少要读入的行数:开始时不计算百分比,直到读入的数据达到设定的值时才开始计算。如果没有设置这个值,而设置了最大百分比是10%,那么在前九条里,只要有一条错误的数据,Kettle就会停止转换。
Switch/Case步骤可以根据错误编码,把错误行发送到不同数据流中。Switch/Case步骤后面就是处理错误的步骤。它可以把不同的数据发送到相同的输出步骤里。
五、审计数据和过程质量
审计转换后数据的质量,通常是提高数据质量过程的第三部。第一步是数据剖析,第二部是检验和错误处理,当最后的结果都被存储在单独的审计或日志里,这些信息就可以用来作报告分析了,最后一步,要基于审计和验证的结果再更新数据。
六、数据排重
Kettle有两个去除重复记录的步骤“Unique rows”和“Unique rows (HashSet)”(唯一行哈希值)。他们的工作方式类似,但前者需要输入的数据事先排好序,后者可以在内存里操作。这两个步骤都只能识别完全相同的数据行,而且检查可以只限制在某几个字段。
设计及排除重复的方法包含四个步骤:
1、模糊匹配(最重要的步骤)流程是:
1)从数据流里读取输入字段。
2)使用某一种模糊匹配算法查询另一个数据流里的字段。
3)返回匹配结果。
2、选择出疑似记录(使用“过滤记录”步骤)
3、查询校验值
4、过滤重复记录(还是使用“过滤记录步骤”)