DaTaStage入门学习心得_datastage入门教程
DaTaStage入门学习心得由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“datastage入门教程”。
DataStage入门学习心得
DataStage是一个ETL的工具,就是对数据的抽取,转换,加载。个人通俗的理解就是一个对数据进行处理,提取的工具,这里面的数据大部分是以数据库中表的格式存在着的,所以如果要使用这个工具,首先必须对关系数据库的一些基本概念要有所了解,比如最基本的字段,键,记录等概念。
DataStage是通过设计job来实现ETL的功能的。Job的设计跟普通的IDE设计一样,通过拖拽控件,并填加脚本来完成。这里的控件称为stage,每一个不同的stage都有不同的数据处理的功能,将各个stage通过一定的方式组合起来,设计成job,对job进行编译,运行,就能够实现对数据抽取转换加载。
因此,要设计job的关键,就在于能够熟悉每个不同的stage并且能够灵活运用。在文档和指导中有对每个控件的使用方法作了图文并茂的说明,但是教材语言的一个缺点就是太过形式化,所以有些概念不能够很好的理解。比如lookup这个stage我在看教材的时候就没有太了解。所以,我就结合自己,用自己的语言对一些比较常用的stage说一下自己的理解和一些需要注意的地方。
在这么多的控件当中,实际上平时要用到的只有为数不多的几个:
Sequential File Stage:这个控件实际上是指代主机上面的一个文件,在它的属性中可以选定文件的路径,目录。一般这些文件都是以类似数据库表的格式存在的。使用这个控件关键的地方在于要设置好它的格式,包括column和format这两个标签。Column指的是文件当中的列定义,一般可以通过load列定义文件来确定。Format指的是文件当中的一些分隔符,日期格式等等,在实际文件当中字段和字段之间可以用逗号,竖线,等符号隔开,每个字段本身也可以选择是否要用引号来引起来。所有这些,stage要设置成和文件一致,否则这个stage就无法真实的指代主机上面的文件。如果不知道文件的字段格式,可以登录到unix主机下面去cat一下文件。一个验证的方法是在这个stage的属性当中选择显示数据view data,如果数据能够正常显示出来,那么就表示已经设置成功了。
Transformer stage:这个控件是个功能强大的控件,在开发的时候最经常用到。它有一个输入,而可以有多个输出。它最常用的也是最好用的功能就是对单个字段进行处理和转换。基本上想对单个字段做任何的操作都能够做到。包括拼接,转换,插入等等功能,需要自己在实际操作中熟悉。需要注意的地方是它的两个附加的功能,stage的变量和constrait限制条件。正如程序设计一样,在这个stage当中可以定义一些变量,来实现一些特定的功能。比如,我们定义某个变量var1,把输入的某个字段连到这个变量上面,然后,就可以根据输入字段来定义该变量的值,再通过判断该变量的值来设置输出字段。而constraint一般都是用来限制输出的,每个输出都有一个constraint,一般都是在constraint中限制条件,当满足这个条件时,才进行这个输出。
Join Stage:这个控件顾名思义,其实就是类似数据库当中的连接操作。因此,两个输入,一个输出。在stage属性里面可以设置left,right,inner,outer等等。只要对数据库的表连接操作了解,那么这个stage也就相应了解了。
Filter Stage:这个控件有点类似数据库sql语言中的where。一个输入,可以把这个输入理解为一张大表,在stage的属性中可以设置条件字段。多个输出,每个输出就是select * from 大表 where 条件所产生的结果。
LookUp Stage:这个控件最初看文档的时候,觉得说的不是很清楚。后来经过动手实践后,才能够真正理解。这个stage有多个输入,一个输出。有一个输入作为主输入,其它的的输入相当于是参考输入。主输入中的某些字段要来参考输入查询,然后再将结果进行输出。实际上就是一个“查表”的过程。比如主输入中有一个字段,如果值是a,到参考输入表中去查表,发现参考输入表中的a所对应的值是1,那么输出对应的字段就应该填1了。以此类推。这个控件在代码标准化的时候用到。
Change Capture Stage:这个stage是用来处理全量增量的时候用到的,在目前似乎暂时还没有用到。这个stage个人感觉是最困难的。其中的before link,after link。Key,value之间的关系比较混乱,需要在实践中逐渐熟悉。
Annotation stage:注释用的,放一块方框,用来往里面写注释。
关于reject:刚刚接触这个概念的时候,是比较难以理解的。因为这个好像是datastage自己所特有的概念。就我自己的理解来讲,每个文件都是由若干条记录组成的,而在这些记录里面,有一些记录是不符合规范的,比如说主键为空之类,或者某个字段不符合要求等等。这是时候,可以设定reject规则,把这些不符合规范的记录挑出来送到一个文件里面。而其他符合要求继续往下一步走,继续进行处理。