datastage 能实现哪些算法c语言实现高清pdf

DataStage&执行&shell&的方法
使用的是 DataStage8.1 &
有两种执行shell 的方式&
ExecSH 与ExecShSilent 的区别在于
ExecSH director的日志中 会明明白白的 打印出 你执行shell 命令的 具体内容
ExecShSilent 则不会 正如 Silent 静悄悄的方式
当 传递的参数有敏感数据时 &,则选用后者 ,例如 我需要传 数据库的用户名 和
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。君,已阅读到文档的结尾了呢~~
Datastage 实现拉链算法
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Datastage实现拉链算法
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口5718人阅读
DATASTAGE(5)
&一、JOB的分类与作用(?)&&&&&&& 1、Server JOB:&&&&&&& 最为常用的Job类型,Job可以组合使用,Server Job是Job的最小单位。&&&&&&& 原文档:If you have the Web Services pack installed an additional check box, Web Service Enabled, appears. Select it to indicate the job can be made available as a web service.&&&&&&& 2、Parallel JOB:&&&&&&& 3、Mainframe JOB:运行于大型机的JOB。  4、JOB Sequences:Job Sequence主要用于Job间的协作工作控制,如各Job的实行流程,出错处理,文件监控等。
二、jobstatus的用法&&&&&&&&&&&&& jobstatus&&&&&&&&jobstatus waits for the job to complete, then returns an exit code derived&&&&&&& from the job status.&&&&&&& 命令格式为:&&&&&&& dsjob &run&&&&&&& [ &mode [ NORMAL | RESET | VALIDATE ] ]&&&&&&& [ &param name=value ]&&&&&&& [ &warn n ]&&&&&&& [ &rows n ]&&&&&&& [ &wait ]&&&&&&& [ &stop ]&&&&&&& [ &jobstatus]&&&&&&& [&userstatus]&&&&&&& [-local]&&&&&&& project job
三、判断NULL值  实例&&&&&&& STAGE :JOIN STAGE&&&&&&& 设置:&&&&&&&&&&&&&&&&&&&&&&&&&& LEFT JOIN&&&&&&&&&&&&&&&&&&&&&&&&&& 左输入语句:SELECT * FROM PMP_Insured_Amount&&&&&&&&&&&&&&&&&&&&&&&&&&&右输入语句:SELECT COL_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & ,TAB_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,WORK_DATE&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ,REF_COLUMN1 AS UNIQUE_ID_IN_SRC_SYS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&& ,REF_COLUMN2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&& ,ROW_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& ,HASHCODE AS B_HASHCODE&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&& ,ANCHOR_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&& ,PARTITION_KEY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&& ,IS_DUPLICATED&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&& ,'A' AS MARK&&&&&&&&&&&&&& --用以判断结果集右边是否为空&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& FROM ETL_FOR_INC_TMP2&&&&&&& SQL语句:&&&&&&&&&&&&&&&&&&&&&&&&&&&SELECT A.*,B.*&&&&&&&&&&&&&&&&&&&&&&&&&& FROM PMP_Insured_Amount A LEFT JOIN ETL_FRO_INC_TMP2 B&&&&&&&&&&&&&&&&&&&&&&&&&& ON A.UNIQUE_ID_IN_SRC_SYS = B.UNIQUE_ID_IN_SRC_SYS&&&&&&& 功能:判断来自A表的所有记录,哪些能够B表关联,哪些不能与B表关联。&&&&&&& 说明:由于在构造右输入语句时增加了一个B表中没有的常量字段MARK,所以如果A表能够与B表关联的记录,该常量字段就不为空值(此处设了该常量值为A);如果A表与B表关联不上的记录,该常量字段就为空值(NULL)。如此只需用一条判断语句判断常量字段是否为空,从而分出两种记录来。&&&&&&& &&&&&&& 记录分离所使用的STAGE是Transform stage。一开始时,使用Condition设置了字段MARK = 'A'与字段MARK && 'A' 来分离记录,运行后发现只有MARK = 'A' 的一支有数据通过,而MARK && 'A' 的一支没有数据通过,后来把 MARK && 'A' 的一支的条件(condition)改为 ISNULL(MARK) 后,数据正常输出。
&&&&&&& 总结:从理论上说,任何与NULL值作比较运算(=、&、&、&&)结果都为NULL,而 MARK && 'A' 属于比较运算,当MARK为NULL时,结果就为NULL,所以就会没有数据输出。实际上,在MSSQL SERVER2000中,如果使用 WHERE MARK && 'A' 作筛选条件,是可以把为 NULL 值的字段输出的。这是DATASTAGE与MSSQL SERVER在处理 NULL 值运算的不同,MSSQL SERVER是允许一定违反规范规则的情况存在。
四、关于对多表进行关联操作的STAGE对不同表的同名字段的处理。&&&&&&& 这些STAGE有:JOIN、LOOKUP、MERGE等。&&&&&&& DATASTAGE的处理原则:保留前者,抛弃后者。&&&&&&& 例子:  源表:A(a,b,c,d),关联表:B(b,c,e,f)。  取值规则:第一次关联条件A.b = B.b,取B.e;第二次关联条件A.c = B.c,取B.e。&&&&&&& 说明:关联的有前后之分的。第一次关联时,在结果集中已经存在的名字为e的字段,第二次关联是在第一次关联的结果集的基础上进行的,第二次所取的字段名与第一次所取的相同。在此就出现种问题,从数据库常识来说,同一张表是不允许有同名字段出现的,如何能够正确取值呢?  在T-SQL里面,可以使用JOIN语句对表进行关联,两张表的同名字段e因为被加了表名作前缀,所以即使字段名相同,也可以正确输出。以下则为使用T-SQL完成上述取值规则的语句:&&&&&&& SELECT A.a,A.b,A.c,A.d,B.e&&&&&&&&FROM A LEFT JOIN &&&&&&&&&&&&&&& (SELECT A.a,A.b,A.c,A.d,B.e,AB.e&&&&&&&&&&&&&&& FROM A LEFT JOIN B ON A.b = B.b) AS AB ON A.c = AB.c很容易就能看出,最终的结果将会(假设结果表名为C):C( A.a,A.b,A.c,A.d,B.e,AB.e),结果正确,所以在T-SQL里,在做多表关联时,可以不必关心不同表的同名字段的取值问题。&&&&&&& 但在DATASTAGE里就不能不关心了。由于DATASTAGE里的所有STAGE的输出,默认下是对该STAGE的输入进行复制,即表结构的复制。输入的是什么名字的字段,输出的也是这个名字的字段。那么多表关联时,如果不同的表有相同名字的字段,那么输出时也会出现有同名字段了,而数据表是不允许有同名字段的,所以就会发生同名冲突。DATASTAGE对于这中其矿,处理方式是把最先输入的字段保留下来,之后如果有同字段再添加进来时,就会把要添加进来的字段抛弃掉。这种情况,即使在JOB运行时也不会报错的,因为语法是没有错误的,不过会出现一个WARNING,告知用户这个STAGE将会出现字段知丢失。所以碰到上面上述情况,解决的方法是在第二次关联时,在输出时把这个同名字段的名字手工更改一下。如上,把字段名e改为字段名e_2,赋值也是赋e过去,这样既保留了e的值,有不会给抛弃,只是更改了一下字段的名字,到最后输出时再统一把结果表名定制一下就行。
五、对数据进行HASH分区的STAGE的设置细节。&&&&&&& 例子:&&&&&&& 在用JOIN STAGE对两张表进行关联,关联的条件是UID,再设置的该STAGE对数据按照UID进行HASH分区,所有的STAGE都设置正确无误后,运行JOB,老是在JOIN STAGE里有一个WARNING。&&&&&&& 这种情况是由于设置HASH分区后产生的(数据分区的概念将另述)&&&&&&& 解决方法:&&&&&&& 打开产生WARNING的STAGE的前一个(是前一个!)也进行了HASH分区的STAGE的设置面板,在Stage Page&&Advance Tab里,选择Preserve partitioning下拉选项中的&Clear&值。默认是&Propagate&值,其意义是下一个STAGE在做HASH分区时,会继承上一个(即该STAGE)对HASH分区的设置参数。按照HASH分区的机制,这样继承会出现数据丢失的可能,所以DS就会产生WARNING。而选择&Clear&的意义就时让下一个要做HASH分区的STAGE不要继承上一个STAGE的HASH分区设置,而重新按照用户的设置来进行HASH分去。
六、把结果输出到平面文件时的注意事项。&&&&&&& 例子:&&&&&&& 在原来调试过正确无误的JOB,把最后的数据文件由原来的DATA SET改为SEQUENCE文件时,JOB运行正常,且可以重运行,就上没有实际的数据输入到结果文件里,文件所对应的输入LINK显示有数据输入,结果文件也创建了,但打开的是一个空白文件,VIEW也VIEW不到有数据,提示说没有结果返回。&&&&&&& 原因:&&&&&&& 平面文件的默认格式设置引起。默认下,平面文件的输入格式是,每个字段都要有值输入。如果输入到平面文件的数据中有空值,而平面文件又用默认设置的话,输入就会给REJECT掉。&&&&&&& 解决方法:&&&&&&& 设置平面文件的数据格式。在Stage Page&&Format里,设置空值的处理方式,比如设为NULL,则遇到空值时,DS就会在平面文件的该字段里填充NULL。
七、DATASTAGE中INTEGER型数值上限为(20亿)。
八、对于那些关联不上而又为非空的字段,DS会自动赋默认值,数字型默认值为0,字符型默认值为''。&&&&&&& 例子:&&&&&&& 表A通过JOIN STAGE与表B进行左关联,取B表的流水ID,B表的ID字段可空性为NO,把B表的ID传递给A表,然后通过TRANSFORM STAGE设置条件取出关联不上的记录来,TRANSFORM STAGE的过滤条件是:IsNull(ID),由于关联不上的记录的ID字段会是NULL,这样设置按理应该是可以把关联不上的记录输出的,而实际上是输出不到的。&&&&&&& 原因:B表ID字段是非空的,那么传递给A表的ID的也将是非空。对于那些关联不上的记录,理论上ID字段应该为NULL,但由于ID是非空的,所以DS会把一个默认值插入到ID中去。经过如此处理,使用IsNull(ID)就当然不能数据正确记录了,因为ID根本就不是NULL。&&&&&&& 解决方法:&&&&&&& 方法一:在传递ID字段给A表时,用NullToZero或者NullToEmpty函数对ID封装起来。如果ID是数字型的,用NullToZero,如果ID是字符型的,用NullToEmpty。相应的,TRANSFORM STAGE的过滤条件就应该改为ID = 0或ID = '',即可把关联不上的记录正常输出来。&&&&&&& 方法二:直接修改TRANSFORM STAGE的过滤条件,修改为:NullToZero(ID) = 0或者NullToEmpty(ID) = ''。&&&&&&& 注意:经过DS赋予默认值后,ID其实已经不为NULL了,所以理论上使用NullToZero或NullToEmpty是不适合的。但实际开发中,上述方法确实能够解决问题。
九、可空字段拼接字符串特别需要注意的问题:在拼接字段串时,要注意所以拼接的字段当中有没有空字段,如果有,一定要用NullToZero或者NullToEmpty函数对该字段进行封装。如果不是经过函数封装处理,如果碰到某条记录,它用来拼接的字段是NULL,那么这条记录就会给过滤掉,从而影响了结果。&&&&&&& 由于拼接字符串一般都是几个到十几二十个字段,有时候容易令人忽略这个问题,常常发现本来应该可以从TRANSFORM STAGE输出的数据却给REJECT掉,就要注意是否存在可空字段拼接字符串,而且数据当中的确存在一些记录,里面用于拼接的字段是NULL的情况了。
十、使用TRANSFORM STAGE进行条件判断过滤数据,一般用于判断的字段是Nullable;使用FILTER STAGE来过滤数据,一般用于判断的字段是No-Nullable。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:209837次
积分:2486
积分:2486
排名:第14533名
原创:42篇
转载:40篇
评论:20条
(1)(1)(2)(9)(5)(13)(6)(5)(11)(30)浅析 Transformer Stage 在 DataStage 作业中的用法及功能实现 - 其它语言 - 编程入门网
浅析 Transformer Stage 在 DataStage 作业中的用法及功能实现
产品背景介绍
IBM InfoSphere DataStage 是业界主流的 ETL(Extract, Transform, Load) 工具,它使用了 Client-Server 架构,在服务器端存储所有的项目和元数据,并支持在多重数据结构中对大量数据进行收集、整合和转换。客户端 DataStage Designer 为整个 ETL 过程提供了一个图形化的开发环境,用户在 Designer 中对 DataStage Job 的进行设计和开发。DataStage 中提供了多个过程处理 Stage 来满足 ETL 的需要,然而 Transformer Stage 在这些 Stage 中用途和使用方法最为广泛,本文将对 Transformer Stage 在 ETL 过程中的用法及实现的功能做出详尽描述。本文中涉及到 IBM InfoSphere DataStage 为 IBM Information Server 8.0.1 版本。
Transformer Stage 组件介绍
Transformer Stage 在 DataStage 中是一个重要的,功能强大的组件,在 ETL 过程中,它承担&T&( 即数据的转化 ) 的责任。在 Transformer Stage 中可以指定数据的来源和目的地,匹配对应输入字段和输出字段,并指定转换规则和约束条件。
图 1. Transformer Stage 运用在 DataStage job 中的运用
图 2. Transformer Stage 列映射与字段表达式
Transformer Stage 在 DataStage job 中可实现的功能及案例分析
1. 字段转换
字段转换是 Transformer Stage 中最常见的一个功能,它能够将源数据根据一定的规格转换成为目标数据。下面将以 ETL 过程中比较常见的 Date 与 Timestamp 相互转换为例,说明字段转换的实现方式。
1.1 源数据类型为 Timestamp,目标类型为 Date
清单 1. 时间转换函数
TimestampToDate(in.ADD_DATE)
图 3. 字段转换表达式
图 4. 字段转换前后对比扩展 InfoSphere Datastage 的一种简单方法
文档概述企业环境下 , 不同的业务系统做数据整合时 ,InfoSphere Datastage 被广泛使用来制定企业级 ETL 解决方案。Infosphere Datastage 是一个功能丰富的 ETL 工具 , 客户在使用 Datastage 的时候 , 通过选择组合 Datastage 提供的几十个 stage, 可以轻松实现包括数据查找 , 数据去重 , 数据合并等多种需求。但是 , 庞大的 ETL 客户群在需求上也更为复杂 ,Datastage 提供的几十个 Stage, 在面临多样化的需求时 , 仍然不够灵活。为此 ,Datastage 提供了强大的扩展功能 , 客户可以按需快速定制自己的 stage。本文以一个样例的形式向读者介绍了如何利用 InfoSphere DataStage 开发自定义逻辑功能的 Stage, 该 Stage 可以实现身份证号码合规性验证功能。读者不仅可以根据该样例学习到如何快速开发自定义逻辑功能的 Stage, 同时读者也可直接参照文中的代码来实现身份证号码的合规性验证。样例详述在该 ETL 项目(样例)中,公司必须验证用户提供的身份证号码是否有效,但是由于 datastage 并没有提供这么详细的支持,这种有效性也不能简单通过几种 stage 得组合完成,所以开发人员将不得不采用 datastage 的高级功能,自定义 stage 帮助完成功能的实现。它不仅简单有效,而且可以帮助用户更灵活的完成 ETL 功能的拓展。下图是该项目中对于居民身份证处理的 DataStage Job。ID_Number_Validition Stage 对数据源表中的身份证字段做合规性验证,然后添加 Valid 输出字段,该字段标记该身份证号码验证的正确 / 错误,在接下来的 Filter Stage 中,根据这一标记位,将正确结果输出到 Valid_ID_Number 目标表中,将不合规字段输出到 Invalid_ID_Number 文本文件中。客户可根据该文本文件的输出,对不合规身份证的记录做进一步处理。图 1. 身份证处理的 DataStage Job对于该 Job 的逻辑,在本文中不多描述。在本文的附件中,存档了该 Job 的导出文件,读者可以直接修改使用。对于该身份证验证 Stage 的具体实现方法,在接下来的部分,将分成以下四节来依次详细介绍,
身份证验证 Stage 的实现。
身份证验证详细代码介绍。
自定义 Stage 的美化工作。
样例 DataStage Job 的执行及结果展示。身份证验证 Stage 的实现详细步骤介绍1. 创建表定义 InTableDef 定义输入,保存这个定义在用户的 custom 文件夹中。图 2. InTableDef2. 创建表定义 OutTableDef 定义输出图 3.OutTableDef3. 在 custom 文件夹中,创建一个新的 build stage,命名为 ID_Validate具体步骤为:
在 Repository 窗口,鼠标右键 Stage Type 目录。
鼠标点击弹出菜单中的 New 子菜单。
鼠标点击弹出菜单中的 Other 子菜单。
鼠标点击 Parallel Stage Type(Build) 子菜单。
输入 Stage type name, class name 和 Operator 名称。图 4. 新建 BuildOps Stage图 5. 输入 Stage Name4. 选择 Build 页,在 build-&Interfaces Input 标签栏下,定义输入,命名输入端口为 InRec, 并且指向在第一步中创建的 InTableDef,然后设置自动读取。图 6. 接口输入5. 在 build-&Interfaces Output 标签栏下,定义输出,命名输出端口 OutRec, 并且指向第二步中创建的 OutTableDef,然后设置自动写。图 7. 接口输出6. 在 transfer tab 下,定义一个自动 transfer图 8.Tansfer tab7. 在 Logic 定义标签栏下,定义你在校验过程中需要的变量名,比如 AddressNumber, 用于保存省份验证中的前两位,bResult, 是用于保存校验后,身份证号是否有效的标识位。图 9.Definitions8. 在 Per-Record 标签栏下,定义身份证验证的校验逻辑。在该标签中的这些代码是实现身份证验证功能的核心,它将确保将身份证是否合理标志字段 Valid 正确置位。图 10.Per-Record9. 点击”Generate”编译生成自定义 Stage, 如果生成失败,修复错误后,重新生成。图 11.Compile身份证验证的校验逻辑的详细代码介绍代码的设计思路首先,需要明确这个自定义 stage 的逻辑功能,也就是如何有效的完成身份证号码验证,功能分为四个方面,
身份证号码长度合理
身份证号码前两位必须是有效的省份标识
身份证号码中的日期信息必须是有效的
根据身份证号码中的最后一位验证码做校验其次,需要确保在第一节定义的几项信息正确无误。
定义输入,输出。并且为输入输出创建表定义和列信息。
所有的读写转换将被自动完成
如果输入数据集包含另外的列,比如姓名性别之类,需要自动传到输出。身份证号码的验证规则的详细说明: 首先介绍身份证号码的编排规律,身份证号码有新旧之分,旧身份证号码有 15 位,新身份证号码有 18 位,多出来的 3 位信息是:18 位的身份证表示年的信息是 4 位,而 15 位身份证为 2 位,同时 18 位的身份证还多 1 位校检码。18 位身份证号码的编排规律如下:
前 1、2 位数字表示:所在省份的代码;
第 3、4 位数字表示:所在城市的代码;
第 5、6 位数字表示:所在区县的代码;
第 7~14 位数字表示:出生年、月、日;
第 15~17 位数字是顺序码:表示在同一地址码所标识的区域范围内 , 对同年、同月、同日出生的人编定的顺序号 , 顺序码的奇数分配给男性 , 偶数分配给女性(即第 17 位是奇数代表男性,是偶数代表女性)。
第 18 位数字是校检码:用来检验身份证的正确性。校检码可以是 0~9 的数字,有时也用 x 表示。身份证号码验证的逻辑图:图 12. 身份证验证程序逻辑图身份证验证逻辑的详细代码如下: bResult =
bool b_IsLeapYear=
int Days[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
APT_String ID;
APT_String I
int iS = 0;
ID = InRec.inID;
ID.trimWhitespace();
length = ID.length();
//length verify
if(length != 15 && length != 18)
//province verify
for( i = 0; i&= 34; i++)
if (ID.substring(0,2) == addressNumber[i])
else if (i == 34)
if(bResult )
//Year,Month,Day verify
int iYear = atoi(ID.substring(6, 4).data());
int iMonth = atoi(ID.substring(10, 2).data());
int iDay = atoi(ID.substring(12, 2).data());
if(iMonth&1 || iMonth&12)
if(iYear%4 == 0)
b_IsLeapYear =
if(!(iYear%100==0 && iYear%400==0)) b_IsLeapYear=
if(b_IsLeapYear)
Days[1]=29;
Days[1]=28;
if(iDay&0 || iDay&Days[iMonth-1])
//verify check code
if(ID.length() != 17)
for(i=0;i&17;i++)
iS += (int)(ID[i]-'0') * iWeight[i];
int iY = iS%11;
if(sVerCode[iY] != ID[17])
if (bResult)
valid = "TRUE";
valid = "FALSE";出错调试过程(添加 Debug 日志信息)用户根据定制的 Stage 完成相应的 Job 后,在调试过程中,往往需要察看异常原因,如果定制的 Stage 是个严格的黑盒子,将不利于 Job 的调式,本文的身份证验证 Stage 考虑到了这个因素,帮助客户自动添加了一部分 debug 信息。在属性标签页中,添加一个属性名称“Debug”,设置为 String 类型,定义它有 3 个值,“0,1,2”,设置 0 为缺省。当“1”或者“2”被选时,Stage 应该在开始时打印 debug 提示信息开始;当“1”被选时,自定义 Stage 需要打印每一行处理的输入输出;当“2”被选时,自定义 Stage 需要打印出中间值和临时变量;最后,当“1”或者“2”被选时,Stage 需要在结束处提示 debug 信息结束。具体步骤类似于上述过程,如下 :
将自定义 Stage 复制,重命名
添加 Debug 属性
在 Pre-Loop 标签栏下,添加日志信息开始的提示
在 Per-Record 标签栏下,添加每一行处理的逻辑需求,打印出不同的 debug 级别所需要的相关信息
在 Post-Loop 标签栏下,添加日志信息结束的提示
重新生成自定义 Stage 的代码
使用新的 Stage 覆盖存在的自定义 Stage
修改现在的 Job 参数,添加 Debug
在客户的 Job 中,使用 Debug 参数,并且测试不同的 debug level自定义 Stage 的美化工作添加 Stage 图标属性
在 Creator 页面,点击 16 × 16 Bitmap 按钮选择小图标,点击 32 × 32 Bitmap 按钮选择大图标。
重新编译并点击 OK。
退出 DataStage,并重新登录,可以看到该 BuildOps 已经更新。图 13. 添加图标将 ID_Validate BuildOps 添加到 Palette鼠标右击 ID_Validate, 在弹出菜单中选择‘ Add to palette ’子菜单。在 Pallette 窗口中的 Custom 组里,ID_Validate 已经成功显示。图 14. 添加到 Palette 中该 BuildOps 和其它的 Stage 操作完全一样,支持拖拽等标准开发方式。接下来,开发人员就可以非常方便的使用 ID_Validate Stage 来创建客户需要的 job,其中需要注意的是,客户自定义 Stage 的列名称不能修改,在该样例中,身份证输入列名称 inID(string), 验证列输出名称 valid(string),因此,有时必须使用 copy stage 修改用户的输入列名和类型,使之完全匹配自定义 stage 期望的输入列。样例 DataStage Job 的执行及结果展示 :编译 ID_ValidJob 作业鼠标点击 File -& Compile, 确保编译成功。图 15. 编译运行 ID_ValidJob 作业鼠标点击 File -& Run, 运行 ID_Valid 作业图 16. 执行运行结束如果一切正常,那么在几秒之后,工作区中的连接将变为绿色,同时还会显示出它们所处理的记录数量。图 17. 运行结束以下是本次运行的数据输入和输出输入数据表输入数据表提供数据给 Source_Data Stage。
合规身份证列表输出结果作业运行结束后,Valid_ID_Number Stage 输出合规身份证列表。
Valid Status
不合规身份证列表输出结果作业运行结束后,Invalid_ID_Number Stage 输出不合规身份证列表。
Valid Status
注:以上姓名和身份证数据均为测试生成数据,身份证号码的前两位已用“XX”替代显示。信息如有雷同,纯属巧合。结束语上文介绍了如何在 InfoSphere DataStage 中开发自定义逻辑功能的 Stage,相信它可以帮助大家学会如何丰富 DataStage 的功能。在该文档的附件中,有全部的导出的 DataStage Job 和客户定义的 Stage ,读者可自行导入自己的项目以实现身份证验证的逻辑,或者查看并修改其中的代码以实现需要的新逻辑功能。
下载资源 (IDValid.zip | 12K)相关主题通过 developerWorks
学习关于 Information Management 的更多知识。在这里可以找到技术文档、how-to 文章、培训、下载、产品信息等等。通过 ,阅读文章和教程,并访问关于 IBM Information Integration 产品组合的文档、支持资源以及更多信息。随时关注 developerWorks
和 。使用可直接从 developerWorks 下载的
构建您的下一个开发项目。现在可以免费使用 DB2。下载 ,这是为社区提供的 DB2 Express Edition 的免费版本,它提供了与 DB2 Express Edition 相同的核心数据特性,为构建和部署应用程序奠定了坚实的基础。
添加或订阅评论,请先或。
有新评论时提醒我
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Information ManagementArticleID=498645ArticleTitle=扩展 InfoSphere Datastage 的一种简单方法publish-date=

我要回帖

更多关于 算法 c语言实现 的文章

 

随机推荐