资源描述:
《DATASTAGE----DATASTAGE经验积累》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、DATASTAGE——一DATASTAGE经验积累一、JOB的分类与作用 1、ServerJOB: 最为常用的Job类型,Job可以组合使用,ServerJob是Job的最小单位。 原文档:IfyouhavetheWebServicespackinstalledanadditionalcheckbox,WebServiceEnabled,appears.Selectittoindicatethejobcanbemadeavailableasawebservice. 2、ParallelJOB: 3、Mainframe
2、JOB:运行于大型机的JOB。 4、JOBSequences:JobSequence主要用于Job间的协作工作控制,如各Job的实行流程,出错处理,文件监控等。二、jobstatus的用法 jobstatus-jobstatuswaitsforthejobtocomplete,thenreturnsanexitcodederivedfromthejobstatus.命令格式为: dsjob–run [–mode[NORMAL
3、RESET
4、VALIDATE]] [–paramname=value]
5、 [–warnn] [–rowsn] [–wait] [–stop] [–jobstatus] [–userstatus] [-local] projectjob三、判断NULL值 实例 STAGE:JOINSTAGE 设置: LEFTJOIN 左输入语句:SELECT*FROMPMP_Insured_Amount 右输入语句:SELECTCOL_ID,TAB_NAME,WORK_DATE,REF
6、_COLUMN1ASUNIQUE_ID_IN_SRC_SYS,REF_COLUMN2,ROW_ID,HASHCODEASB_HASHCODE,ANCHOR_ID,PARTITION_KEY,IS_DUPLICATED,'A'ASMARK --用以判断结果集右边是否为空FROMETL_FOR_INC_TMP2SQL语句: SELECTA.*,B.* FROMPMP_Insured_AmountALEFTJOINETL_FRO_INC_TMP2BONA.UNIQUE_ID_IN_SRC_SYS=B.UNIQUE_ID_IN_
7、SRC_SYS功能:判断来自A表的所有记录,哪些能够B表关联,哪些不能与B表关联。说明:由于在构造右输入语句时增加了一个B表中没有的常量字段MARK,所以如果A表能够与B表关联的记录,该常量字段就不为空值(此处设了该常量值为A);如果A表与B表关联不上的记录,该常量字段就为空值(NULL)。如此只需用一条判断语句判断常量字段是否为空,从而分出两种记录来。 记录分离所使用的STAGE是Transformstage。一开始时,使用Condition设置了字段MARK='A'与字段MARK<>'A'来分离记录,运行后发现只有MARK='A'的一
8、支有数据通过,而MARK<>'A'的一支没有数据通过,后来把MARK<>'A'的一支的条件(condition)改为ISNULL(MARK)后,数据正常输出。总结:从理论上说,任何与NULL值作比较运算(=、>、<、<>)结果都为NULL,而MARK<>'A'属于比较运算,当MARK为NULL时,结果就为NULL,所以就会没有数据输出。实际上,在MSSQLSERVER2000中,如果使用WHEREMARK<>'A'作筛选条件,是可以把为NULL值的字段输出的。这是DATASTAGE与MSSQLSERVER在处理NULL值运算的不同,MSSQLSERV
9、ER是允许一定违反规范规则的情况存在。四、关于对多表进行关联操作的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的字段,第二次关联是在第一次关联的结果集的基础上进行
10、的,第二次所取的字段名与第一次所取的相同。在此就出现种问题,从数据库常识来说,同一张表是不允许有同名字段出现