DataStage BASIC 语言开发实践

合集下载

DataStage技术方案

DataStage技术方案

DataStage技术介绍目录1.绪论错误!未指定书签。

1.1先进的开发和维护错误!未指定书签。

1.2完整的开发环境错误!未指定书签。

1.3企业级实施和管理错误!未指定书签。

1.4高扩展的体系架构错误!未指定书签。

2.附录B:DataStage企业版内嵌的扩展Stage错误!未指定书签。

3.附录C:扩展连接错误!未指定书签。

1.绪论DataStage企业版是AscentialSoftware公司所有企业整合系列产品中关键产品。

企业版支持大容量数据的收集、整合和转换,数据从简单结构到很复杂的结构。

基于高可扩展性的软件架购,企业版使得企业能够通过高性能来解决大部分业务问题,并行处理大容量数据。

强大的企业元数据管理能力使得可以在数据整合生命周期中在所有工具中共享和使用工具。

DataStage企业版发布了四个核心功能来成功实施企业数据整合:先进的开发和维护;完整的开发环境;企业级实施和管理;高扩展的体系架构;端对端的企业级元数据管理。

1.1先进的开发和维护DataStage企业版提供了全面的功能去最优化用户在建立、升级和管理数据整合架构时的速度、灵活性和效率。

DataStage企业版增强的功能减少了学习的周期、简单化了管理和优化了开发资源的使用,减少了数据整合应用的开发和维护周期。

结果,DataStage企业版使得企业能够花更少的时间开发他们的整合应用,更多的时间是不断的从中受益。

DataStage企业版使用了Client-server架构,如下所示。

图一、DataState企业版Client-Server架构用户通过各个客户端工具访问DataStage企业版的开发、配置和维护功能。

这些工具包括:Designer:用来建立和编辑DataStage作业和表的定义。

Designer中的“JobSequencer”控制作业的执行,其他作业成功完成(或失败,等)的条件。

Administrator:用来执行管理任务,如建立DataStage用户、建立和删除工程并且建立清洗标准。

datastage常用组件使用方法:

datastage常用组件使用方法:

常用组件使用方法:1.Sequential file功能特点:适用于一般顺序文件(定长或不定长),可识别文本文件或IBM大机ebcdic文件。

使用要点:按照命名规范命名点住文件,双击鼠标,在general说明此文件内容,格式,存储目录等。

2.Annotation功能特点:一般用于注释,可利用其背景颜色在job中分颜色区别不同功能块3.Change Capture Stage功能特点:Change Capture Stage有两个输入,分别标记为before link 及after link。

输出的数据表示before link 和after link的区别,我们称作change set。

Change Capture Stage可以和Change Apply Stage配合使用来计算after set。

使用要点:key及value的说明:key值是比较的关键值,value是当key值相同是作进一步比较用的。

change mode选项说明:All keys,Explicit Values需要指定value,其余字段为keyExplicit Keys&Valueskey及value都需要指定Explicit Keys,All Values需要指定key,其余的字段为value输出策略说明:Drop Output For CopyFalse:保留before及afte link中key值相同的行True:删除before及afte link中key值相同的行Drop Output For DeleteFalse:保留before link中有但是after link中没有的key值所在的行True:删除before link中有但是afte link中没有的key值所在的行Drop Output For EditFalse:保留key值相同,value不同的行True:删除key值相同,value不同的行Drop Output For InsertFalse:保留before link中没有但afte link中有的key值所在的行True:删除before link中没有但afte link中有的key值所在的行4.Copy Stage功能说明:Copy Stage可以有一个输入,多个输出。

datastage使用说明

datastage使用说明

用DataStage进行数据整合DataStage 的开发环境是基于C/S 模式的,通过DataStage Client 连接到DataStage Server 上进行开发。

这里有一点需要注意,DataStage Client 只能安装在Windows 平台上面。

而DataStage Server 则支持多种平台,比如Windows、Redhat Linux、AIX、HP-UNIX。

DataStage Client 有四种客户端工具。

分别是DataStage Administrator、DataStage Designer、DataStage Manager、DataStage Director。

接下来首先介绍这几种客户端工具在DataStage 架构中所处的位置以及它们如何协同工作来开发ETL Job 的,接着再分别详细介绍每个工具的功能。

图1 描述了IBM WebSphere DataStage 的整个系统架构。

