自定义datastage阶段
来源:互联网 发布:阿里云服务器域名 编辑:程序博客网 时间:2024/05/20 20:02
新建两个表定义,用于阶段的输入(InTableDef)输出(OutTableDef)。
(1).InTableDef的定义如下(输入字段为:inID):
(2).OutTableDef的定义如下(输出字段为vaild):
创建一个新的buildstage
编辑阶段常规属性(命名阶段的名称为ID_VER):
编辑阶段构建->接口->输入属性(表名为:选择我们刚刚新建的表定义)
编辑阶段构建->接口->输出属性(表名为:选择我们刚刚新建的表定义)
编辑阶段构建->接口->传输属性
编辑阶段构建->逻辑->定义属性(也可以在 每条记录 里面直接定义)
编辑阶段构建->逻辑->每条记录属性(在这里编写功能代码,这里是身份证有效性的验证代码,来源IBM官网)
源代码:来源IBM官网
APT_StringaddressNumber[] ={"11","22","35","44","53","12","23","36","45","54","13","31","37","46","61","14","32","41","50","62","15","33","42","51","63","21","34","43","52","64","65","71","81","82","91"};
intiWeight[]={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
staticchar sVerCode[]="10X98765432";
boolbResult;
bResult=true;
boolb_IsLeapYear=false;
int Days[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
inti,length;
intiYear;
intiMonth;
intiDay;
APT_StringID;
APT_StringIdtemp;
intiS = 0;
intiY;
ID= InRec.inID;
ID.trimWhitespace();
length= ID.length();
//lengthverify
if(length!= 15 && length != 18)
{
bResult= false;
}
else
{
//provinceverify
for(i = 0; i<= 34; i++)
{
if(ID.substring(0,2) == addressNumber[i])
break;
elseif (i == 34)
{
bResult= false;
}
}
if(bResult)
{
//Year,Month,Dayverify
intiYear = atoi(ID.substring(6, 4).data());
intiMonth = atoi(ID.substring(10, 2).data());
intiDay = atoi(ID.substring(12, 2).data());
if(iMonth<1|| iMonth>12)
{
bResult= false;
}
else
{
if(iYear%4== 0)
{
b_IsLeapYear= true;
if(!(iYear%100==0 && iYear%400==0)) b_IsLeapYear=false;
}
if(b_IsLeapYear)
Days[1]=29;
else
Days[1]=28;
if(iDay<0 || iDay>Days[iMonth-1])
{
bResult= false;
}
else
{
//verifycheck code
if(ID.length()!= 17)
{
for(i=0;i<17;i++)
{
iS+= (int)(ID[i]-'0') * iWeight[i];
}
intiY = iS%11;
if(sVerCode[iY]!= ID[17])
{
bResult = false;
}
}
}
}
}
}
if(bResult)
vaild= "TRUE";
else
vaild= "FALSE";
编写完成后,点击下方的生成后,会弹出日志反馈是否成功,不成功继续调试。
实例验证stage的正确性:
输出结果:
源表:511**为正确的身份证
2.文件,记录了错误的身份证号的那条记录
目标表,结果是和源表一样的:
注意事项:1.自定义的stageID_VER的输入为inID,所以DSLink1的输出字段必须定义为inID
2.filter的属性编辑:
3.OutputLink的确定是在“链接排序”里边。
- 自定义datastage阶段
- datastage
- datastage server job之在routine中调用自定义routine
- 【DataStage】DataStage Basic
- DataStage 简介
- Datastage教程
- DataStage总结
- DataStage Compiler
- DataStage 简介
- DataStage 教程
- datastage RTI
- Datastage常用命令
- datastage 笔记
- DataStage简介
- DataStage Join
- Datastage教程
- DataStage 简介
- datastage 是什么
- 杭电5532 Almost Sorted Array
- Leetcode187: H-Index
- dubbo.xsd文件 找不到解决方法
- android中正确保存view的状态
- c# 账号密码加密, 写入读取ini文件
- 自定义datastage阶段
- Collections
- 10001---Node.js 简介&安装
- 【Shell】read用法
- 再捡起linux
- http状态吗
- 面试时如何做自我介绍
- 字符串学习
- Android_第三方登录使用详解