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,所以学会写才是问题的关键。祝你们好运!!
DataStage Server Routines相关推荐
- datastage server job之dsjob 命令
=================================================================== 希望能够和使用的DataStage 朋友们一起 ...
- datastage与oracle,datastage经验总结
导读:DSsmtp:[210.75.71.180]dssendmail_template.txt*OnUNIXtorunsendmail,thetemplatelookslikethis(doesn' ...
- 用IBM WebSphere DataStage进行数据整合: 第 1 部分
转自:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0602zhoudp/ 引言 传统的数据整合方式需要大量的手工 ...
- DataStage 简介
数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform, Load). ...
- DataStage简介
数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform, Load). ...
- DataStage(ETL)技术总结
数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform, Load). IBM ...
- ETL DataStage实现
写于2009年秋,DataStage6.5 第1章 前言 自开始知道数据库,就知道有数据仓库这个东西,数据仓库中一关键环节就是ETL.可是三四年过去了,由于没有接触数据仓库这个东西,对ETL自然是一 ...
- DataStage(ETL)技术总结 -- 介绍篇
转载 数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform, Load). ...
- DataStage 简介
数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform, Load). ...
最新文章
- Java开发技巧——并发控制中的乐观锁与悲观锁
- Linux下快速安装MySQL教程
- 他是奥运会银牌获得者,还是世界知名数学家,他的家族让世界为之倾倒
- java接口的应用举例
- k8s核心技术-Helm引入---K8S_Google工作笔记0043
- NLP之路-继续书本上的实验
- 《Java高并发程序设计》读书笔记 第二章 并行程序基础
- HTML5学习笔记(六):CSS基本样式
- 贺利坚老师汇编课程55笔记:带借位减法指令SBB
- 进程间传递文件描述符--sendmsg,recvmsg(可用)
- pandasDataframe模块
- Idea中jclasslib的安装与使用
- oracle 校验 统一社会信用代码 函数
- PySpark RDD 之collect、 take、top、first取值操作
- echarts 饼图移动端_使用Echarts实现饼图
- ESXI6.7安装补丁
- 关于Selenium3在MicrosoftEdge浏览器中出现的问题
- Cannot execute request on any known server或DiscoveryClient_UNKNOWN/DESKTOP-MQ8D0C9:8761
- UART串口通讯协议
- 如何用qq远程桌面链接到计算机,如何用qq远程控制电脑_qq怎么远程连接对方的电脑-win7之家...
热门文章
- PPT的笔刷不能做布尔运算的解决办法
- PS 文字有锯齿怎么办
- java四舍五入方法的基础学习
- python下载哪个好_Python和Java到底哪个更好?
- 黄金时代 —— 深度学习 (目标检测)
- 二维统计matlab,Matlab中二维统计分析图和三维立体图
- python word 表格 框线_用python解析word文件(段落篇(paragraph) 表格篇(table) 样式篇(style))...
- vue通过返回值来判断图标的显示/隐藏,改变图标颜色
- java如何实现线程同步
- java多线程同步5种方法