Datastage 利用Server Job 调度作业

浏览: 3928

版本:IBM InfoSphere DataStage V11.5.1

操作系统:linux redhat 6.4


步骤:

创建Server job 

Clipboard Image.png

点击Job 属性ProPerties

Clipboard Image.png

在Job Control 中增加以下代码

ETL_DATE=Ereplace(Oconv(date(),"D4YMD[4,2,2]"),"/","")

ETL_DATE_L=Ereplace(Oconv(date()-1,"D4YMD[4,2,2]"),"/","")

为获取系统时间变量值。Etl_Date 和Etl_Date_L

在下面筛选需要增加的作业或者序列

其中Etl_Date 和Etl_Date_l 为增加获取定义变量参数

Clipboard Image.png

Datastage 常用函数 Basic操作符:

Datastage 常用函数 Basic操作符:

数学运算符:+, -, *, /

关系操作符:=, <,>, <=, =>

逻辑操作符:And, Not, Or

连接操作符: ":" --"Theemployee's name is" : lname : "," : fname

截取字符串:String类型有这个属性,直接在字符串后面加[],标明起始,即可截取字符串

字符数组,从第一个开始,而不是从"0"开始。"String[star,length]"

"APPL3245"[1,4] --> "APPL"

"APPL3245"[5,2] --> "32"

IF操作符:

方法I: variable = If condition Thenexpression Else expression

If Column1 >100 Then "A" Else "B"

方法II:If condition Else statement

If condition

Else

statements

End 方法III:If condition Then statement

If condition

Then

statements

End

方法IV:If condition Then statements [Elsestatements]

If condition

Then statements

End

[Else statements

End] 注释

以REM * ! $* 开头的为注释

系统变量:

1、@Date,@Time --> Jobs开始运行的日期和时间,年、月、日是从日期函数中获得的。

2、@InRowNum, @OutRowNum --> 导入的记录数量,导出的记录数量。

3、@LogName --> 登陆的用户名。

4、@Null --> 返回空值。

5、@True, @False --> 返回布尔值。

@True = 1

@False = 0

6、@Who --> 获得当前工程的名字。

使用Iconv和Oconv函数转换日期

使用Iconv来将一个字符串的日期转换成为一个国际的数字,是天数。

以1967年12月31日作为基础点,那一点在DataStage中是"0"。

使用Oconv来将一个日期的天数,转换成为一个具有格式的字符串。

使用"D"字的转换代码,使用日期格式来进行显示。

"D4-MDY[2,2,4]":

1、D表示日期的转换代码。

2、4表示年份的位数。

3、-表示采用"-"分隔符。

4、MDY年月日的显示顺序。

5、[2,2,4]根据前面的显示顺序来显示年月份的位数。 Iconv( "12-31-67","D2-MDY[2,2,2]") --> 0

Iconv( "12311967", "D4MDY[2,2,4]") --> 0

Iconv( "31-12-1967","D-DMY[2,2,4]") --> 0

Oconv( 0,"D4-MDY[2,2,4]") -->12-31-1967

Oconv( 0,"D2/DMY[2,2,2]") --> 31/12/67

Oconv( 10,"D/YDM[4,2,A10]") -->1967/10/January

Oconv(Iconv( "12-31-67","D2-MDY[2,2,2]"),"D/YDM[4,2,A10]") -->1967/31/December

时间:

X = Oconv(10000,"MT") X = "02:46"

X = Oconv(10000,"MTHS") X = "02:46:40am"

X = Oconv(10000,"MTH") X = "02:46am"

X = Oconv(10000,"MT.") X = "02.46"

X = Oconv(10000,"MTS") X = "02:46:40"

X = Oconv(time(),"MTS") X = 当前系统时间

常见问题:1.判断字符串是否为空

Len( trim(variable) ) = 0

IsNull(variable)

2.对日期的处理

Ereplace(DSLink30.PDATE,"-","") 将"-"分隔符的字符串日期中的"-"替换掉

Date.tag(date()) 系统日期以"-"分隔2007-08-21

Tomorrow = Oconv(Date() + 1,"D4/YMD") "1997/5/24"

DateCurrentDateTime(date()) 2007-08-22 11:44:34.000 (DS R

outine)

DSJobStartDate 2007-08-22

DSJobStartTime 11:48:58

DSJobStartTimestamp 2007-08-2211:48:58

Ereplace(Date.tag(date()), "-", "") :Ereplace(Oconv(time(), "MTS"), ":","") 20070822114434

推荐 1
本文由 我是最优雅的杀手,不杀人专杀狗 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册