开发指南DataStageEEV20文档格式.docx
《开发指南DataStageEEV20文档格式.docx》由会员分享,可在线阅读,更多相关《开发指南DataStageEEV20文档格式.docx(66页珍藏版)》请在冰点文库上搜索。
3.1.22DifferenceStage32
3.1.23CompareStage35
3.1.24SwitchStage36
3.1.25ColumnImportStage38
3.1.26ColumnExportStage40
3.1.27TeradataEnterpriseStage42
3.2常用数据库的连接44
3.2.1Informix数据库连接44
3.2.2Oracle数据库连接45
4.高级应用47
4.1DataStageBASIC接口47
4.2自定义StageType47
4.2.1WrappedStage47
4.2.2BuildStage47
4.2.3CustomStage47
4.3性能调优47
4.3.1优化策略48
4.3.2关键问题分析52
4.3.3并行度53
4.3.4处理建议53
4.3.5其它54
4.3.6机器的对称性54
4.3.7并行调度测试说明:
55
5.开发经验技巧汇总55
5.1.1问题55
1.引言
1.1编写目的
IBMDataStage作ODS项目所使用的主要开发工具,在项目中得到了比较充分的应用,对IMBDataStage产品方方面面的功能,都有所涉及。
作为对我们使用本产品的一个技术沉淀,我们编写了这个总结性质的手册,旨在综合描述该产品的安装、常规应用、高级开发等等项目所涉及到的各个方面。
为项目组内部或其他使用该产品的项目组提供一个全面而综合的产品操作指导,帮助使用者能够在最短的时间内了解该产品,并上手使用。
1.2帮助使用
由于DataStage产品功能强大,配置复杂,我们不可能在本手册中涉及到所有功能,也无法对每一个描述的能够都给出详尽的例子。
能够为阅读者穿针引线的整理产品的开发思路,通过对常用、基本的功能的描述,让大家掌握到该产品的使用精髓,并能够举一反三的掌握其它本手册没有介绍的功能。
这就是我们的目的。
我们通常使用的帮助有如下两个途径。
a.智能化的帮助功能;
产品在几乎所有的操作窗口都有一个Help键,点击该键可以显示出当前使用的界面的功能和各项选项的具体的说明和操作方法。
DataStage独有的智能化的帮助能够指引你方面的查找到你想要得到的帮助。
b.OnlineManuals;
就是产品安装后程序组中的DataStageDocuments,里面更加综合、全面的对整个产品从普通到高级,从Server版到EnterpriseEdition版,从ForWindows到ForUnix等等方面的详尽叙述。
能够帮助更加系统、全面的掌握该产品。
2.产品概述
DataStage企业版是原AscentialSoftware公司所有企业整合系列产品中关键产品。
企业版支持大容量数据的收集、整合和转换,数据从简单结构到很复杂的结构。
基于高可扩展性的软件架购,企业版使得企业能够通过高性能来解决大部分业务问题,并行处理大容量数据。
强大的企业元数据管理能力使得可以在数据整合生命周期中在所有工具中共享和使用工具。
DataStage企业版发布了四个核心功能来成功实施企业数据整合:
先进的开发和简单化的维护;
企业级别的开发、监测和管理;
在吞吐量和性能方面提供了无限制的高扩展的体系架构;
端对端的企业级元数据管理。
DataStage企业版提供了全面的功能去最优化用户在建立、升级和管理数据整合架构时的速度、灵活性和效率。
DataStage企业版增强的功能减少了学习的周期、简单化了管理和优化了开发资源的使用,减少了数据整合应用的开发和维护周期。
结果,DataStage企业版使得企业能够花更少的时间开发他们的整合应用,更多的时间是不断的从中受益。
DataStage企业版使用了Client-server架构,如下所示。
图一、DataState企业版Client-Server架构
用户通过各个客户端工具访问DataStage企业版的开发、配置和维护功能。
这些工具包括:
Designer:
用来建立和编辑DataStage作业和表的定义。
Designer中的“JobSequencer”控制作业的执行,其他作业成功完成(或失败,等)的条件。
Administrator:
用来执行管理任务,如建立DataStage用户、建立和删除工程并且建立清洗标准。
Manager:
用来编辑管理用户工程的DataStage资料库。
Director:
用来验证、时序安排、运行和监测企业版作业。
如图一所示,DataSage企业版的服务器组件运行在一系列的流行服务器上,如Unix、Windows等。
3.常规应用
3.1常用组件使用方法
3.1.1Sequentialfile
功能特点:
适用于一般顺序文件(定长或不定长),可识别文本文件或IBM大机ebcdic文件。
使用要点:
●按照命名规范命名
●点住文件,双击鼠标,在general说明此文件内容,格式,存储目录等
●修改文件属性,文件名称,reject方式等到
常用选项(Options):
✧FirstLineisColumnNames
当此选项为True时,对于输入文件,忽略第一行数据(系统认为第一行数据为列名称);
对于输出文件,把列名称写入第一行.
✧KeepFilePartitions
设为True,保持所读文件的分区信息.
✧MissingFileMode
找不到File项所指定的文件时的处理方式.
-Error找不到文件时停止运行JOB.
-OK跳过此文件
-Depends默认为Error,但当文件名中含有前缀*的时候,跳过此文件.
✧RejectMode
-Continue抛弃所有rejectedrows.
-Fail一旦出现rejectedrow,中止JOB.
-Output通过rejectlink把rejectedrows输出至文件或数据库.
✧SchemaFile
SequentialFileStage默认使用Format和Columns中的列定义来处理文件中的数据,不过也可以在此选项指定schema文件用做数据的列定义.
✧ReportProgess
是否以日志形式记录处理进度.
✧CleanupOnFailure
JOB失败时是否清除中间数据.
●修改文件格式,比如记录结束符是什么,字段分隔符,字符串是用什么区别等
●输入此文件字段内容
重要选项:
✧Runtimecolumnpropagation
?
3.1.2Annotation
一般用于注释,可利用其背景颜色在job中分颜色区别不同功能块
3.1.3ChangeCaptureStage
ChangeCaptureStage有两个输入,分别标记为beforelink及afterlink。
输出的数据表示beforelink和afterlink的区别,我们称作changeset。
ChangeCaptureStage可以和ChangeApplyStage配合使用来计算afterset。
●key及value的说明
key值是比较的关键值,value是当key值相同是作进一步比较用的。
●changemode选项说明:
Allkeys,ExplicitValues需要指定value,其余字段为key
ExplicitKeys&
Valueskey及value都需要指定
ExplicitKeys,AllValues需要指定key,其余的字段为value
●输出策略说明
DropOutputForCopy
False:
保留before及aftelink中key值相同的行
True:
删除before及aftelink中key值相同的行
DropOutputForDelete
保留beforelink中有但是afterlink中没有的key值所在的行
删除beforelink中有但是aftelink中没有的key值所在的行
DropOutputForEdit
保留key值相同,value不同的行
删除key值相同,value不同的行
DropOutputForInsert
保留beforelink中没有但aftelink中有的key值所在的行
删除beforelink中没有但aftelink中有的key值所在的行
3.1.4CopyStage
功能说明:
CopyStage可以有一个输入,多个输出。
它可以在输出时改变字段的顺序,但是不能改变字段类型。
注意:
当只有一个输入及一个输出时最好将Force设置为True,这样可以在Designer里看到运行结束,否则将无法标识运行结束,但不会影响运行结果数据。
设置为FALSE的话,DataStage会根据情况对JOB进行优化,有可能放弃使用此Stage.
3.1.5FilterStage
FilterStage只有一个输入,可以有多个输出。
根据不同的筛选条件,可以将数据输出到不同的outputlink。
3.1.6FunnelStage
将多个字段相同的数据文件合并为一个单独的文件输出
合并策略说明:
●ContinuousFunnel:
从每一个inputlink中循环取一条记录
●SortFunnel:
按照Key值排序合并输出
●Sequence:
先输出第一个inputlink的数据,输出完毕后再输出第二个inputlink的数据,依此类推,直到结束。
(此时可以通过调整linkOrdering调整输出顺序)
3.1.7TansformerStage
一个功能极为强大的Stage。
有一个inputlink,多个outputlink,可以将字段进行转换,也可以通过条件来指定数据输出到那个outputlink。
在开发过程中可以使用拖拽。
●Constraint及Derivation的区别
Constraint通过限定条件使符合条件的数据输出到这个outputlink。
Derivation通过定义表达式来转换字段值。
在Constraint及Derivation中可以使用Jobparameters及StageVariables。
TransformerStage功能强大,但在运行过程中是以牺牲速度为代价的。
在只有简单的变换,拷贝等操作时,最好用ModifyStage,CopyStage,FilterStage等来替换TransformerStage。
示例Derivation转换表达式:
if(isnull(LK_to_transform.CI_CUST_NO))then1
elseif(IsNull(LK_to_transform.CI_CRLMT_NO))then2
else0
3.1.8SortStage
只能有一个输入及一个输出,按照指定的Key值进行排列。
可以选择升序还是降序,是否去除重复的数据等等。
Option具体说明
AllowDuplicates:
是否去除重复数据。
为False时,只选取一条数据,当StableSort为True时,选取第一条数据。
当SortUnility为UNIX时此选项无效。
SortUtility:
选择排序时执行应用程序,可以选择DataStage内建的命令或者Unix的Sort命令。
OutputStatistics:
是否输出排序统计信息到job日志。
StableSort:
是否对数据进行二次整理。
CreateClusterKeyChangeColumn:
是否为每条记录创建一个新的字段:
clusterKeyChange。
当SortKeyMode为Don’tSort(PreviouslySorted)或Don’tSort(PreviouslyGrouped)时,对于第一条记录该字段被设置为1,其余的记录设置为0。
CreateKeyChangeColumn:
是否为每一条记录创建一个新的字段KeyChange。
3.1.9LookUpStage
LookUpStage把数据读入内存执行查询操作,将匹配的字段输出,或者在在符合条件的记录中修改或加入新的字段。
参数说明:
✧Condition中可以通过BASIC表达式指定在referencelink上做Lookup的前提条件.
✧ConditionNotMet指定前提条件不满足时的处理方式.
Ø
Fail中止JOB,报FatalError错误.
Drop抛弃此条数据,继续执行下一个lookup.
Continue查找不到的数据赋空值,继续处理下一行.
Reject输出至Rejectlink.
✧LookupFailure指定Lookup操作失败时的处理方式.
3.1.10JoinStage
将多个表连接后输出
3.1.11LookUpStage和JoinStage的区别
LookUpStage将数据读入到内存中,所以效率很高,但是占用了较多的物理内存。
所以当referencedata比较小的时候,我们推荐用LookUpStage;
当referencedata比较大的时候,我们推荐用JoinStage。
3.1.12MergeStage
将MergeKey值相同的记录合并。
将其中的一个输入设定为Master,其余的为Update。
把Update中MergeKey相同的记录合并入Master。
3.1.13ModifyStage
Modifystage只能有一个输入及一个输出,它可以修改表结构:
删除,保留一个字段;
给字段改名;
修改字段的数据类型。
Specification的具体用法:
删除一个字段:
DROPcolumnname[,columnname]
保留一个字段:
KEEPcolumnname[,columnname]
改变字段:
new_columnname[:
new_type]=[explicit_conversion_function]old_columnname
可用的explicit_conversion_function请参看《ParallelJobDeveloper’sGuide》page28-7
3.1.14DataSetStage
Stage类型:
Filestage
从dataset文件中读取数据或者写数据到dataset文件中,一个DateSetStage只能有一个输入连接(inputlink)或者一个输出连接(outputlink)。
具体用法:
包括StagePage,InputsPage,OutputsPage。
●StagePage通常描述了stage的一般信息,诸如名称等;
●InputsPage描述了即要写入信息的dataset文件的详细信息;
主要是Properties和Column的定义。
Properties中配置了文件的存放路径和更新策略;
Column详细定义文件中的各个字段;
●OutputsPage描述了读取信息的dataset文件的详细信息;
操作过程与InputsPage类似。
3.1.15FileSetStage
从fileset文件中读取数据或者写数据到fileset文件中,一个FileSetStage只能有一个输入连接(inputlink)、一个输出连接(outputlink)和一个拒绝连接(rejectslink)。
并且只能在并行模式下执行。
●StagePage:
对Stage的基本定义
●InputsPage:
主要是Properties和Format的配置
Properties的配置:
定义文件的存取路径及其他读写的相关的参数。
特别要说明的是Options下的RejectMode的选择,当stage有rejectlink的时候,必须选择Output;
没有rejectlink时,可选择其他两个选项。
Format的配置:
定义了数据写到文件中的格式
●OutputsPage:
对stage输出的数据字段的描述,另外,rejectlink的输出系统将默认,不需要用户自己定义字段。
3.1.16LookupFileSetStage
为执行查找操作而创建的参照文件。
作为查找的参照数据,通常在参照数据比较大量或者重复使用率较高的情况下,将参照数据生成专门的LookupFileSet文件,以便提高查找的效率
●StagePage
主要定义了查找关键字和存放路径等主要信息
创建一个LookupFileSet文件:
当作为参照数据进行查找操作时,因为文件是已经生成好的,所以在这里不需要再做详细的定义,只要引入即可。
3.1.17OracleEnterpriseStage
DatabaseStage
从Oracle数据库中读取数据或者写数据到Oracle数据库中。
通常完成的操作:
●使用INSERT或UPDATE命令更新数据库表
●装入数据库表
●读取数据库表
●从数据库表中删除行
●在库表中直接执行查询操作
●将库表装入内存,然后执行查询操作
●InputsPage
向数据库中写数据,关键是对Properties的配置
与InputsPage类似,只是完成的是从数据库中读取数据。
3.1.18AggregatorStage
ProcessingStage
将输入的数据分组,计算各组数据的总和或者按组进行其他的操作,最后将结果数据输出到其他的stage。
描述stage的一般信息以及字段的分组信息和选择分组计算函数
详细描述输入数据信息,一般直接反映输入数据字段信息
●OupputsPage:
详细描述输出数据信息,即经过分组计算后的数据字段信息
3.1.19RemoveDuplicatesStage
输入根据关键字分好类的有序数据,去除所有记录中关键字重复的记录,通常与sortstage配合使用
Properties中的key值与之前sortstage的分类key值相同
对输入数据字段的描述
对输出数据字段的描述
3.1.20CompressStage
将dataset文件压缩成二进制文件(与expenddatastage相对应)
运行结果
3.1.21ExpandStage
将压缩的二进制文件解压缩(解压缩compressstage生成的压缩文件)
运行结果:
3.1.22DifferenceStage
按字段比较两个文件,找出不同的记录。
(两个文件before和after,以before为准,与after文件中的记录进行比较,找出before在after文件中没有或者有的记录)
比较策略说明
保留beforelink中有但是aftelink中没有的key值所在的行
保留beforelink中没有但af