一、DataStage简介WebsphereDataStage是一套专门对多种操作数据源的数据抽取、转换和维护过程进行简化和自动化,并将其输入数据集市或数据中心(数据仓库)目标数据库的集成工具。DataStage能够处理多种数据源的数据,包括主机系统上的大型数据库、开放系统上的关系型数据库和普通的文件系统等。常见的主要数据源有:大型主机系统的数据库:IMS、DB2、ADABAS、VSAM等。开发系统的关系型数据库:Informix、Oracle、Sybase、DB2、MicrosoftSQLServer等。ERP系统:SAP/R3、PeopleSoft等。普通文件和复杂文件系统,FTP文件系统,XML等。IIS、Netscape、Apache等Web服务器系统。Outlook等Email系统。DataStage可以从多个不同的业务系统中,从多个平台的数据源中抽取数据,完成转换和清洗,装载到各种系统里面。其中每步都可以在图形化工具里完成,同样可以灵活的被外部系统调度,提供专门的设计工具来设计转换规则和清洗规则等,实现了增量抽取、任务调度等多种复杂而实用的功能。其中简单的数据转换可以通过在界面上拖拉操作和调用一些DataStage预定义转换函数来实现,复杂转换可以通过编写脚本或结合其他语言的扩展来实现,并且DataStage提供调试环境,可以极大提高开发和调试抽取、转换程序的效率。二、DataStage工作原理1A1ClientDesignerIMSDB2ADABASVSAMOracleDB2SybaseInformixSQLServerXMLPeopleSoftEMCFisrtLogicTrilliumComplexFlatFilesFTPIISApacheNetscapeOutlookDataStageServerManagerBWDWDMReportingDataMiningQueryAnaiyticApplications【DataQualityAssurance】MetaDataManagermentDataStageXEArchitectureOverviewDataStage的设计是基于数据流的概念。一个完整的数据流图(DataStage作业),从一个永久存储的数据源开始,并且执行一系列的增值转换和其他处理操作,最后加载数据到一个永久的存储。数据集(DataSet)就是对通过数据流程的记录的收集。一个数据集可以是屋里放置在磁盘上,也可以是虚拟放置在内存中。数据在数据流中的Stage中移动使用的是虚拟的数据集,这样可以大大提高性能;分区(在后面介绍)是在Stage的属性中设置的。三、DataStage运行程序(工具)介绍1.DataStage服务安装完成DataStage后会在系统中注册三个DataStage服务:DatastageEngineResourceServiceDatastageTelnetServiceDSRPCService2.DataStageAdministrator程序DataStageAdministrator程序用于执行管理任务,如建立DataStage用户、建立和删除工程、建立清洗标准。Hostsystem表示服务器地址,如果是本地请使用localhost,如果是使用127.0.0.1则需要在DataStage安装目录配置映射关系文件。而用户名和密码一般与系统用户和密码一致。登录后有三中操作选项,其中General用于版本的控制;Projects用于设置工程项目的属性;Licensing。3.DataStageManager程序DataStageManager程序用来编辑和管理用户工程的DataStage的资料库。包括工程的导入和导出等操作。4.DataStageVersionControl程序DataStageVersionControl程序用于版本控制管理。5.DataStageDirector程序DataStageDirector是一个Job的管理、调试、log追踪的综合管理工具。用来验证、时序安排、运行和监测企业版作业。6.DataStageDesigner程序DataStageDesigner是整个开发的环境。用来编辑DataStage的作业和表的定义。四、DataStage中的Stage介绍按照新建的Job不同,所内置的Stage也不同。内嵌的Stage包括高性能访问(加载和读)关系型数据库的强大组件,包括并行的关系型数据库。DataStage中的JOB分类:JobSequence:Job工作序MianframeJob:主应用JobParallelJob:并行执行JobParallelSharedContainer:并行共享容器ServerJob:标准ServerJob,在Windows下可以创建的JobServerSharedContainer:Server共享容器(以下三个是新建Job时的选项)NewDataMigrationJob:NewJobfromTemplate:NewTemplatefromjob:Palltte选项列表1)General(常规)栏解释:图例名称描述Annotation注释DescriptionAnnotation注释描述Link带箭头的连接线,表示有源目标的过程Container容器,可以包含该Job的所有组件InputContainer输入容器OutputContainer输出容器2)Database(数据库)栏解释:图例名称描述DB2/USDAPIIBMDB2数据库USD访问:1.从DB2数据库读取数据或将数据写入DB2数据库2.顺序执行或并行执行3.支持DB2的Hash分区4.支持Load、Upsert和Write写入方法5.支持Table、自动产生SQL或用户定义SQL读取方法DB2/USDLoadOracleOCIOracle数据库访问:1.从Oracle数据库读取数据或将数据写入Oracle数据库2.顺序执行或并行执行3.支持Load和Upsert写入方法4.支持Table和Query读取方法OracleExpressOracleOCILoadInformixCLIInformix数据库访问1.从Informix数据库读取数据或将数据写入Informix数据库2.顺序执行或并行执行InformixXPSLoadInformixLoadMSSQLServerLoadMsSQLServer数据库访问ODBC使用ODBC访问数据库DynamicRDBMSDynamic数据库访问MSOLEDBMS的OLEDB数据访问RedBrickLoadRedBrick数据库访问StoredProcedureStoredProcedure数据访问SybaseBCPLoadSybase数据库访问SybaseIQLoadSybaseOCTeradataAPITeradata数据库访问1.支持从Teradata数据库读取数据和将数据写入Teradata数据库TeradataLoad2.FastExport:Table、Auto-generatedSQL、User-generatedSQL3.FastLoad:Create、Append、Replace、Truncate4.顺序执行和并行执行5.支持TUF6.1、TTU7.0TeradataMultiloadUniDataUniData数据库访问UniVerseIMSMainframe主程序IMS数据访问RelationalMainframe主程序Relational数据访问3)File(文件)栏解释:图例名称描述SequentialFile从一个FlatFile读取数据或将数据写入FlatFile;通常是并行执行和可以配置成顺序执行DataSet从一个数据集读取数据或将数据写入一个数据集;企业版隐藏了复杂的处理和在并行计算机上并行存储数据到磁盘FileSet从一个文件中读取数据或将数据写入文件;并行执行LookupFileSet允许建立一个查找文件集或查找参考ExternalSource从一个或多个源程序读取数据ExternalTarget将数据写入一个或多个目标程序SASParallelDataSet从并行SAS数据集合读取数据或将数据写入并行SAS数据集合;用于同SASStage进行连ComplexFlatFile复杂文件Folder文件夹HashedFileDB2LoadReadyFlatFileDelimitedFlatFileFixed-widthFlatFileMulti-formatFlatFile4)Processing(处理)栏解释:图例名称描述Aggregator对于单一的输入数据记录进行分组并且计算每一组的合计和总计ChangeApply抓取变化数据,包括前面或后面数据记录变化,从ChangeCaptureStage并应用编码改变操作到前面数据集,计算一个后面数据集ChangeCapture抓取两个输入数据集,表现为前和后,并且获取后面的数据路输出一个记录表现已经改变的数据集Compare对两个分拣输入数据集合中的记录进行逐个字段的检查Compress使用UnixCompress或GZIP工具压缩数据集合;将一个顺序数据集合转换到没有处理过的二进制数据流Copy拷贝一个输入数据集到多个输出数据集;输入数据集中的每一条记录拷贝到每一个输入的数据集中,而且不需要修改Decode使用支持的Unix解码命令对一个数据集合进行解码;将一个没有处理过的二进制数据流转换到数据集合Difference对两个输入的数据集合进行逐条的对比,相同数据集合的不同转换产生出前面和后面的数据集合Encode使用支持的Unix编码命令对一个数据集合进行编码;将一个顺序数据集合转换到没有处理过的二进制数据流Expand使用UnixUncompress或GZIP工具展开数据集合;将一个没有处理过的二进制数据流转换预先压缩的数据集合到一个数许数据集合ExternalFilter允许指定一个作为处理数据过滤器的Unix命令行Filter基于用户指定的约束(“where子句”)将输入数据集转换到不同的输出数据集(Link)。对于过滤记录使非常有效率的Funnel拷贝多个输入数据集到一个输出数据集;对于将分开的数据集合合并成一个大的数据集;支持持续的读、排序、顺序输入数据集Join在一个或多个输入数据集合上执行连接操作并输出一个结果数据集,连接操作支持:Inner、LeftOuter、RightOuter和FullOuterLookup对包含在LookupFileSetStage中的查找表进行查找操作Merge将一个或多个排序的更新数据集合合并成一个排序的主数据集合Modify改变输入字段定义到输出数据集(如类型转换或null处理/转换等);对于重新命名和类型转换使非常有效率的RemoveDuplicates对输入的数据集进行单一排序,删除重复的记录,并将结果写入一个输出的数据集SAS用于并行执行部分SAS应用Sort用来并行执行更复杂的排序操作Switch根据选择器字段的值,将一个输入记录分配到一个输出的Link,支持128个OutputLink和1个RejectLinkTransformer对任何需要转换的输入的数据集合进行转换,并将数据传输到其他活动的Stage中或一个将数据写入数据库或文件的StageBusinessRule在Mianframe中ExternalRoutineFTPLinkCollectorCommandStageFTPPlug-inInterProcessLinkPartitionerPivotRowMergerRowSplitterGeneric在Parallel中SurrogateKeyGenerator5)RealTime解释:图例名称描述RTIInputRTIOutputXMLInputXMLOutputXMLTransformer6)Deve