最为常用的Job类型,Job可以组合使用,ServerJob是Job的最小单位。
原文档:IfyouhavetheWebServicespackinstalledanadditionalcheckbox,WebServiceEnabled,appears.Selectittoindicatethejobcanbemadeavailableasawebservice.
2、ParallelJOB:
3、MainframeJOB:运行于大型机的JOB。
4、JOBSequences:JobSequence主要用于Job间的协作工作控制,如各Job的实行流程,出错处理,文件监控等。
二、jobstatus的用法
jobstatus
-jobstatuswaitsforthejobtocomplete,thenreturnsanexitcodederivedfromthejobstatus.
命令格式为:
dsjob–run
[–mode[NORMAL|RESET|VALIDATE]]
[–paramname=value]
[–warnn]
[–rowsn]
[–wait]
[–stop]
[–jobstatus]
[–userstatus]
[-local]
projectjob
三、判断NULL值
实例
STAGE:JOINSTAGE
设置:
LEFTJOIN
左输入语句:SELECT*FROMPMP_Insured_Amount
右输入语句:SELECTCOL_ID,TAB_NAME,WORK_DATE,
REF_COLUMN1ASUNIQUE_ID_IN_SRC_SYS,
REF_COLUMN2,ROW_ID,
HASHCODEASB_HASHCODE,
ANCHOR_ID,PARTITION_KEY,
IS_DUPLICATED,
'A'ASMARK--用以判断结果集右边是否为空
FROMETL_FOR_INC_TMP2
SQL语句:
SELECTA.*,B.*
FROMPMP_Insured_AmountA
LEFTJOINETL_FRO_INC_TMP2B
ONA.UNIQUE_ID_IN_SRC_SYS=B.UNIQUE_ID_IN_SRC_SYS
功能:判断来自A表的所有记录,哪些能够B表关联,哪些不能与B表关联。说明:由于
在构造右输入语句时增加了一个B表中没有的常量字段MARK,所以如果A表能够与B表关
联的记录,该常量字段就不为空值(此处设了该常量值为A);如果A表与B表关联不上
的记录,该常量字段就为空值(NULL)。如此只需用一条判断语句判断常量字段是否为空,
从而分出两种记录来。
记录分离所使用的STAGE是Transformstage。一开始时,使用Condition设置了字段MARK
='A'与字段MARK<>'A'来分离记录,运行后发现只有MARK='A'的一支有数据通过,
而MARK<>'A'的一支没有数据通过,后来把MARK<>'A'的一支的条件(condition)
改为ISNULL(MARK)后,数据正常输出。
总结:从理论上说,任何与NULL值作比较运算(=、>、<、<>)结果都为NULL,而MARK<>'A'属于比较运算,当MARK为NULL时,结果就为NULL,所以就会没有数据输出。实际上,在MSSQLSERVER2000中,如果使用WHEREMARK<>'A'作筛选条件,是可以把为NULL值的字段输出的。这是DATASTAGE与MSSQLSERVER在处理NULL值运算的不同,MSSQLSERVER是允许一定违反规范规则的情况存在。
四、关于对多表进行关联操作的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完成上述取值规则的语句:
SELECTA.a,A.b,A.c,A.d,B.e
FROMALEFTJOIN
(SELECTA.a,A.b,A.c,A.d,B.e,AB.e
FROMALEFTJOINBONA.b=B.b)ASABONA.c=AB.c
很容易就能看出,最终的结果将会(假设结果表名为C):C(A.a,A.b,A.c,A.d,B.e,AB.e),结果正确,所以在T-SQL里,在做多表关联时,可以不必关心不同表的同名字段的取值问题。
但在DATASTAGE里就不能不关心了。由于DATASTAGE里的所有STAGE的输出,默认下是对该STAGE的输入进行复制,即表结构的复制。输入的是什么名字的字段,输出的也是这个名字的字段。