【DataStage】DataStage Basic

来源:互联网 发布:中国人口和房价知乎 编辑:程序博客网 时间:2024/04/29 16:55
Basic操作符:
 数学运算符:+, -, *, /
 关系操作符:=, <, >, <=, =>
 逻辑操作符:And, Not, Or
 连接操作符: ":"  --"The employee's name is" : lname : "," : fname
 截取字符串:String类型有这个属性,直接在字符串后面加[],标明起始,即可截取字符串
              字符数组,从第一个开始,而不是从"0"开始。"String[star, length]"
              "APPL3245"[1,4] --> "APPL"
              "APPL3245"[5,2] --> "32"
 IF操作符:
  方法I: variable = If condition Then expression 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 [Else statements]
 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", "D4 MDY[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 Routine)
  DSJobStartDate 2007-08-22
  DSJobStartTime 11:48:58
  DSJobStartTimestamp 2007-08-22 11:48:58
  Ereplace(Date.tag(date()), "-", "") : Ereplace(Oconv(time(), "MTS"), ":", "") 20070822114434