datastage入门培训
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、工具入门
DataStage是一个ETL的工具,就是对数据的抽取,转换,加载。个人通俗的理解就是一个对数据进行处理,提取的工具,这里面的数据大部分是以数据库中表的格式存在着的,所以如果要使用这个工具,首先必须对关系数据库的一些基本概念要有所了解,比如最基本的字段,键,记录等概念。
DataStage是通过设计job来实现ETL的功能的。 Job的设计跟普通的IDE设计一样,通过拖拽控件,并填加脚本来完成。这里的控件称为stage,每一个不同的stage都有不同的数据处理的功能,将各个stage通过一定的方式组合起来,设计成job,对job进行编译,运行,就能够实现对数据抽取转换加载。
1,安装datastage,看学习指导,先对该工具有个大概的认识,大概知道administrator,design,director,manager的区别。
了解datastage工具的主要用途:简单的说就是把一批数据input进来,经过各种各样的转化,清洗,然后在output出去,整个就是ETL 的过程。
对4个工具我们最常做的操作有:
Administrator:1、对Project的管理,主要是建立和删除project;
2、对Licensing的管理,主要是更换Licensing。
design:datastage的核心,所有的开发都在design里面完成,在这里可以编辑你的job,使用各种stage控件。
director:1、查看日志,当运行job结束时,无论job成功或者失败,我们都可以在director 里面查看日志,里面能反映我们job运行的状态,经常job出错我们都是先查看日志,然后分析原因,再到design里面修改。
2、director的另外一个很有用的功能是logout job,当服务器或者网络出问题时,正在编辑的job很有可能被锁定,这时你就算把design关了再重新登陆还是无法打开job,会提示job has been used, 这就需要到director里面把job logout,然后就可以使用了。manage:manage的最主要的功能是可以对design里面的资源进行导入导出,当我们要把开发的job从一台机器转移到另外一台机器时,就需要用到。
二、开始学习使用design,做一些简单的job,接触几个常用的stage。
做练习1的1-2至4-2的练习,练习中用到的Oracle组件全部用sequence file 代替,
1-2练习中会教你导入练习所要用到的表的结构,练习中要用到的数据文件放在数据及表定义目录下。(表定义可以通过manage工具导入,但是数据文件必须自己手工导入,所以开发前请先将数据及表定义目录下面的所有.txt的数据文件导到你所使用的datastage的开发环境上,导数据文件的方法可以使用ftp工具)
要设计job的关键,就在于能够熟悉每个不同的stage并且能够灵活运用。在文档和指导中有对每个控件的使用方法作了图文并茂的说明,但是教材语言的一个缺点就是太过形式化,所以有些概念不能够很好的理解。比如lookup这个stage我在看教材的时候就没有太了解。所以,我就结合自己,用自己的语言对一些比较常用的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规则,把这些不符合规范的记录挑出来送到一个文件里面。而其他符合要求继续往下一步走,继续进行处理。
第2阶段的目标:经过这一阶段,应该熟悉datastage的使用,包括在第一阶段中说明
的administrator, design, director, manage中常用的步骤都要学会使用。
三、开发一些复杂的job,加强datastage的熟练程度
完成练习2里面的前6个job,本阶段的job有一定难度,建议做的时候,特别是遇到不知道要如何解决的问题的时候,多与有经验的开发人员交流,快速上手。