DATASTAGE——DATASTAGE经验积累.doc_第1页
DATASTAGE——DATASTAGE经验积累.doc_第2页
DATASTAGE——DATASTAGE经验积累.doc_第3页
DATASTAGE——DATASTAGE经验积累.doc_第4页
DATASTAGE——DATASTAGE经验积累.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DATASTAGE一DATASTAGE经验积累一、JOB的分类与作用1、Server JOB:最为常用的Job类型,Job可以组合使用,Server Job是Job的最小单位。原文档:If you have the Web Services pack installed an additional check box, Web Service Enabled, appears. Select it to indicate the job can be made available as a web service.2、Parallel JOB:3、Mainframe JOB:运行于大型机的JOB。4、JOB Sequences:Job Sequence主要用于Job间的协作工作控制,如各Job的实行流程,出错处理,文件监控等。二、jobstatus的用法jobstatus-jobstatus waits for the job to complete, then returns an exit code derived from the job status.命令格式为: dsjob run mode NORMAL | RESET | VALIDATE param name=value warn n rows n wait stop jobstatus userstatus -local project job三、判断NULL值实例 STAGE :JOIN STAGE 设置:LEFT JOIN左输入语句:SELECT * FROM PMP_Insured_Amount右输入语句:SELECT COL_ID,TAB_NAME,WORK_DATE,REF_COLUMN1 AS UNIQUE_ID_IN_SRC_SYS,REF_COLUMN2,ROW_ID,HASHCODE AS B_HASHCODE,ANCHOR_ID,PARTITION_KEY,IS_DUPLICATED,A AS MARK -用以判断结果集右边是否为空 FROM ETL_FOR_INC_TMP2 SQL语句:SELECT A.*,B.*FROM PMP_Insured_Amount A LEFT JOIN ETL_FRO_INC_TMP2 B ON A.UNIQUE_ID_IN_SRC_SYS = B.UNIQUE_ID_IN_SRC_SYS功能:判断来自A表的所有记录,哪些能够B表关联,哪些不能与B表关联。说明:由于在构造右输入语句时增加了一个B表中没有的常量字段MARK,所以如果A表能够与B表关联的记录,该常量字段就不为空值(此处设了该常量值为 A);如果A表与B表关联不上的记录,该常量字段就为空值(NULL)。如此只需用一条判断语句判断常量字段是否为空,从而分出两种记录来。 记录分离所使用的STAGE是Transform stage。一开始时,使用Condition设置了字段MARK = A与字段MARK A 来分离记录,运行后发现只有MARK = A 的一支有数据通过,而MARK A 的一支没有数据通过,后来把 MARK A 的一支的条件(condition)改为 ISNULL(MARK) 后,数据正常输出。总结:从理论上说,任何与NULL值作比较运算(=、)结果都为NULL,而 MARK A 属于比较运算,当MARK为NULL时,结果就为NULL,所以就会没有数据输出。实际上,在MSSQL SERVER2000中,如果使用 WHERE MARK A 作筛选条件,是可以把为 NULL 值的字段输出的。这是DATASTAGE与MSSQL SERVER在处理 NULL 值运算的不同,MSSQL SERVER是允许一定违反规范规则的情况存在。四、关于对多表进行关联操作的STAGE对不同表的同名字段的处理。 这些STAGE有:JOIN、LOOKUP、MERGE等。 DATASTAGE的处理原则:保留前者,抛弃后者。 例子:源表:A(a,b,c,d),关联表:B(b,c,e,f)。取值规则:第一次关联条件A.b = B.b,取B.e;第二次关联条件A.c = B.c,取B.e。 说明:关联的有前后之分的。第一次关联时,在结果集中已经存在的名字为e的字段,第二次关联是在第一次关联的结果集的基础上进行的,第二次所取的字段名与 第一次所取的相同。在此就出现种问题,从数据库常识来说,同一张表是不允许有同名字段出现的,如何能够正确取值呢?在T-SQL里面,可以使用JOIN语句对表进行关联,两张表的同名字段e因为被加了表名作前缀,所以即使字段名相同,也可以正确输出。以下则为使用T-SQL完成上述取值规则的语句: SELECT A.a,A.b,A.c,A.d,B.eFROM A LEFT JOIN (SELECT A.a,A.b,A.c,A.d,B.e,AB.e FROM A LEFT JOIN B ON A.b = B.b) AS AB ON A.c = AB.c很容易就能看出,最终的结果将会(假设结果表名为C):C( A.a,A.b,A.c,A.d,B.e,AB.e),结果正确,所以在T-SQL里,在做多表关联时,可以不必关心不同表的同名字段的取值问题。 但在DATASTAGE里就不能不关心了。由于DATASTAGE里的所有STAGE的输出,默认下是对该STAGE的输入进行复制,即表结构的复制。输 入的是什么名字的字段,输出的也是这个名字的字段。那么多表关联时,如果不同的表有相同名字的字段,那么输出时也会出现有同名字段了,而数据表是不允许有 同名字段的,所以就会发生同名冲突。DATASTAGE对于这中其矿,处理方式是把最先输入的字段保留下来,之后如果有同字段再添加进来时,就会把要添加 进来的字段抛弃掉。这种情况,即使在JOB运行时也不会报错的,因为语法是没有错误的,不过会出现一个WARNING,告知用户这个STAGE将会出现字 段知丢失。所以碰到上面上述情况,解决的方法是在第二次关联时,在输出时把这个同名字段的名字手工更改一下。如上,把字段名e改为字段名e_2,赋值也是 赋e过去,这样既保留了e的值,有不会给抛弃,只是更改了一下字段的名字,到最后输出时再统一把结果表名定制一下就行。五、对数据进行HASH分区的STAGE的设置细节。 例子:在用JOIN STAGE对两张表进行关联,关联的条件是UID,再设置的该STAGE对数据按照UID进行HASH分区,所有的STAGE都设置正确无误后,运行JOB,老是在JOIN STAGE里有一个WARNING。原因:这种情况是由于设置HASH分区后产生的(数据分区的概念将另述)解决方法:打开产生WARNING的STAGE的前一个(是前一个!)也进行了HASH分区的STAGE的设置面板,在Stage PageAdvance Tab里,选择Preserve partitioning下拉选项中的“Clear”值。默认是“Propagate”值,其意义是下一个STAGE在做HASH分区时,会继承上一个 (即该STAGE)对HASH分区的设置参数。按照HASH分区的机制,这样继承会出现数据丢失的可能,所以DS就会产生WARNING。而选择 “Clear”的意义就时让下一个要做HASH分区的STAGE不要继承上一个STAGE的HASH分区设置,而重新按照用户的设置来进行HASH分去。六、把结果输出到平面文件时的注意事项。例子:在原来调试过正确无误的JOB,把最后的数据文件由原来的DATA SET改为SEQUENCE文件时,JOB运行正常,且可以重运行,就上没有实际的数据输入到结果文件里,文件所对应的输入LINK显示有数据输入,结果 文件也创建了,但打开的是一个空白文件,VIEW也VIEW不到有数据,提示说没有结果返回。原因:平面文件的默认格式设置引起。默认下,平面文件的输入格式是,每个字段都要有值输入。如果输入到平面文件的数据中有空值,而平面文件又用默认设置的话,输入就会给REJECT掉。解决方法:设置平面文件的数据格式。在Stage PageFormat里,设置空值的处理方式,比如设为NULL,则遇到空值时,DS就会在平面文件的该字段里填充NULL。七、DATASTAGE中INTEGER型数值上限为2000000000(20亿)。八、对于那些关联不上而又为非空的字段,DS会自动赋默认值,数字型默认值为0,字符型默认值为。 例子: 表A通过JOIN STAGE与表B进行左关联,取B表的流水ID,B表的ID字段可空性为NO,把B表的ID传递给A表,然后通过TRANSFORM STAGE设置条件取出关联不上的记录来,TRANSFORM STAGE的过滤条件是:IsNull(ID),由于关联不上的记录的ID字段会是NULL,这样设置按理应该是可以把关联不上的记录输出的,而实际上是 输出不到的。 原因:B表ID字段是非空的,那么传递给A表的ID的也将是非空。对于那些关联不上的记录,理论上ID字段应该为NULL,但由于ID是非空的,所以DS 会把一个默认值插入到ID中去。经过如此处理,使用IsNull(ID)就当然不能数据正确记录了,因为ID根本就不是NULL。 解决方法: 方法一:在传递ID字段给A表时,用NullToZero或者NullToEmpty函数对ID封装起来。如果ID是数字型的,用NullToZero, 如果ID是字符型的,用NullToEmpty。相应的,TRANSFORM STAGE的过滤条件就应该改为ID = 0或ID = ,即可把关联不上的记录正常输出来。 方法二:直接修改TRANSFORM STAGE的过滤条件,修改为:NullToZero(ID) = 0或者NullToEmpty(ID) = 。 注意:经过DS赋予默认值后,ID其实已经不为NULL了,所以理论上使用NullToZero或NullToEmpty是不适合的。但实际开发中,上述方法确实能够解决问题。九、可空字段拼接字符串特别需要注意的问题:在拼接字段串时,要注意所以拼接的字段当中有没有空字段,如果有,一定要用NullToZero或者 NullToEmpty函数对该字段进行封装。如果不是经过函数封装处理,如果碰到某条记录,它用来拼接的字段是NULL,那么这条记录就会给过滤掉,从 而影响了结果。 由于拼接字符串一般都是几个到十几二十个字段,有时候容易令人忽略这个问题,常常发现本来应该可以从TRANSFORM STAGE输出的数据却给REJECT掉,就要注意是否存在可空字段拼接字符串,而且数据当中的确存在一些记录,里面用于拼接的字段是NULL的情况了。十、使用TRANSFORM STAGE进行条件判断过滤数据,一般用于判断的字段是Nullable;使用FILTER STAGE来过滤数据,一般用于判断的字段是No-Nullable。DataStage官方文档学习笔记1. 通过右键添加link鼠标右键点击起始stage,按住右键移动鼠标到目标stage。还有一种方法就是把鼠标放在起始stage的边缘等到变为一个小圆圈里面有一个叉的时候拖动鼠标到目标stage。2. DataStage中默认和隐式类型转换时注意的问题当从源向目标映射数据时,如果类型不一致,对于有些类型我们需要在modify或transfomer stage中通过函数进行转换,对于有些系统会自动完成类型转换,在类型转换过程中,注意以下几点:1 在变长到固定长度字符串的默认转换中,parallel jobs用null(ASCII 0)字符来填充剩余长度。联系到前面做的一个parallel job,当目标是变长时(当时源也是变长,但是好像源的精度要小些),但是字符串实际的长度没有指定的变长那么长的话,系统会自动用空格(ASCII 20)来填充(具体在哪个stage填充的不知),而且环境变量APT_STRING_PADCHAR的默认值也是空格(ASCII 20)。2 通过环境变量APT_STRING_PADCHAR可以改变默认的填充字符null(ASCII 0)。注:联系上面两点,感觉文档讲的与实际不符,难道我们项目的administrator改变了该环境变量的默认值?3 有个PadString 函数可以用来用指定的字符来填充一个变长的字符串到指定的长度。这个函数的参数不能使固定长度字符串,如果是固定长度的先转化为变长。 3. Copy Stage作为占位符在job开发中,当你暂时不知道该使用哪个stage时,可以使用copy stage作为占位符,注意不要把Force属性设为True,在不把Force设为True时,复制将在运行时进行优化。使用Schema file来指定meta data1 可以通过列定义和schema file两种方式来指定meta data,值得注意的一点是Note that, if you use a schema file, you should ensure that runtime column propagation is turned on. Otherwise the column definitions specified in the stage editor will always override any schema file.即,如果想通过schema file来指定meta data,必须勾上runtime column propagation,否则总是使用列定义来作为meta data。 2 If you are using a schema file on an NLS system, the schema file needs to be in UTF-8 format.如果你的datastage使用了NLS system,那么schema file必须是UTF-8格式的。文档中说可以使用Sequential stage来完成转码。通过Server Shared Container在Parallel Job中添加Server Job StageYou create a new shared container in the DataStage Designer, add Server job stages as required, and then add the Server Shared Container to your Parallel job and connect it to the Parallel stages.在Designer中创建一个server shared container,添加需要的Server job stage,再把server shared container添加到parallel job并连接到其他parallel stage。几个环境变量的具体路径%SERVERENGINE% DataStage engine account directory(normally C:AscentialDataStageEngine on Windows and AscentialDataStageDSEngine on UNIX).%PROJECT% Current project directory.%SYSTEM% System directory on Windows NT or /usr/lib on UNIX.一句不太懂的话,先做记录If NLS is enabled, avoid using the built-in Iconv and Oconv functions to map data unless you fully understand the consequences of your actions.在使用了NLS时,尽量避免使用Iconv and Oconv来映射日期,因为可能产生一些意想不到的结果。4. Datastage的使用心得及unix应用Datastage是Ascential公司出品的著名第三方ETL工具。它的主要特点有:1可视化操作截面,避免了大量的手工code2第三方工具,善于处理复杂的数据源3可监控性好,能够快速发现ETL中的问题并解决对于Datastage的初学者来说,通过学习官方培训资料(网上到处都有的当了),可以快速的入门,毕竟Datastage是一个可视化的工具,没有太深涩难懂的内容。但在真正运用中,就可能碰到各种各样的问题。下面就说一说我在使用中曾经困惑过的一些问题:1Job的粒度。一套ETL过程中,含有多个步骤,在设计过程中,到底是粗化一些,用少而复杂的job实现,还是细化一些,用多而简单的job实现更好呢?我个人认为,比较细的粒度更有利于程序的开发。在开发初期,表面看来细化的job比较繁琐,但在项目后期的测试阶段,细化的job可以更准确的定位错误并易于修改。2并行和串行。当到了开发后期,我们准备把多个job连接起来,我们就会发现,能否将多个job并行成为ETL效率的关键,而这个因素在设计初期往往被忽略。ETL中可能会涉及多个数据源的多个表,而多个job也可能会形成对某个数据源以及其中的某个表的争用。当数据源争用时,会影响ETL的执行效率。当表争用无法解决的时候,就只能使用串行。而一个好的结构流程设计,可以极大的减少这种争用,从而提高ETL的效率。3要将Datastage与外部code相结合。Datastage并不是独立运行的开发工具,它需要外部控制程序为载体,才可以进行良好的客户操作。而Datastage也不是万能的,简单的说,它只是sql语言的一个可视化载体。因此,有一些功能,并不一定要在Datastage中实现,而应该放到外部程序中,以sql code的形式完成,以保证整个程序的稳定性,安全性。上面是一些大方向的问题,在实际中会有很多烦琐的小问题,我也尽量的列举一些:1字符集:output和input中的字符集都设置为none,是一个不错的选择。至少可以保证程序运行不会因为乱码abort。2文本中的列分隔符无法设置为三位,从理论上讲,只有三位分割符才可以保证程序不会将乱码辨认为分隔符,这是Datastage的一个缺陷。3在使用自定义sql前,需要使用非自定义形式手工配置好所需要的表,然后再切回自定义格式,如果直接写自定义sql,将导致Datastage无法辨别表名,从而导致错误,这应该是一个bug。4保持配置一个input或output,就view data一下的习惯,不要等到run时再回头找error.5Input中尽量不要使用insert or update之类的选项,它和insert only的差别是巨大的。使用insert or update等选项,相当于使用游标,逐条进行对比,每insert一条,都要先做一次全表扫描,其速度是可想而知的。如果必须要实现这种功能,应使用其他方法,如先delete目标表中所有与源表重复的记录,然后再从源表中insert数据.6Date型数据是比较麻烦的,因为Datastage中的日期格式为timestamp,当然你也可以把它的日期格式更改为date型,但经常会出现错误。对于oracle数据库源表和目标表,不需要对date型数据做任何转换,直接使用默认即可,但对于informix等一些数据库,则需要使用oconv,iconv函数进行转换,并在output中相应的修改output sql中的日期格式。具体用法可以去网上或查datastage帮助。7只要你保证input和output时数据类型和长度不会有问题,在两者之间的这一段过程中,Datastage中的数据类型和长度是可以随意更改的,也可以随意增加自定义列。8字符串中的半角空格需要用trimb,而不是trim函数,但这点往往被忽略。其他的情况还可能有半角中文等,所以字符串,长度,字符集,这几者之间经常会导致Datastage产生错误,所以应尽量保证insert前的字符串长度要小于insert后的字符串长度,而你看到的insert前的字符串长度并不一定就是它在Datastage中真正的长度,所以使用trimb函数在input sql中做一下限制,才是最稳妥的方法。最后说一个datastage在unix中应用的实例,以供大家参考:一个完整的ETL,其步骤是:1业务用户接口(java,jsp等友好界面)触发2Shell运行3启动Controljob运行4Controljob启动job5监控job状态的Controljob运行(循环运行,直到所有job结束)6返回job执行情况到shell7Shell返回执行情况到业务接口8用户得到结果可以看出,这里包括了几个主要元素:业务接口,shell,controljob,getstatus controljob,job其中只给大家列出controljob,getstatus controljob,以及shell中的controljob调度命令,其他的部分就不再详述了一、普通的control job1.带斜线、下划线并加粗 的部分需要考虑是否是并行的,如果是并行的就不需要这句2.原始层需要加进蓝色的行3.红色的表示job的名字,用来替换job的名字该行对应原始层的job,当需要从文本load数据时,需要在这里调用相应的sh* Setup DXrtInc, run it, wait for it to finish, and test for success hJobDXrtInc1 = DSAttachJob(DXrtInc, DSJ.ERRFATAL) If NOT(hJobDXrtInc1) Then Call DSLogFatal(Job Attach Failed: DXrtInc, JobControl) Abort End Call DSExecute(UNIX, /essbase/script/dwcorp/system/t.sh, Output, SystemReturnCode) *If FAIL Then RESET Status = DSGetJobInfo(hJobDXrtInc1, DSJ.JOBSTATUS) If Status = DSJS.RUNFAILED Then ErrCode = DSRunJob(hJobDXrtInc1, DS5. Datastage 技术介绍技术优势5.1. 开发优势由于Ascential公司雄厚的信息技术实力,DataStage XE系列可为开发者在构建与集成数据环境时提供特别的优势.DataStage XE系列通过集成数据资源、转换数据和调试等手段,设计开发应用软件,并将此作为起点,简化了开发流程、使应用软件的集成和运行更加容易. 1.1)应用程序设计 DataStage Designer是以图形界面起点,开始展开数据集成工作的设计的.这一方式使开发者可宏观地使用图形,清楚地显示数据在整个环境中的流动过程.设计者遵循一种工作流思考方式来选择来源、目标与过程图标,并将之置于一个最初看起来像一个空格一样的草稿表模板上.对于每一典型的来源或目标结合体,都存在这些被称作Stages的图标.设计者用一种叫做链接的箭头来连接这些具代表性的图标,而这些箭头则阐明了运行开始后数据与元数据的流向.在创建DataStage任务时,用户可以在设计草图上添加注释、说明、标签或是其他可以添加给作业的描述性文字.DataStage使用图形方式建立表的查询、连接关系、排序和汇总运算.以这种方式设计作业可以快速完成整个应用程序,更为简单的采用由其他开发小组制定的逻辑,从而使长期的维护变得更容易实现.开发者只需将代表数据源、数据目标以及中间过程的图标拖放至界面中即可.这些中间过程包括排序、汇总和绘制单独列.Designer同样也支持将目标从Manager面板拖放至Designer面板.而且开发者也可以通过同样的图形化拖放界面,添加诸如表名称和排序关键字这样的细节性项目.DataStage通过连接主关键字和外关键字,用图示的方式阐明了查询关系.DataStage只需单击鼠标右键在弹出菜单中,选择函数名即可实现函数调用.开发者也可从下拉列表中,选择用户自定义函数.也可以引入事先存在的ActiveX例程,或者用其他编辑测试工具开发自己的ActiveX例程.在运行期间,DataStage将完成所有在整个作业中移动行与列所需的操作,将图形图像转换为实体.同样的图形隐喻也可扩展到单独域级别,单独域级别列对列映射的建立是非常直观的.开发者用横线将每一数据源、行或中间结果集合定义与它们对应的目标连起来.通过使用下拉列表中列出的内建函数扩充列表,开发者可以清楚的阐明Designer中复杂的布尔逻辑运算、字符串操作与数学函数.开发者采用点击的方式来构建转换表达式.如果开发者需要使用由用户定义的外部例程,也可以从同一菜单中选择.对于支持指向单一或多重目标行分离的过滤器和基于值的约束条件,也是采用这种模型设计解释的.开发者可以使数据集成应用程序的长期维护工作变得简单.开发组成员可以共享作业逻辑,同时对于那些继承了多步转换作业的开发者,也不会因需要浏览数千行复杂程序逻辑而变得气馁或被耽搁. 1.2)调试DataStage Debugger完全整合于Designer之中.Debugger是一种测试工具,它允许数据集成人员在程序运行期间,同时浏览转换逻辑从而提高了开发工作效率.在行级处理的基础上,开发者设定断点,并观察数列数据在整个作业中的流程.DataStage可以立刻发现并纠正逻辑错误或意外的遗留数据值错误.这种错误检测提高了开发工作的效率,特别是在进行日期格式转换,或者是在调试诸如隶属于某一具体的成本中心的数据行之类的复杂数据转换时,或者是确定为何星状结构中某些维趋向空或为零时.利用扩充报表输出或日志文件,进行详细分析是不必要的,这是因为DataStage Debugger通过图形化方式识别用户设定的可验证逻辑的断点,这遵循了DataStage Designer的易用图形隐喻. 1.3)处理多来源与多目标 DataStage的出现使比较和集成多重、不同来源的行变为可能-无需编写底层代码.多重来源可以是平面文件,为了分解变化的数据或出于查询目的而添加的异构表,需要对这些文件的值进行比较.由服务器引擎进行底层SQL语句,比较平面文件,处理连接细节.对性能最为关键的是以流方式进行的文件比较,和满足所选的、不断涌入的其余转换过程的联合特性的数据行.DataStage设计支持多个目标表的写入.在同样的作业中,多重目标表可以同时做到以下几点:来源多样化(不同的RDBMS类型或文件类型)具有多个网络目的地(表被发送至远端)通过支持RDBMS厂商的加载程序、平面文件I/O以及SQL语句插入等多种策略加载数据经过设计,在开发者最初通过图形化方式表现作业流程时可以进行数据行的分离或复制.DataStage可以根据多重逻辑路径随意复制行,也可以在横向上根据列值在纵向上根据发往每个目标的不同列转换为多行.而且DataStage可以推动从同一来源开始的分离作业流动.从一个图形图表来年服务器引擎可以分离单一的行,同时记录到多路径中或在完成作业进调用多过程.没有为达到此目的而设立的中间控制区域.最终的好处是减少了数据传递、I/O操作并对真实世界数据流动的需求做出了简单明了的阐释. 1.4)对通用关系数据库系统的本地支持 DataStage可以与使用专门应用程序界面的通用数据库进行交流从而减少网络开销.几乎对每个决策支持应用软件而言,关系数据库都是关键的组成部分.它们常常会被用作存储集成数据的介质.在许多情况下,它们也是商业信息的来源.为实现与这些数据库系统的相互作用,需要使用SQL从数据源结构中检索数据或将结果写入目标.即使拥有数量众多的加载程序可以获得更好的工作性能,但数据集成例行程序仍需要动态SQL执行记录排序、更新或是其他的行处理操作.对于数据集成工具来说,提供与这些数据库以及多样化的厂商配置最为有效交流方式是非常重要的.ODBC是提供此种互动能力最为灵活的方式,但它无法确保总是能够以最少的开销获得最佳的性能.DataStage支持ODBC方式并为许多通用的RDBMS提供了驱动支持,它同样也致力于提供直接API访问,允许数据集成开发者饶过ODBC以直接调用方式与数据源和目标结构直接进行本地对话.不论是何地,只要可能DataStage都会采用由厂商API提供的特殊的性能配置,从而缩减了软件额外配置与支持的开销. 1.5)转换的应用 DataStage包含一个执行列操作与转换的函数与例程库.开发者可以直接使用函数执行列映射或者在遵循较为复杂的转换与运算法则前提下执行合并操作.在使用函数和例程执行理想的列映射操作后,开发者单击编译图标,首先编译器将对作业进行分析,然后如何最好的对数据流进行管理.接着编译器将为每一个独立的转换映射生成目标代码,并在数据字节发往目的地时采用尽可能高效的方式对数据字节进行操作.DataStage预制有120多个小例程,可完成从子字符串操作到字符转换和复杂运算的各种操作.转换脚本语言是BASIC语言的扩展,它包含有大量专用的字符串操作与数据类型转换函数,非常适用于数据存储.而且这种语言有一个经过验证的调用库,15年来它一直都支持数据集成应用以及在线交易处理系统.此外,DataStage还拥有200多种复杂转换,涉及到如数据类型转换、数据操作、字符串函数、公用程序,行处理以及度量(包括距离、时间和重量)转换等许多方面. 1.6)图形化作业定序器 在DataStage中作业系统被称为批处理,它可以执行其他作业调用其他批处理.DataStage提供一个直观的图形化界面来构建批处理作业或进行作业排序.在图形化界面当中进程和链接被用于构建批处理作业或进行作业排序,其中进程表示活动(如运行一个作业),链接表示活动之间流的控制.作业顺序的控制是很重要的,因为它支持一个具有内部处理依赖性作业系统的建立.例如在某个特定的数据集成应用程序中,假设审计收入是首先要执行的作业,那么直到(或除非)该作业完成并返回一个零代码其他作业方可继续进行.当审计收入作业完成后,相应的命令语言将会发出信号通知DataStage,DataStage将同时运行两个不同的维数作业.而第四个过程事实作业还在等待这两个维数作业的完成,因为它在自己的转换操作中使用完成的报表.虽然采用线性的方式这些作业照样可以正确的运行,但应用程序整体的运行时间将会大大延长.两个维数作业同时运行但互不干扰.在一台配置完善的服务器上,鉴于一系列的排序可能会变得非常复杂,两个作业将分别占用各自的处理器运行.5.2. 高级维护一旦集成数据环境建立并开始运作,它将会在维护与更新两方面带来新的挑战.工业专家称涉及到数据集成工程的总费用增加额中70与维护集成环境有关.Ascential公司的解决方案从一开始就已经考虑到了维护方面所带来的挑战,它提供对象再利用、版本控制以及捕获变化的数据等功能,有助于开发者迅速满足不断出现的用户需求而不会增加信息技术资源方面的负担. 2.1)对象再利用与共享 开发者可以在所有其他DataStage服务器上重新利用同一工程内用DataStage开发的转换.而且他们可以通过各种不同的组件轻易共享转换,如使用DataStage的中央控制工具实现数据容器的导出到集成.使用容器,开发者可以将同一数据集成过程中的几步处理合为一个单独的单元.容器可以只用于某一个作业,也可在多个作业中共享.本地容器对于某一作业而言是私有的,只能建立该存储器的作业内部进行编辑.共享的存储器是独立的DataStage组件,可以在多个作业中使用,但所有作业的数据源需一致.共享的存储器对于重复的如再利用生成的测试数据或一个外部报表结构的详细数据等数据集成任务来说是非常有用的. 2.2)版本控制 此外,DataStage提供版本控制功能,它保存了所有数据集成开发的历史沿革,保留了应用程序组件,如表定义,转换规则和源/目标列映射等.开发者可以查阅过去的规则,并可随意恢复所有可移动至远方区域的版本.DataStage系列产品允许开发者在必要时于本地增加分发的组件.组件要以只读的方式进行移动,以保留其具体特性.公司信息技术人员可以查阅本地变化,并在中心地区记录其版本.版本控制可以为开发者跟踪源代码和如外部SQL脚本、命令行和模型等文本文件.版本控制也可保护转换规则的本地只读版本,使其免受不安全网络或机器故障的影响,这样某一节点发生故障就不会使全世界范围内全部决策支持基础设施瘫痪. 2.3)捕捉更改数据 处理更改数据的也是数据集成应用程序性能的一项重要指标.决策支持系统需要定时进行更新,更新所需的装载时间是由以下这些变量决定的:更新频率 目标的可获得性 访问数据源的能力 更改数据的预计量 OLTP数据库的技术结构网络超载和过长的装载时间都是量密集型的环境所不能接受的.对更改数据捕捉的支持可以使刷新目标环境所需的装载时间达到最小化.更改数据捕捉描述了支持最近输入或更新的记录的获取、修改和移植的方法和工具.Ascential软件公司意识到了捕捉更改数据所固有的复杂性和缺陷,所以创建了一套多层战略来帮助开发人员构建基于日志、触发器和本地复制的最有效的解决方案.在处理更改数据时,有两个最大的问题需要解决:在操作系统中识别更改记录 将更改恰当地应用到数据集成基础设施中为了在更改数据捕捉方面为开发人员提供帮助,Ascential软件公司提供了可以从主机的日志和交易系统以及非常普及的相关数据库如DB2,IMS和Oracle中获取新数据行的工具.事实上,每个版本的更改数据捕捉都是一个独一无二的产品,它反映了对在特定的数据库技术结构中捕捉更改的优化方法.更改数据捕捉进程特别提供了时间标记检查的属性和表示交易类型如插入、更改、删除的代码的分解的属性.同时,寻求能够调整数据库架构本地服务、遵守数据库厂商的文件格式和API函数以及最小化对OLTP系统的冲突影响的方法也是它的设计目标.2.4)本地语言支持 在全球化高度发展的今天,跨国公司和网络公司的存在使得企业对各种国际化软件解决方案的需求变得十分旺盛.在公司的IT阵列中,即使有一段程序不支持国际标准或字符集,也会造成很大的困难.Ascential公司为国际化的应用设计了DataStage产品家族.Ascential公司所采用的方法是统一的、符合工业标准的方法,实施这种方法的基本要素如下:Windows客户机程序标准在支持本地版本的Windows NT和Windows2000的问题上,所有的DataStage客户界面都全面支持32位的Windows代码页标准.例如,在丹麦的哥本哈根、俄罗斯的莫斯科以色列的特拉维夫的开发人员都可以使用DataStage Designer对他们的丹麦语、俄语和以色列语的Windows版本进行操作.DataStage服务器DataStage服务器在国际化支持方面并不依赖底层的操作系统.每个服务器都能够使用统一的和单一的内部字符集(Unicode)来进行相关的字符绘制、执行Sort的基于POSIX的国内标准、Upcasing、Down casing、货币、时间(日期)、校对和数字表示.本地化所有的DataStage组件都拥有必要的客户基础设施来将GUI界面完全本地化至当地语言,包括帮助信息、文档、菜单、安装程序以及Transformer进程等部件.DataStage已经拥有了完全本地化的日文版本.5.3. 加速数据转移在集成环境中跨越整个企业网移动数据会对系统的性能和应用程序的效率造成很大的影响.Ascential公司考虑到了这种挑战,并在自己的产品中预制了专为数据转移而设计的进程来解决这些问题. 3.1)命名管道进程 命名管道能力使开发人员能够轻而易举地实现在两个或多个作业之间,或者在一个作业和一个外部程序之间的数据转移.命名管道是许多操作系统都有的一项功能,通过它可以在内存和数据集成程序的关键进程之间实现数据的透明移动.命名管道的功能非常强大,但是有时难以操作.使用DataStage,开发人员只需选中命名管道选项,所有的底层操作系统细节都由DataStage来完成.另外,通过命名管道对其他工具如专用大型装载程序等的支持,DataStage能够实现数据的无缝共享.大型的作业可以分割成若干个更容易管理的作业,也可以由若干个开发人员共同来完成.在执行时,个体作业是并行运行的,但是集成处理过程却是逐个发生的.使用命名管道,可以优化机器资源,缩短设计和开发时间. 3.2)FTP进程 在为将数据装载到目标环境做准备工作的时候,可能会涉及到使用文件传输协议来在企业网内的机器之间移动平面文件.程序和用户编写的脚本一般都支持这一进程,但是它要求目标机器上必须有足够的磁盘空间来保留文件的副本.这一进程工作的时候并没有有效地利用可用的存储空间.DataStage为使用文件传输协议的进程提供了FTP支持,但是跳过了执行独立的命令程序所需的费时的I/O步骤.当数据块在网络上传送的时候,服务器引擎筛选出经过事先绘制的数据行,并将其直接移动到转换进程中去.另外,FTP还可以用于对平面文件的远程写入.因为在作业执行的前后都不进行额外的磁盘I/O,所以FTP进程可以帮助开发人员节省大量的时间. 5.4. 使用外部进程因为每一个数据集成环境都是不同的,所以Ascential公司的解决方案具备灵活性和扩展性,这样开发人员就可以满足特殊的代码要求.DataStage产品家族允许开发人员对现存的集成代码加以利用以此来缩短开发周期.同时它还使开发人员拥有了为特殊数据处理构建自定义插件进程的能力. 4.1)插件API DataStage XE中的每个Stage图标都包括一个对话框,这个对话框是为这个Stage所标明的技术专门设计的.例如,当设计人员点击排序进程的时候,软件将为开发人员打开一个属性列表来定义排序键、顺序和性能特性等.这些属性的出现是DataStage调用了一个使用插件API编写底层程序的结果.如果能得到好的编制和支持,API可以让课题和技术问题专家很便捷地对产品进行扩展.插件使集成商、零售商和MIS商店可以为保护他们自己的专利和投资,对DataStage进行扩展.因为插件Stages对DataStage引擎没有依赖型,所以开发人员可以从网上下载并分别安装.Ascential软件公司经常开发出新Stages并以这种方式向客户发放. 4.2)调用专用工具 在作业过程中,DataStage开发人员可能会定义一些特定的出口点.这些出口点是用来向操作系统发出呼叫,或者调用现有的代码和程序的.开发人员通过拖放,将包含这些出口点的定义的Stage图标移动到Designer工作区中.DataStage提供了无限的灵活性,用户在作业中可以定义的出口点的数目是没有限制的.调用外部程序使开发人员可以在应用程序内部执行清理操作、发布电子邮件信息或者发送基于某一事件的页. 5.5. 性能和可伸缩性为了能够在每个进程中实现每秒钟移动最多的数据行,DataStage服务器引擎的每个部分都进行了优化.按照缺省设置,作业将从一个或多个数据源中一次性提取数据,根据需要进行操作后再将其一次性写入到指定目标中.因此DataStage应用程序,不需要中间文件或者二级存储单元来进行聚合或者中间排序.取消这些步骤可以避免过多的输入输出操作,而输入输出正是最普遍的性能瓶颈之一.数据不必再载回到相关系统中,进行SQL的再处理.因此,DataStage作业可以在更短的时间内完成.如果多个目标都很重要,DataStage将会在水平和垂直两个方向上分解数据,然后再通过独立的逻辑路径(每个逻辑路径都不要求临时移动区)来传送数据.DataStage使这个过程尽可能在内存中完成,使用尽可能少的传递次数来完成复杂的转换工作.这种方法的好处也是减少输入输出操作的次数.在作业中对磁盘的操作越少,进程完成的速度就越快.目标系统可以保持在线,用户可以在非常短的时间内完成对它的存取访问.下面的章节介绍了支持这种方法的DataStage的一些核心概念. 5.1)采用多CPU架构 借技术高速发展的东风,DataStage充分利用了操作系统和硬件的进步,数据集成引擎采用了多CPU环境,可以在多个进程之间,自动分发独立的作业流.这个功能可以保证对现有资源的充分利用,以及缩短应用程序的总体处理时间.作业一开始执行,服务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论