DataStage Server Routines

转自:http://opengreat.blog.51cto.com/264115/90274

 

很久没有来这里了,实在有点对不起大家,这段时间都太忙了,有不少网友找我联系都没时间去回,实在抱歉!今天想跟大家一起学习下DataStage中如何自定义Routines以及使用自定义的Routines。
      其中在google里也可以收到类似的例子,而且比我也讲得详细,大家有兴趣也可以去搜下相关资料。这里我仅把我做的一个例子分享给大家,抛砖引玉吧!
      在DataStage中Routines是一个非常强大的内置函数库(个人看法),其中包括大量内置函数可供我们使用,对于其中的函数个人也了解不多,更多地是遇到相关问题查找其帮助文档。当然再多的函数也有可能满足不了自身的业务需求,因此学会自定义一些函数还是有必要的。费话少说,下面来看看我是怎样自定义Routines,然后将其用于转换过程。
1。       
      既然Rountines是个函数库,那我们自定义的当然就只是它其中的一个函数而已,想到函数那就简单了:
      函数名:myTest1
     参数(整个最简单的):inputparameter
     返回值:暂时不用管,等会儿再吹!:)
     函数功能:当读出某字段的值为1时,将该字段改为2;值为空或null时,将其改为inputparameter is blank!!;值不为空也不为1时,将其改为inputparameter is not 1!!(哈哈,没见过这么垃圾的功能吧!我自己都没见过,呵呵,不过我是只注重过程不注重结果的人!)
2。
     2.1 新建一个Routines的目录
    
    在Designer中右键Routines,如上图,新建一个放自定义Routines的目录,如果你不愿意,我也没办法,个人习惯而已!
    2.2 新建一个Server Routine
   
    在刚刚建的那个Routine目录下点右键,新建一个自己的Routine,在弹出的对话框中填入Routine name,Type(表示你要在哪个stage中用自定义的这个Routine),Category(表示该Routine所在的目录,如果在第一步中没有建该目录就不用管了),description(对该Routine的必要描述,你总得让其他人看得懂吧:))  ,如下图:
    在Arguments标签页中填入该Routine的参数,在我们这里就是inputparameter

     接下来就是最关键的Routine功能的实现,如下图:

        这里的实现主要用的是Basic语言,如果你用过VB,那语言上应该没问题。Basic的语法我就不说了,大家可以去google一下,附件是我的代码,非常简单,重点说说代码中以下几个关键点:
         IsNull(inputparameter)=1判断输入的inputparameter是否为null,如果发现是null,IsNull()返回1,对Oracle中值为空的字段值,用ds来读是null形式。
  Ans是函数默认的返回值,如果要想函数返回某个值,只需将要想返回的值赋于Ans。
  Call DSLogInfo()是调用DS中内置的log信息函数,即把信息显示在director中相应的Job运行log里。
  2.3 编译,测试自定义的Routine   
 2.4 测试成功后,就要开始使用我们定义的Routine了
 首先做一个ServerJob,Job的主要功能完成从源(Oracle数据库中某个表)到目标(某个文件)的抽取和转换过程,如下图: 
 具体Oracle_OCI_0 和Sequential_File_1的配置就不用多讲了,大家可以参考我写的<DataStage实践之简单入门>,如果还有问题可以Q我,这里主要说下在Transformer_2中如何使用自定义的Routine:
 打开Transformer_2 Stage,双击Derivation区域中要对某个字段使用Routine的那个区域,如下图(双击Derivation所在列的红色区域,即Column Name为FlAG):
 
双击后出现一个文本框:
 
再右键该文本框,选DS Routine....,再弹出框中选中你自定义的Routine:
 
再双击%inputparameter%,使其为选中状态,右键选中区域,在选择Input Column...后选择
Flag字段,如下图:
 
这一步其中就是将Flag作为参数赋予自定义的Routine(myTest1),讲到这里大家都清楚了吧:),编译,运行,OK!
 你们试试吧!!!

 总结:其实自定义Routines的难点并不在于如何使用,而在于如何写一个效率高而又满足我们业务需求的Code,所以学会写才是问题的关键。祝你们好运!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值