DataStage 的客户端工具连接到DataStage Server 上进行ETL Job 的开发,DataStage Server 再与后台的数据库连接起来进行数据处理。

DataStage 的客户端工具之间的是一个相互合作的关系。

下面通过介绍ETL Job的开发过程来介绍他们之间的这种关系。

ETL Job开发流程1.用DataStage Administrator 新建一个项目;2.用DataStage Designer 连接到这个新建的项目上进行ETL Job的设计;3.用DataStage Director 对设计好的ETL Job设置运行的模式,比如多长时间运行一次ETL Job;4.用DataStage Manager 进行ETL Job的备份等。

图1:IBM WebSphere DataStage 架构图DataStage AdministratorDataStage Administrator 的主要功能有以下几个:1.设置客户端和服务器连接的最大时间。

datastage学习文档

datastage学习文档

工作总结1 如何重新启动DataStage服务器, 步骤如下: (5)2 DataStage开发经验积累: (5)2.1模板开发 (5)2.2通过S ERVER S HARED C ONTAINER在P ARALLEL J OB中添加S ERVER J OB S TAGE (5)2.3去除不需要的字段 (5)2.4T RANSFORMER S TAGE的使用 (5)2.5L OOK UP/JOIN 空值处理 (6)2.6D ATA S TAGE中默认和隐式类型转换时注意的问题 (6)2.7配置一个INPUT或OUTPUT,就VIEW DATA一下,不要等到RUN时再回头找ERROR (6)2.8D ATA型数据是比较麻烦的 (6)2.9行列互换之H ORIZONTAL P IVOT(P IVOT S TAGE) (7)2.10行列互换之V ERTICAL P IVOT (7)2.11O RACLE EE S TAGE在VIEW数据时出现的错误及解决方法 (9)2.12D ATA S TAGE SAP S TAGE的使用 (10)2.13C OLUM I MPORT S TAGE的使用 (10)2.14C OLUM E XPORT S TAGE的使用 (12)2.15G OT ERROR:C ANNOT FIND ANY PROCESS NUMBER FOR STAGES IN J OB J OBNAME解决 (13)2.16U NABLE TO CREATE RT_CONFIG NNN (14)2.17查看JOB和CLIENT的对应的后台进程 (14)2.18强制杀死DS进程 (14)2.19查看S ERVER E NGINE的进程 (15)2.20查看S ERVER L OCKS (15)2.21关于UNIX系统下无法启动服务的解决办法 (16)2.22L OCKED BY OTHER USER (17)2.23DATA S TAGE J OB L OG的处理 (17)2.24一些BASIC语言中处理字符串的函数 (17)2.25BASIC程序中使用到的一些语法知识 (18)3DS中常见问题记录 (22)3.1权限管理问题 (22)3.2JOB MAY BE BEING MONITORED或者是CLEANUP问题 (22)3.3删除文件的问题 (22)3.4SEQUENCE调度出现的错误问题 (23)3.17字符集问题 (23)3.18V ERSION C ONTROL的问题 (23)3.19SEQUENCE调不起JOB的问题 (23)3.20SEQUENCE调度失败的问题 (24)3.21DS发送邮件的配置问题 (25)3.22随机错误问题 (26)3.23DS中的日期问题 (26)3.24DS连接ORACLE问题 (27)3.28从后台看JOB列表的方法 (28)3.29D ATASTAGE和数据库的连接方法 (28)3.30在DATASTAGE中使用环境变量的问题 (28)3.31IC ONV 和OC ONV (29)3.32在M ERGE中使用特殊字符 (29)4部分常用Stage 的使用说明 (29)5dsjob 语法说明: (31)6如何从DataStage服务器导出所开发的JOBS列表 (32)7查看当前服务器状态信息的方法: (36)8如何在两台机器之间进行FTP文件 (36)9如何获得Jobstatus ,步骤如下: (38)10dsjob –run 的用法 (39)11如何在后台运行和停止一个JOB (40)12DS Oracle EE Stage 配置 (42)11.1安装O RACLE客户端 (42)11.2添加O RACLE用户到DSADM GROUP组选项 (42)11.3配置D ATA S TAGE服务器DSENV文件 (42)11.4配置TNSNAMES.ORA (43)11.5重起D ATA S TAGE服务 (43)11.6配置O ACLE S TAGE抽取的S ELECT权限 (43)11.7O ACLE EE STAGE配置结束 (44)13DS ODBC 的配置 (44)12.1修改$DSHOME/DSENV (44)12.2修改$DSHOME/.ODBC.INI,来提供数据库连接信息; (44)12.3修改$DSHOME/UVODBC.CONFIG,来指定DSN(DATA SOURCE NAME). (45)14ETL系统扩展 (46)15Remote Shell (rsh)的配置 (46)14.1创建并配置.RHOSTS文件 (46)14.2修改/ETC/HOSTS.EQUIV文件 (47)16dsadmin命令的使用 (47)15.1DSADMIN命令的使用 (47)17如何启动JobMonApp (49)18.1LOGTO P ROJECT N AME --------登录一个工程 (52)18.2DS.TOOLS---------进入DS工具 (52)18.3LIST DS_JOBS--------显示所有的J OB及J OB的分类C ATEGORY (52)18.4LIST DS_JOBS WITH NAME=J OB N AME ------显示某个特定J OB的信息 (52)18.5LIST.READU EVERY-----列出所有的锁及锁的拥有用户U SER N AME (52)18.6UNLOCK USER USERNO ALL----解锁用户锁住的J OBS (52)18.7LIST.INDEX-----列出资料库的索引 (53)20Usage Analysis来进行影响分析 (53)19.1如何启动U SAGE A NALYSIS (53)19.2U SAGE A NALYSIS中S ELECT C OLUMNS的使用 (54)19.3U SAGE A NALYSIS中V IEW HTML的使用 (55)19.4U SAGE A NALYSIS中L OCATE IN M ANAGER的使用 (56)19.5U SAGE A NALYSIS可使用的S OURCE类型 (57)21DS Message Handlers (58)20.1M ESSAGE H ANDLERS的两种级别 (58)20.2M ESSAGE H ANDLERS的三种动作种类 (59)20.3M ESSAGE H ANDLERS的文件格式 (59)22DS Parallel Routine (60)21.1P ARALLEL R OUTINE注意事项 (60)21.2P ARALLEL R OUTINE创建流程 (60)21.3P ARALLEL R OUTINE示例 (61)23uvconfig文件中参数修改方法 (63)22.1修改文件UVCONFIG中的参数 (63)22.2运行UVREGEN (63)22.3重启DS服务 (63)22.4校验 (63)24&PH& (63)23.1CD \&PH\&或CD ‘&PH&’ (63)25DB2支持的数据格式 (64)26DB2中Load语法和基本使用 (65)1.01启动DataStage Server 的命令要在$DSHOME/bin 目录下进行. 启动之前要切断所有与服务器端的连接:1. 登陆DataStage 服务器,输入: $DSHOME/bin2. 关闭DataStage 服务器 ./uv –admin –stop3. 检查服务器上是否还有进程没关掉,否则服务器无法启动起来,netstat -a | grep ds4. 重起服务器 ./uv –admin –start.Note: 关闭DataStage 服务器后,建议过30 sec 再重起服务器.2DataStage开发经验积累:2.1 模板开发并行JOB中模板的开发可以最大程度的重用并行JOB的构件,节省时间1. 使用JOB参数(PARAMETER)可以在运行时提供参数的值,增加灵活性,可以在不同的环境处理不同的数据;使用JOB PARAMETER 可以在同一时间使用不同参数运行同一个JOB2. Shared Container共享容器可以在多个JOB中共享相同的逻辑,当一个JOB编译时共享容器被嵌入.2.2 通过Server Shared Container在Parallel Job中添加Server Job Stage在Designer中创建一个server shared container,添加需要的Server job stage,再把server shared container添加到parallel job并连接到其他parallel stage. 2.3 去除不需要的字段当从数据库中读取数据时,要尽可能早的去除不需要的字段,只读取需要的字段,而不是整个表,这样可以提高数据读取效率.2.4 Transformer Stage的使用1. 慎用Transformer Stage,因为它可能降低JOB的运行效率,有些功能能合并成一个单独的STAGE的不要用多个STAGE,要用其他的STAGE来代替Transformer Stage 能完成的任务.2. Transformer Stage 的数据流程是先经过constraint的过滤,然后再经过Derivation处理3. 对于确定类型的操作,使用其他STAGE 比使用TRANSFORMER 会更好:(1) 对如下情况,使用Copy Stage 将比Transformer Stage 更好﹡在界面上提供一个JOB 设计占位符﹡重新命名字段成多个输出分支.(3) 使用Modify Stage 来explicit 类型变换和Null处理﹡Modify Stage 也可重新命名字段﹡保持(keep)或删除(drop)字段﹡也可增加新字段,并为新增字段赋值,但赋值方式要以字段=字段形式,例如:new_columnname=old_columnname; 但new_columnname=”hf”这样赋值是错误的﹡Null的处理destinationColum=handle_null(sourceColum,Value)destinationColum=make_null(sourceColum,Value),这个使用中有问题,不处理空值2.5 Look up/join 空值处理1. 当使用Lookup Failure = Contunue 时,要把reference link 的非主键设置成Nullable,即使reference data 是非空的,也要设置成Nullable,这样能够确保Lookup 把空值分配给没有匹配的参考非主键2. 如果参考非主键没有设置成Nullable ,将会发生什么:Lookup 将会分配一个默认值给没有匹配的的行:Integer 默认值为0Varchar/char 默认值为空字符串(0长度的)2.6 DataStage中默认和隐式类型转换时注意的问题当从源向目标映射数据时,如果类型不一致,对于有些类型我们需要在modify或transfomer stage中通过函数进行转换,对于有些系统会自动完成类型转换,在类型转换过程中,注意以下几点:1 在变长到固定长度字符串的默认转换中,parallel jobs用空格(ASCII 20)字符来填充剩余长度(环境变量APT_STRING_PADCHAR的默认值也是空格(ASCII20),具体在哪个stage填充的不知.2 通过环境变量APT_STRING_PADCHAR可以改变默认的填充字符null(ASCII0)。

新教材DATASTAGE的介绍及基本操作.ppt

新教材DATASTAGE的介绍及基本操作.ppt
课件
Datastage测试
• 问题一:
Datastage的Designer是用来建立和编译job、用来进行数据 的抽取、转换和加载即ETL。(Yes/No) 答案一: Yes,Designer使用拖拽的方式将设计元素(习惯上叫stage) 拖拽到设计区域中,经过建立和编译,Job就可以执行,用 来进行数据的抽取、转换和加载。
安装操作员版本的Datastage,需要有Datastage 的Director的许可。
一个工程关联着一个目录,这个工程目录用来存储jobs、 Datastage项目和元数据。在做任何操作前都要先打开这个 工程,即登录这个工程。
工程是自包含的很多的工程可以在同一时间被打开,在 各自单独的环境打开。可以在它们之间导入或导出项目。
多用户可以在同一时间使用一个工程中工作,但是 Datastage禁止在同一时间由多个用户访问同一个job。
• 3,到期时间。 • 4,授权代码。
在许可信息中,这个信息必须被正确输入 的。
课件
安装向导会指导通过以下步骤进行:
• 1,输入许可信息。 • 2,指定服务器的路径。 • 3,选择程序的文件夹。 • 4,创建一个新的工程或升级已经存在的工
程。
课件
安装Datastage
课件
首先安装Datastage Server端,鼠标点击 软件会自动安装,安装过
• 在Windows系统中安装Datastage服务端。 • 建立一个Datastage的工程。 • 安装Datastage的客户端。
课件
Datastage 的服务端要首先安装,之后才 可以安装Datastage 客户端,服务端能都安 装在WinNT、Windows2000或者UNIX系统中, 这个模块将介绍在Windows环境下进行安装。

使用DataStageXMLStage转换XML

使用DataStageXMLStage转换XML

使用DataStage XML Stage 转换XML作为InfoSphere Information Server 8.5 版本的一部分,InfoSphere DataStage 通过称为XML Stage 的新层次转换功能进行了增强,其提供本机XML 架构支持以及强大的XML 转换功能。

这些功能都基于独一无二的最先进技术,该技术允许您从关系形式分析和编写任何复杂的XML 结构和将这些结构分析和编写为关系形式,以及分析和编写为不同的层次形式。

此新技术不同于其他已知的XML 工具,具有直观的分步用户界面和强大的执行能力,可以使用有限内存并行处理任何文件大小(进行了超过20GB 的测试)。

XML Stage 具有与市场上的其他工具不同的独特功能,例如控制和配置执行的验证级别的能力(范围从严格到最小程度的验证),以及并行解析单个大文件的能力。

XML Stage 不要求任何语言技能,例如XSLT 或XQuery,即便在其没有完成时也允许您即时调试并测试转换。

这些新的功能取代了以前的DataStage XML Stage:XML 输入、XML 输出以及XML 转换器。

在使用这些阶段的以前作业将继续运行时,您应该使用新的功能,因为其具有优越的生产率和性能。

XML Stage 文档提供了介绍性信息,同时还提供了简单示例,说明每个转换步骤的使用。

您应该使用该文档作为您了解工具并执行简单解析和转换的第一信息源。

本文是系列文章的第一篇,将会帮助您了解并利用IBM InfoSphere Datastage 8.5 中的新功能。

第 1 部分介绍了8.5 版中的新功能,而后演示了一些用于导入元数据、将XML 文档解析到关系数据以及从关系数据编写XML 文档并将它们插入DB2 pureXML 的几个基本方案。

方案一:将XML 架构文件导入InfoSphere Information Server将XML 架构文件导入Information Server 是创建XML 转换的先决条件。

datastage介绍(中文)讲述

datastage介绍(中文)讲述

DataStage SERVER CLIENT
DataStage Designer
DataStage Director
DataStage Manager
DataStage Administrator
DataStage的功能
r 定义project的属性; 使用Manager进行元数据管理; 使用Designer : . 定义数据抽取规则; . 定义数据流; . 进行数据整合; . 进行数据转换; . 加入相关的约束条件; . 装载数据到目标; . 进行数据聚合; 使用Designer进行作业开发和调试; 使用Director执行作业,并且进行监控;
DataStage的特点
图形化操作,简单易学; 参数化作业设计,利于数据从不同地点的同构数据库 整合到一个目标数据中; 作业调试,跟踪功能比较强; 作业运行的监控和定时,检查; 作业导出导入方便; 多数据库支持; 提供可扩展接口,可编程实现扩展功能;

datastage介绍mis项目组2004年6月pamisico什么是datastage?datastage是一个能够简单快捷进行数据仓库和数据集市创建和维护的强有力的工具
DATASTAGE介绍
mis项目组
2004年6月
什么是DATASTAGE




DataStage是一个能够简单快捷进行数据仓库和数据集市创建和 维护的强有力的工具。它为您提供了创建,管理数据仓库所必须 的工具,并且您还可以对这些工具加以扩展。借助于DataStage, 你可以快速建立数据仓库解决方案并且提供给用户所需要的数据 和报告。 使用DataStage您可以做到 : 为您的数据仓库和数据集市设计对于数据进行抽取,整合,聚集, 装载,转换的相关作业; 创建和重用原数据和作业组件; . 执行,监控和定时运行作业; 管理开发和生产环境。

DataStage V7.5 学习总结讲解学习

DataStage V7.5 学习总结讲解学习

一、DataStage简介Websphere DataStage 是一套专门对多种操作数据源的数据抽取、转换和维护过程进行简化和自动化,并将其输入数据集市或数据中心(数据仓库)目标数据库的集成工具。

DataStage能够处理多种数据源的数据,包括主机系统上的大型数据库、开放系统上的关系型数据库和普通的文件系统等。

常见的主要数据源有:大型主机系统的数据库:IMS、DB2、ADABAS、VSAM等。

开发系统的关系型数据库:Informix、Oracle、Sybase、DB2、Microsoft SQL Server等。

ERP系统:SAP/R3、PeopleSoft等。

普通文件和复杂文件系统,FTP文件系统,XML等。

IIS、Netscape、Apache等Web服务器系统。

Outlook等Email系统。

DataStage 可以从多个不同的业务系统中,从多个平台的数据源中抽取数据,完成转换和清洗,装载到各种系统里面。

其中每步都可以在图形化工具里完成,同样可以灵活的被外部系统调度,提供专门的设计工具来设计转换规则和清洗规则等,实现了增量抽取、任务调度等多种复杂而实用的功能。

其中简单的数据转换可以通过在界面上拖拉操作和调用一些 DataStage 预定义转换函数来实现,复杂转换可以通过编写脚本或结合其他语言的扩展来实现,并且 DataStage 提供调试环境,可以极大提高开发和调试抽取、转换程序的效率。

二、DataStage工作原理DataStage XEDataStage的设计是基于数据流的概念。

一个完整的数据流图(DataStage作业),从一个永久存储的数据源开始,并且执行一系列的增值转换和其他处理操作,最后加载数据到一个永久的存储。

数据集(Data Set)就是对通过数据流程的记录的收集。

一个数据集可以是屋里放置在磁盘上,也可以是虚拟放置在内存中。

数据在数据流中的Stage中移动使用的是虚拟的数据集,这样可以大大提高性能;分区(在后面介绍)是在Stage的属性中设置的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本文着重介绍了如何使用 DataStage BASIC 语言开发一个用户自定义的功能函数,并且以一个完整的 Server Job 实例为读者讲解在 Transformer Stage 中如何使用内置的和自定义的函数来转化数据。

文章的最后介绍了如何重用自定义的功能函数。

读者定位为具有一定 DataStage 使用经验的开发人员。

DataStage 概述IBM WebSphere DataStage是一个图形化的进行数据整合的开发环境,可以用来实现数据抽取,转化,净化,加载到目标数据库或者数据仓库中, 即ETL过程(Extract, Transform, Cleansing, Load)。

DataStage使用Stage实现对数据的操作。

在整个操作数据的过程中,需要创建从不同的数据源抽取数据的Stage,以及用来转化和净化数据的Stage,还需要一些Stage将数据加载到目标数据库中,一个ETL job就是一些被连线连接在一起的Stages,数据则是从一个Stage 流向下一个Stage。

关于DataStage的基本使用方法,读者可以参考发表在developWorks中国网站上的《用 IBM WebSphere DataStage 进行数据整合》系列文章。

回页首Transformer Stage 介绍在数据整合的整个过程中,很重要的一步就是对抽取数据的格式或者内容进行必要的转化。

用户可以在Transformer Stage中,对传入的数据进行任何必要的处理,再把处理好的数据传给下一个Stage。

图1就是一个正在被编辑的Transformer Stage,窗口的上半部分显示了输入与输出的字段之间的对应关系,其中DSLink13是输入的连线名称,DSLink4是输出的连线名称。

而窗口下半部分详细说明了每一个输入或者输出字段的定义。

图1.一个Transformer Stage的实例如果仅仅是把输入与输出的字段对应起来,那并不能体现出Transformer Stage 的作用。

实际上,用户可以通过编辑输出字段的derivation区域的值,对输入字段的值进行修改,使其结果可以满足输出字段的要求。

用户只需要双击某个字段的derivation区域(图1中的红色区域)就可以对其进行编辑。

这时,再点击右键即可出现一个菜单以便用户选择DataStage 内置的或者用户自定义的功能函数的分类。

当用户选择了其中的一种类型,就会弹出另一个窗口展示出DataStage中此种类型中的所有内容,如图2所示。

图2. DataStage中各种用于数据转化的功能函数用户选中某一个函数之后,再把输入字段的名称作为这个函数的输入变量,就可以完成这个编辑的任务。

图3就是编辑好的结果。

图3. 编辑后的输出字段的derivation区域此处选用的DIGITS(Arg1)函数的功能是,去除掉输入字符串中包含的数字,只返回字符串中的所有字符。

譬如DIGITS("abc123def") 的返回结果为"abcdef "。

回页首DataStage BASIC语言开发人员一般都会有过这样的经历:一个功能强大的软件往往内置了丰富的功能函数,可以满足用户大部分的需要。

但是在实际应用中,用户还是需要根据实际需求开发一些自定义的功能函数,这也就要求软件提供相应的方法使得用户能够进行二次开发和定制,从而扩展平台的功能。

DataStage不仅有很多内置的功能函数,而且提供了相应的机制,可以让用户自己开发所需功能的函数。

在DataStage中,大多数自定义的函数需要使用DataStage BASIC语言进行开发。

DataStage BASIC语言是一种可以运行在DataStage平台上,功能强大的面向过程的开发语言。

而且,这种语言对于初学者很容易入门,并能满足经验丰富的开发人员的开发需要。

值得注意的是,尽管很多编程语言在定义变量的时候就严格区分了变量的类型,但是在DataStage BASIC中情况却有所不同。

DataStage BASIC是一种弱类型(weak typing)的编程语言,一个变量在定义时不必声明其类型,而是统一被当作字符串保存起来,也不会因此而发生编译错误。

只有在程序的执行期, DataStage才根据上下文关系来确定变量的类型下面将用一个实际开发的例子,给读者介绍一下如何使用DataStage BASIC语言开发一个自定义的功能函数。

本文中如果没有特殊说明,当提到BASIC语言时,均是指DataStage BASIC语言。

本文中自定义函数的功能是这样的:这个函数有三个输入的变量OriStr, Delmt, BitValue和一个输出变量Ans。

其中OriStr的值是一个字符串,其中包含了由分隔符分隔开的若干个子串。

比如:"light_01,light_02,light_03"就是由分号分隔的三个子串组成的。

Delmt是用户指定的分隔符,其缺省值为分号,也可以是任意字符。

BitValue的值是一个非负的整数。

Ans的值也是一个字符串。

整个函数的流程是这样的,首先对输入变量OriStr和BitValue进行验证。

如果它们的值不满足要求,则离开函数;如果满足要求,就把 BitValue转化为二进制的数。

这个二进制的数的每一位分别对应于OriStr中的每个子串。

当子串所对应的数值为"1"时,这个子串就被添加到输出字符串中。

反之,那些对应的数值为"0"的子串就不会出现在输入字符串中。

那些被选出来的子串由逗号分隔,组成了输出字符串。

举例来说,当OriStr ="light_01,light_02,light_03",BitValue = 6的时候,把BitValue转化为二进制的数"110",把这个二进制数的每一位和每个子串的一一对应起来,如下表所示。

前两个子串"light_01"和"light_02"所对应的值都是"1",所以被添加到输出字符串中;而第三个子串"light_03"对应的值为"0",就不会被添加到输出字符串中。

因此,这个例子的结果就是"light_01,light_02"。

具体的开发步骤如下:1. 打开DataStage Designer或者DataStage Manager,在左边的Repository View(图4)中用户可以看到保存在DataStage Server中所有资源。

图4. Repository View2. 选中Routines,然后点击右键选择New Category。

在弹出的窗口中填写Customized,之后点击确定。

这样就创建了一个新的分类,后面新建的routine 就保存在这个分类之中。

3. 再次选中Routines,然后点击右键选择New Server Routine。

在Server Routine的编辑窗口中,在Routine Name一栏中填写自定义函数的名字,在Type 下拉框中选择Transform Function,在Category一项中选择刚创建的Customized。

Short Description和Long Description分别是函数功能的简单和具体描述,内容可以介绍每个输入变量的含义,也可以使用具体的例子为用户展示函数功能。

图5就是内容填写完成的General标签页面。

图5. New Server Routine编辑窗口中General标签页面4.在Creator标签页填写作者和公司名称等版权信息,如图6所示。

图6. New Server Routine编辑窗口中Creator标签页面5. 在Arguments标签页中定义这个函数的输入变量的名称,以及对每个变量的描述,如图7所示。

图7. New Server Routine编辑窗口中Arguments标签页面6.Code标签页,就是真正编写这个函数的BASIC代码的地方。

图8. New Server Routine编辑窗口中Code标签页面该函数的完整代码可以在参考资料中找到,下载后读者可以使用各种常用的文本编辑器打开阅读。

由于篇幅有限,下面针对这段BASIC程序中使用到的一些语法做一下解释说明。

本文中使用到的是BASIC语言中最基本最经常使用的语法知识,更多的语法和函数功能介绍请阅读参考资料。

(1). BASIC语言有四种符号用来标记注释,分别是REM,*,! ,$*。

例如,*Initial. Validate the input parameters.这一行以"*"星号开头,就表示这一行内容是程序的注释。

(2). 条件判断语句,其语法结构如下:If conditionThen statementsEnd[Else statementsEnd]其中condition可以是一个数字,也可以是一个比较关系式。

当条件为真时,程序执行Then后面的表达式;当条件为假时,则会执行Else后面的表达式。

在Basic语言中,逻辑关系运算符是这样的:∙AND (或者符号 &),表示逻辑与的关系。

∙OR (或者 !),表示逻辑或的关系。

∙NOT,表示逻辑非的关系。

例如:If bitCount > arrCnt ThenAns="error bitValue: " : bitCount :".Its value is too large."Call DSLogWarn(Ans,"TransBitMask")GoTo ExitFuncEnd由BitValue转化而来的二进制数的位数大于子串的个数时,就在日志信息中告诉用户BitValue的值和OriStr的值是不可能一一对应的,输入的数据有错误。

If BitValue >= 0 AND Count(BitValue, ".")=0 Thenmask=Oconv(BitValue, "MB")End ElseAns="error bitValue:" : BitValueCall DSLogWarn(Ans,"TransBitMask")GoTo ExitFuncEnd当输入变量BitValue的值大于零且不是小数的时候,就把它转化为二进制的数;否则为用户提出警告信息并且离开这个函数。

(3). 使用BASIC自带的一些功能函数。

相关文档
最新文档