2017年03月22日 11:01:19

阅读数:4755
 

前边介绍了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、过滤重复记录(还是使用“过滤记录步骤”)

kettle步骤概览--清洗校验的更多相关文章

  1. CRC 校验原理及步骤

    什么是 CRC 校验? CRC 即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计 ...

  2. CRC校验原理及步骤

    什么是CRC校验? CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并 ...

  3. [目录]Pentaho Kettle解决方案:使用PDI构建开源ETL解决方案

    第一部分:开始 1         ETL入门 1.1   OLTP和数据仓库对比 1.2   ETL是什么 1.2.1          ETL解决方案的演化过程 1.2.2          ET ...

  4. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  5. Struts2基础学习(四)—类型转换器和数据校验

    一.自定义类型转换器 1.概述      Struts2提供了常规类型转换器,可以用于常用数据类型的转换,但如果目标类型是一个特殊类型,则需要自定义转换器.Struts2 类型转换器实际上都是基于OG ...

  6. Kettle安装和配置

    0x01 Kettle软件概览 Spoon:集成开发环境 Kitchen:作业的命令行运行程序,可以通过Schell脚本来调用 Pan:转换的命令行程序 Carte:轻量级的HTTP服务,后台运行,监 ...

  7. .NET MVC执行过程 及 生命周期步骤

    1.网址路由比对 2.执行Controller与Action 3.执行View并返回结果 Request 请求到来 IIS 根据请求特征将处理权移交给 ASP.NET UrlRoutingModule ...

  8. kettle结合MySQL生成保留最近6个月月度报告_20161009

    之前计算用户ID各月的金额(各月在列字段),用的是下面代码 ,b.金额,,b.金额,,b.金额,NULL)) AS 9月金额 FROM ( SELECT city AS 城市,DATE_FORMAT( ...

  9. kettle插入更新流程

    kettle转换步骤工作组件 这里有四个类构成了这个kettle 步骤/节点,每一个类都有其特定的目的及所扮演的角色. TemplateStep:  步骤类实现了StepInteface接口,在转换运 ...

随机推荐

  1. C# DataTable Compute方法的使用

    在开发中需要对DataTable的数据进行处理,比如累加,求最大最小及平均值等,以前都采用手工对DataTable进行循环并计算的方式,现在发现DataTable的Compute方法可以轻松实现这些功 ...

  2. 解决点击tomcat的startup.bat一闪而过的问题

    问题: 点击startup.bat一闪而过,经过网上查询,原来是没有配置JAVA_HOME,配置一下就可以了 原因: tomcat在启动时,会读取环境变量的信息,需要一个CATALINA_HOME 与 ...

  3. HDU 4004 二分

    The Frog's Games Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) ...

  4. 查看job的运行日志

    --sys用户执行以下sql语句,查看job的运行日志select t.owner, t.job_name, t.status, to_char(t.actual_start_date, 'yyyy- ...

  5. div固定顶部和底部

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. JavaScript学习总结(二十二)——JavaScript屏蔽Backspace键

    今天在IE浏览器下发现,当把使用readonly="readonly"属性将文本框设置成只读<input type="text" readonly=&qu ...

  7. Vivado_MicroBlaze_问题及解决方法_汇总(不定时更新)

    Vivado_MicroBlaze_问题及解决方法_汇总(不定时更新) 标签: Vivado 2015-07-03 14:35 4453人阅读 评论(0) 收藏 举报  分类: 硬件(14)  版权声 ...

  8. 关于CMD/DOS中的短文件名规则

    最近在制作一个批处理的过程中发现一个很郁闷的问题,就是有些时候搜索到的结果不是我们想要的

  9. windows下jenkins安装过程中的那些坑

    在jenkins官网https://jenkins.io/download/下载2.89.4版本的war包,使用jar -jar jenkins.war命令安装,报端口被占的错误,使用jar -jar ...

  10. 2018.11.28 RF基础1

    1 射频元件 高频电阻: 高频电容: 高频电感: 2 传输线 a 传输线效应:阻抗,3M法则. b 同轴线:RF中用 c 微带线: 常用: 1/4变换线 回波损耗:用网络分析仪测量 插入损耗:传输功率 ...