转自: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,所以学会写才是问题的关键。祝你们好运!!

DataStage Server Routines相关推荐

  1. datastage server job之dsjob 命令

    ===================================================================          希望能够和使用的DataStage 朋友们一起 ...

  2. datastage与oracle,datastage经验总结

    导读:DSsmtp:[210.75.71.180]dssendmail_template.txt*OnUNIXtorunsendmail,thetemplatelookslikethis(doesn' ...

  3. 用IBM WebSphere DataStage进行数据整合: 第 1 部分

    转自:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0602zhoudp/ 引言 传统的数据整合方式需要大量的手工 ...

  4. DataStage 简介

    数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform,  Load).     ...

  5. DataStage简介

    数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform,  Load).     ...

  6. DataStage(ETL)技术总结

    数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform,  Load). IBM ...

  7. ETL DataStage实现

    写于2009年秋,DataStage6.5 第1章  前言 自开始知道数据库,就知道有数据仓库这个东西,数据仓库中一关键环节就是ETL.可是三四年过去了,由于没有接触数据仓库这个东西,对ETL自然是一 ...

  8. DataStage(ETL)技术总结 -- 介绍篇

    转载 数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform,  Load). ...

  9. DataStage 简介

    数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform,  Load).     ...

最新文章

  1. Java开发技巧——并发控制中的乐观锁与悲观锁
  2. Linux下快速安装MySQL教程
  3. 他是奥运会银牌获得者,还是世界知名数学家,他的家族让世界为之倾倒
  4. java接口的应用举例
  5. k8s核心技术-Helm引入---K8S_Google工作笔记0043
  6. NLP之路-继续书本上的实验
  7. 《Java高并发程序设计》读书笔记 第二章 并行程序基础
  8. HTML5学习笔记(六):CSS基本样式
  9. 贺利坚老师汇编课程55笔记:带借位减法指令SBB
  10. 进程间传递文件描述符--sendmsg,recvmsg(可用)
  11. pandasDataframe模块
  12. Idea中jclasslib的安装与使用
  13. oracle 校验 统一社会信用代码 函数
  14. PySpark RDD 之collect、 take、top、first取值操作
  15. echarts 饼图移动端_使用Echarts实现饼图
  16. ESXI6.7安装补丁
  17. 关于Selenium3在MicrosoftEdge浏览器中出现的问题
  18. Cannot execute request on any known server或DiscoveryClient_UNKNOWN/DESKTOP-MQ8D0C9:8761
  19. UART串口通讯协议
  20. 如何用qq远程桌面链接到计算机,如何用qq远程控制电脑_qq怎么远程连接对方的电脑-win7之家...

热门文章

  1. PPT的笔刷不能做布尔运算的解决办法
  2. PS 文字有锯齿怎么办
  3. java四舍五入方法的基础学习
  4. python下载哪个好_Python和Java到底哪个更好?
  5. 黄金时代 —— 深度学习 (目标检测)
  6. 二维统计matlab,Matlab中二维统计分析图和三维立体图
  7. python word 表格 框线_用python解析word文件(段落篇(paragraph) 表格篇(table) 样式篇(style))...
  8. vue通过返回值来判断图标的显示/隐藏,改变图标颜色
  9. java如何实现线程同步
  10. java多线程同步5种方法