DATASTAGE实用指南
- 格式:doc
- 大小:115.00 KB
- 文档页数:16
目录1 如何重新启动DataStage服务器, 步骤如下: (4)2 DataStage开发经验积累: (4)2.1模板开发 (4)2.2通过S ERVER S HARED C ONTAINER在P ARALLEL J OB中添加S ERVER J OB S TAGE (4)2.3去除不需要的字段 (4)2.4T RANSFORMER S TAGE的使用 (4)2.5L OOK UP/JOIN 空值处理 (5)2.6D ATA S TAGE中默认和隐式类型转换时注意的问题 (5)2.7配置一个INPUT或OUTPUT,就VIEW DATA一下,不要等到RUN时再回头找ERROR (5)2.8D ATA型数据是比较麻烦的 (5)2.9行列互换之H ORIZONTAL P IVOT(P IVOT S TAGE) (6)2.10行列互换之V ERTICAL P IVOT (6)2.11O RACLE EE S TAGE在VIEW数据时出现的错误及解决方法 (8)2.12D ATA S TAGE SAP S TAGE的使用 (9)2.13C OLUM I MPORT S TAGE的使用 (9)2.14C OLUM E XPORT S TAGE的使用 (11)2.15G OT ERROR:C ANNOT FIND ANY PROCESS NUMBER FOR STAGES IN J OB J OBNAME解决 (12)2.16U NABLE TO CREATE RT_CONFIG NNN (13)2.17查看JOB和CLIENT的对应的后台进程 (13)2.18强制杀死DS进程 (13)2.19查看S ERVER E NGINE的进程 (14)2.20查看S ERVER L OCKS (14)2.21关于UNIX系统下无法启动服务的解决办法 (15)2.22L OCKED BY OTHER USER (16)2.23DATA S TAGE J OB L OG的处理 (16)2.24一些BASIC语言中处理字符串的函数 (16)2.25BASIC程序中使用到的一些语法知识 (17)3DS中常见问题记录 (21)3.1权限管理问题 (21)3.2JOB MAY BE BEING MONITORED或者是CLEANUP问题 (21)3.3删除文件的问题 (21)3.4SEQUENCE调度出现的错误问题 (22)3.17字符集问题 (22)3.18V ERSION C ONTROL的问题 (22)3.19SEQUENCE调不起JOB的问题 (22)3.20SEQUENCE调度失败的问题 (23)3.21DS发送邮件的配置问题 (24)3.22随机错误问题 (25)3.23DS中的日期问题 (25)3.24DS连接ORACLE问题 (26)3.25在S EQUENCE F ILE S TAGE中的空值处理问题 (26)3.26在DS中使用O RACLE E NTERPRISE S TAGE必须的权限 (26)3.27DS中去除‘回车符’的问题以及从CHAR类型转变成整型的方法 (26)3.28从后台看JOB列表的方法 (27)3.29D ATASTAGE和数据库的连接方法 (27)3.30在DATASTAGE中使用环境变量的问题 (27)3.31IC ONV 和OC ONV (28)3.32在M ERGE中使用特殊字符 (28)4部分常用Stage 的使用说明 (28)5dsjob 语法说明: (30)6如何从DataStage服务器导出所开发的JOBS列表 (31)7查看当前服务器状态信息的方法: (35)8如何在两台机器之间进行FTP文件 (35)9如何获得Jobstatus ,步骤如下: (37)10dsjob –run 的用法 (38)11如何在后台运行和停止一个JOB (39)12DS Oracle EE Stage 配置 (41)11.1安装O RACLE客户端 (41)11.2添加O RACLE用户到DSADM GROUP组选项 (41)11.3配置D ATA S TAGE服务器DSENV文件 (41)11.4配置TNSNAMES.ORA (42)11.5重起D ATA S TAGE服务 (42)11.6配置O ACLE S TAGE抽取的S ELECT权限 (42)11.7O ACLE EE STAGE配置结束 (43)13DS ODBC 的配置 (43)12.1修改$DSHOME/DSENV (43)12.2修改$DSHOME/.ODBC.INI,来提供数据库连接信息; (43)12.3修改$DSHOME/UVODBC.CONFIG,来指定DSN(DATA SOURCE NAME). (44)14ETL系统扩展 (45)15Remote Shell (rsh)的配置 (45)14.1创建并配置.RHOSTS文件 (45)14.2修改/ETC/HOSTS.EQUIV文件 (46)16dsadmin命令的使用 (46)15.1DSADMIN命令的使用 (46)17如何启动JobMonApp (48)18DS.TOOLS (48)19uvsh常用命令 (51)18.1LOGTO P ROJECT N AME --------登录一个工程 (51)18.2DS.TOOLS---------进入DS工具 (51)18.3LIST DS_JOBS--------显示所有的J OB及J OB的分类C ATEGORY (51)18.4LIST DS_JOBS WITH NAME=J OB N AME ------显示某个特定J OB的信息 (51)18.5LIST.READU EVERY-----列出所有的锁及锁的拥有用户U SER N AME (51)18.6UNLOCK USER USERNO ALL----解锁用户锁住的J OBS (51)18.7LIST.INDEX-----列出资料库的索引 (52)20Usage Analysis来进行影响分析 (52)19.1如何启动U SAGE A NALYSIS (52)19.2U SAGE A NALYSIS中S ELECT C OLUMNS的使用 (53)19.3U SAGE A NALYSIS中V IEW HTML的使用 (54)19.4U SAGE A NALYSIS中L OCATE IN M ANAGER的使用 (55)19.5U SAGE A NALYSIS可使用的S OURCE类型 (56)21DS Message Handlers (57)20.1M ESSAGE H ANDLERS的两种级别 (57)20.2M ESSAGE H ANDLERS的三种动作种类 (58)20.3M ESSAGE H ANDLERS的文件格式 (58)22DS Parallel Routine (59)21.1P ARALLEL R OUTINE注意事项 (59)21.2P ARALLEL R OUTINE创建流程 (59)21.3P ARALLEL R OUTINE示例 (60)23uvconfig文件中参数修改方法 (62)22.1修改文件UVCONFIG中的参数 (62)22.2运行UVREGEN (62)22.3重启DS服务 (62)22.4校验 (62)24&PH& (62)23.1CD \&PH\&或CD ‘&PH&’ (62)25DB2支持的数据格式 (63)26DB2中Load语法和基本使用 (64)1如何重新启动DataStage服务器, 步骤如下: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 设计占位符﹡重新命名字段﹡删除字段﹡Implicit类型变换(2) 使用Filter Stage 或者Switch Stage 来把输入记录按照限制表式分成多个输出分支.(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)。
3.ETL环境部署3.1 安装DataStage3.1.1 Server安装3.1.1.1 创建用户及组AIX运行smit命令,启动管理界面在安装机器上创建dstage组, ADMINISTRATIVE USER 选项为true,创建用户dsadm,主属为dstage ,ADMINISTRATIVE USER 选项为true;Primary GROUP,Group SET,ADMINISTRATIVE GROUPS:均为dstageHP Unix运行sam命令,启动管理界面在安装机器上创建dstage组创建用户dsadm,主属为dstage组3.1.1.3 系统参数设置1)检查Server端paging space的空间,对于CPU数量少于20个的机器,最好整个Paging Space为500M×CPU数,如机器配置了8个CPU,则推荐至少需要配置4GB的Paging Space空间。
2)检查核心参数,不符合要求则针对操作系统进行如下调整(AIX使用smit,HPUnix使用sam):3)运行lsattr -E -l sys0 | grep maxuproc,检查参数Maximum number of PROCESSESallowed per user,设置Datastage允许运行的最大进程数,推荐设置到较大的值,如:8192。
4)运行lsuser –f dsadm,检查如下参数:fsize,data,stack,rss。
推荐将这些参数设置为unlimit3.1.1.4 Server安装步骤确保以超级用户root进入系统(非常重要)如果是硬盘包,则执行命令:gunzip 2105-ds-75a-aix.tar.Z进入解压目录Tar xvf 2105-ds-75a-aix.tar进入/解压环境/Ascential.media/aix目录如果是光盘包,则执行命令:Mount /cdrom进入/cdrom目录1)AIX操作系统执行/Ascential.media/install.sh –admin dsadm.2);HP Unix执行./INSTALL.SH\;1。
Datastage8.5安装⼿册with_Oracle_repository ⽬录1.概述 (1)1.1⽬的 (1)1.2适⽤范围 (1)2.安装环境 (1)2.1软件环境 (1)2.2硬件环境 (1)2.3安装软硬件需求 (2)2.3.1操作系统 (2)2.3.2操作系统内核参数 (2)2.3.3依赖动态链接库 (2)2.3.4内存 (3)2.3.5硬盘 (3)2.3.6知识库 (3)3.安装步骤 (3)3.1创建知识库 (3)3.1.1获取知识库创建脚本 (4)3.1.2获取知识库创建脚本 (4)3.2C++编译器安装 (4)3.3D A TASTAGE S ERVER安装 (4)3.3.1介质上传及解压 (4)3.3.2启动安装程序 (4)3.3.3使⽤浏览器登陆安装界⾯ (5)3.3.4安装前浏览信息 (5)3.3.5软件许可协议 (6)3.3.6防⽕墙检查 (7)3.3.7早期安装需求检查 (8)3.3.8指定Information Server安装⽬录 (9)3.3.10选择安装软件 (11)3.3.11选择要安装的产品 (12)3.3.12选择要安装的版本 (15)3.3.13集群配置 (15)3.3.14安装Websphere Application Server (17)3.3.15指定Websphere Application Server⽬录 (17)3.3.16为Websphere Application Server分配监听端⼝ (18) 3.3.17Websphere Application Server管理员配置 (19) 3.3.18Infomation Server管理员配置 (21)3.3.19Datastage知识库选择 (21)3.3.20配置Datastage知识库连接 (22)3.3.21Infomation Server代理端⼝配置 (23)3.3.22配置Datastage管理员 (25)3.3.23Infomation Server作业监听端⼝配置 (27)3.3.24Infomation Server多实例设置 (28)3.3.25DS全球化⽀持 (29)3.3.26MQ插件选择 (30)3.3.27SAS组件配置 (31)3.3.28安装过程是否创建⼯程 (32)3.3.29Information Analyzer分析数据库连接配置 (33)3.3.30软件安装软硬件需求检测 (34)3.3.31安装过程相应⽂件 (34)3.3.32安装前摘要 (36)3.3.33开始安装 (36)3.3.34安装完成 (38)3.4D A TASTAGE C LIENT安装 (38)4.DATASTAGE配置 (38)4.1D A TASTAGE S ERVER配置 (38)4.1.2DS系统环境设置 (43)4.2D A TASTAGE C LIENT配置 (43)5.卸载 (44)6.数据库连接访问配置 (45)6.1O RACLE连接配置 (45)6.1.1Oracle客户端安装 (45)6.1.2Datastage⽤户组设置 (47)6.1.3Datastage⽤户环境配置 (47)6.1.4重启服务使得配置⽣效 (47)6.1.5Oracle⽤户权限设置 (49)7.ODBC配置 (50)7.1DSENV配置 (51)7.2ODBC.INI配置 (51)7.3修改UVODBC.CONFIG (52)8.安装验证 (53)8.1基本作业验证 (53)8.2编译器是否正常 (55)8.3O RACLE CONNECTOR验证 (57)9.注意事项 (57)1.概述1.1⽬的本⽂档旨在描述Datastage8.5在Redhat EE 64bit Server5.9安装执⾏步骤,以及注意事项。
DataStage常⽤函数⼤全DataStage常⽤函数⼤全DATASTAGE常⽤函数⼤全 (1)⼀、类型转换函数 (4)1.Char (4)2.DateToString (4)3.DateToDecimal (4)4.DecimalToDate (5)5.DecimalToDecimal (6)6.DecimalToDFloat (6)7.DecimalToString (7)8.DecimalToTime (8)9.DecimalToTimestamp (8)10.DFloatToDecimal (9)11.DfloatToStringNoExp (10)12.IsValidDate (10)13.IsValidTime (11)14.IsValidTimestamp (11)15.RawNumAt (11)16.RawToString (12)17.Seq (12)18.SeqAt (12)19.StringToDate (12)20.StringToDecimal (13)21.StringToRaw (13)22.StringToTime (13)23.StringToTimestamp (14)24.StringToUstring (14)25.TimestampToDate (14)26.TimestampToDecimal (14)27.TimestampToString (15)28.TimestampToTime (16)29.TimeToString (16)30.TimeToDecimal (16)/doc/5f04fb6b10661ed9ad51f38d.html tringToString (17)⼆、字符串函数 (17)32.AlNum (17)33.Alpha (17)/doc/5f04fb6b10661ed9ad51f38d.html pare (18)/doc/5f04fb6b10661ed9ad51f38d.html pareNoCase (18) /doc/5f04fb6b10661ed9ad51f38d.html pareNum (18)/doc/5f04fb6b10661ed9ad51f38d.html pareNumNoCase (19)39.Convert (19)40.Count (19)41.Dcount (19)42.DownCase (20)43.DQuote (20)44.Field (20)45.Index (20)46.Left (21)47.Len (21)48.Num (21)49.PadString (21)50.Right (21)51.Soundex (22)52.Space (22)53.SQuote (22)54.Str (22)55.StripWhiteSpace (23)56.Trim (23)57.TrimB (24)58.TrimF (24)59.TrimLeadingTrailing (24)60.UpCase (24)三、数字函数 (25)61.AsDouble (25)62.AsFloat (25)63.AsInteger (25)64.MantissaFromDecimal (26)65.MantissaFromDFloat (26)四、⽇期和时间函数 (26)66.CurrentDate (26)67.CurrentTime (27)68.CurrentTimeMS (27)69.CurrentTimestamp (27)70.CurrentTimestampMS (27)71.DateFromDaysSince (27)72.DateFromComponents (28)73.DateFromJulianDay (28)74.DateOffsetByComponents (28)76.DaysInMonth (29)77.DaysInYear (29)78.DateOffsetByDays (30)79.HoursFromTime (30)80.JulianDayFromDate (30)81.MicroSecondsFromTime (30)82.MidnightSecondsFromTime (31)83.MinutesFromTime (31)84.MonthDayFromDate (31)85.MonthFromDate (31)86.NextWeekdayFromDate (32)87.NthWeekdayFromDate (32)88.PreviousWeekdayFromDate (32)89.SecondsFromTime (32)90.SecondsSinceFromTimestamp (33)91.TimeDate (33)92.TimeFromComponents (33)93.TimeFromMidnightSeconds (33)94.TimeOffsetByComponents (34)95.TimeOffsetBySeconds (34)96.TimestampFromDateTime (34)97.TimestampFromSecondsSince (34)98.TimestampFromTimet (35)99.TimestampOffsetByComponents (35) 100.TimestampOffsetBySeconds (35)101.TimetFromTimestamp (36)102.WeekdayFromDate (36)103.YeardayFromDate (36)104.YearFromDate (36)105.YearweekFromDate (37)五、Null处理函数 (37)106.IsNotNull (37)107.IsNull (37)108.NullToEmpty (38)109.NullToZero (38)110.NullToValue (38)111.SetNull (38)⼀、类型转换函数类型转换函数⽤于更改参数的类型。
南海农信社ODS 南海ODS项目DataStage技术文档文档信息批复信息文件控制目录1.引言 (1)1.1编写目的 (1)1.2背景 (1)1.3参考资料 (1)1.4术语定义及说明 (1)2.Data Stage概述 (1)1.5Asciential 企业版数据集成平台架构 (2)1.6DS7.5.2企业版CS结构 (2)3.DataStage各部件介绍 (3)1.7Administrator (3)1.7.1总体说明 (3)1.7.2主要功能 (3)1.7.3功能详解 (3)1.7.4经验总结 (6)1.8Manager (8)1.8.1总体说明 (8)1.8.2主要功能 (9)1.8.3功能详解 (9)1.8.4经验总结 (10)1.9Designer (11)1.9.1总体说明 (11)1.9.2概念解释 (11)1.9.3主要功能 (11)1.9.4功能详解 (11)1.9.5例子 (11)1.9.6经验总结 (13)1.10Director (13)1.10.1总体说明 (13)1.10.2主要功能 (13)1.10.3功能详解 (14)1.10.4经验总结 (16)4.Datastage基础 (16)1.11数据类型 (16)1.12变量 (17)1.12.1总体说明 (17)1.12.2例子 (17)1.12.3经验总结 (19)1.13字符集编码 (19)1.14Job的类型 (20)1.15Stage 类型 (21)1.16Routine (49)1.16.1Server Routine (49)1.16.2Parrallel Routine (51)5.DataStage企业版的核心技术 (53)1.17扩展性和底层 (53)1.18数据处理方式 (53)1.18.1传统的批处理 (53)1.18.2管道多处理 (54)1.18.3数据分区 (54)1.18.4管道多处理和数据分区结合 (54)1.19数据分区详解 (55)1.19.1数据分区和数据聚合关系 (55)1.19.2数据重分区 (55)1.19.3数据分区方法 (56)1.20服务器的参数配置 (56)1.20.1物理架构 (56)1.20.2配置文件 (57)1.20.3经验总结 (58)1.21缓存机制 (58)6.性能调优 (59)1.22总体说明 (59)1.23调试的方法 (59)1.24经验总结 (60)1.24.1Transformer Stage使用说明 (60)1.24.2文件读写 (60)1.24.3磁盘I/O (60)1.24.4内存限制 (60)1.24.5并行度 (60)1.24.6并行调度测试 (61)1.24.7数据排序 (61)1.24.8表结构的简化 (61)1.24.9VARCHAR的定义 (61)1.24.10类型的转换 (61)1.24.11环境变量的设置 (62)1.24.12NULL值的处理 (62)7.作业调度 (62)1.24.13Sequence job调度 (62)1.24.14Job control调度 (64)8.问题集合 (65)1.25输出字段变多了 (65)1.26加载数据时,索引出错 (65)1.27数据加载到Oracle出错 (65)1.28文本数据导入出错 (65)1.29不可见字符导致出错 (65)1.30日期转换出错 (65)1.31全角空格引起的问题 (66)1.32字段中混合中英文字符“、[]”等,不能写入数据库 (66)1.33NULL值导入出错 (66)1.34使用封装Stage出错 (66)1. 引言1.1编写目的为DataStage开发者提供一个全面的技术资料学习和参考,对于初学者,提供了一些基础的知识,对于有一定经验的技术人员,也可以在本文档中找到一些高级的技术参考,更多情况下是给出大体的指引或思路,更多的技术细节资料还需要进行一步查阅官方文档。
目录1 如何重新启动DataStage服务器,步骤如下: (4)2 DataStage开发经验积累: (4)2.1模板开发 (4)2.2通过S ERVER S HARED C ONTAINER在P ARALLEL J OB中添加S ERVER J OB S TAGE (4)2。
3去除不需要的字段 (4)2.4T RANSFORMER S TAGE的使用 (4)2。
5L OOK UP/JOIN 空值处理 (5)2.6D ATA S TAGE中默认和隐式类型转换时注意的问题 (5)2.7配置一个INPUT或OUTPUT,就VIEW DATA一下,不要等到RUN时再回头找ERROR (5)2.8D ATA型数据是比较麻烦的 (5)2.9行列互换之H ORIZONTAL P IVOT(P IVOT S TAGE) (6)2。
10行列互换之V ERTICAL P IVOT (6)2.11O RACLE EE S TAGE在VIEW数据时出现的错误及解决方法 (8)2。
12D ATA S TAGE SAP S TAGE的使用 (9)2。
13C OLUM I MPORT S TAGE的使用 (9)2.14C OLUM E XPORT S TAGE的使用 (11)2。
15G OT ERROR:C ANNOT FIND ANY PROCESS NUMBER FOR STAGES IN J OB J OBNAME解决 (12)2。
16U NABLE TO CREATE RT_CONFIG NNN (13)2。
17查看JOB和CLIENT的对应的后台进程 (13)2。
18强制杀死DS进程 (13)2。
19查看S ERVER E NGINE的进程 (14)2.20查看S ERVER L OCKS (14)2.21关于UNIX系统下无法启动服务的解决办法 (15)2.22L OCKED BY OTHER USER (16)2.23DATA S TAGE J OB L OG的处理 (16)2。
一、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的属性中设置的。
DataStage自定义函数说明DataStage自定义函数说明文档信息1.1 自定义函数概述自定义函数是针对Transformer这个Stage中使用,用法其他Transformer中的函数类似,不过自定义函数是在选择DS Routine这个菜单中的TrxFuncExampe文件,而Transformer的JDK函数选择的Function这个菜单。
如下图:1.2 char *OdsDateToDb2(%dateStr%)函数:功能说明将yyyymmdd格式输入的日期转换成yyyy-mm-dd日期●输入格式yyyymmdd格式,类型为char*类型●输出格式yyyy-mm-dd格式,类型为char*类型●例:DateFormat(“20070705”),获得输出为:2007-07-051.3 Char *OdsTimestampToDb2(%OdsTimestamp%)●功能说明将yyyymmddhhnnssnnn格式输入的日期转换成yyyy-mm-dd-hh.nn.ss.000000格式的日期●输入格式yyyymmddhhnnssnnn格式,类型为char*类型●输出格式yyyy-mm-dd-hh.nn.ss.000000格式,类型为char*类型●例:OdsTimestampT oDb2("20070704202725066"),获得输出为:2007-07-04-20.27.25.0000001.4 Int IsDeleteDate(%dateStr%)●功能说明判断yyyy-mm-dd格式输入日期到当前日期否则在7天以内,包括7天●输入格式yyyy-mm-dd格式,类型为char*类型●输出1-正确,表示为7天以内;0-错误,表示为7天以外。
类型为int 类型●例:OdsTimestampT oDb2("20070704202725066"),获得输出为:2007-07-04-20.27.25.000000。
DataStage 的基本逻辑处理单位是Job,每个Job由许多stage组成;由Stage 来完成;由Stage 来完成对数据的抽取,转换,加载等;Sequential File Stage: 适用于一般顺序文件,可识别文本文件。
Annotation : 功能特点一般用于注释,可利用其背景颜色在job中分颜色区分不同功能模块。
Change Capture Stage功能特点:Change Capture Stage 有两个输入Copy Stage: 功能说明: Copy Stage 可以有一个输入,多个输出。
它可以再输出是改变字段的顺序,但是不能改变字段类型。
当只有一个输入及一个输出时最好将Force 设置为True,这样可以在Designer里看到运行结束,否则将无法标识运行结束,但不会影响运行结果数据。
Filter Stage: 只有一个输入,可以有多个输出。
根据不同的筛选条件,可以将数据输出到不同的output link。
Funnel Stage : 将多个字段相同的数据文件合并为一个单独的文件输出合并策略说明Continuous Funnel : 从每一个input link中循环取一条记录Sort Funnel :按照Key 值排序合并输出Sequence : 先第一个input link 的输出数据,输出完毕后再输出第二个input link 的数据,以此类推,直到结束Tansformer Stage: 一个功能强大的Stage 。
有一个input link,多个output link ,可以将字段进行转换,也可以通过条件来指定数据输出到哪个output link。
在开发过程中可以通过拖拽。
Constraint 及Derivation 的区别Constraint 通过限定条件使符合条件的数据输出到这个output linkDerivation 通过定义表达式来转换字段值。
在Constraint 及Derivation中可以使用Job parameter 及Stage Variable。
DATESTAGE 使用实用指南 DS的竞争对手: Informatica的PowerCenter Group 1的Stagent Data Flow BO的DI ASCL的Data Stage
1.DataStage官方文档学习笔记
1.1通过右键添加link 鼠标右键点击起始stage,按住右键移动鼠标到目标stage。还有一种方法就是把鼠标放在起始stage的边缘等到变为一个小圆圈里面有一个叉的时候拖动鼠标到目标stage。
1.2DataStage中默认和隐式类型转换时注意的问题 当从源向目标映射数据时,如果类型不一致,对于有些类型我们需要在modify或transfomer stage中通过函数进行转换,对于有些系统会自动完成类型转换,在类型转换过程中,注意以下几点: 1 在变长到固定长度字符串的默认转换中,parallel jobs用null(ASCII 0)字符来填充剩余长度。联系到前面做的一个parallel job,当目标是变长时(当时源也是变长,但是好像源的精度要小些),但是字符串实际的长度没有指定的变长那么长的话,系统会自动用空格(ASCII 20)来填充(具体在哪个stage填充的不知),而且环境变量APT_STRING_PADCHAR的默认值也是空格(ASCII 20)。 2 通过环境变量APT_STRING_PADCHAR可以改变默认的填充字符null(ASCII 0)。 注:联系上面两点,感觉文档讲的与实际不符,难道我们项目的administrator改变了该环境变量的默认值? 3 有个PadString 函数可以用来用指定的字符来填充一个变长的字符串到指定的长度。这个函数的参数不能使固定长度字符串,如果是固定长度的先转化为变长。
1.3Copy Stage作为占位符 在job开发中,当你暂时不知道该使用哪个stage时,可以使用copy stage作为占位符,注意不要把Force属性设为True,在不把Force设为True时,复制将在运行时进行优化。
使用Schema file来指定meta data 1 可以通过列定义和schema file两种方式来指定meta data,值得注意的一点是Note that, if you use a schema file, you should ensure that runtime column propagation is turned on. Otherwise the column definitions specified in the stage editor will always override any schema file.即,如果想通过schema file来指定meta data,必须勾上runtime column propagation,否则总是使用列定义来作为meta data。 2 If you are using a schema file on an NLS system, the schema file needs to be in UTF-8 format.如果你的datastage使用了NLS system,那么schema file必须是UTF-8格式的。文档中说可以使用Sequential stage来完成转码。
通过Server Shared Container在Parallel Job中添加Server Job Stage You create a new shared container in the DataStage Designer, add Server job stages as required, and then add the Server Shared Container to your Parallel job and connect it to the Parallel stages.在Designer中创建一个server shared container,添加需要的Server job stage,再把server shared container添加到parallel job并连接到其他parallel stage。
几个环境变量的具体路径 %SERVERENGINE% – DataStage engine account directory(normally C:\Ascential\DataStage\Engine on Windows and \Ascential\DataStage\DSEngine on UNIX). %PROJECT% – Current project directory. %SYSTEM% – System directory on Windows NT or /usr/lib on UNIX.
一句不太懂的话,先做记录 If NLS is enabled, avoid using the built-in Iconv and Oconv functions to map data unless you fully understand the consequences of your actions.在使用了NLS时,尽量避免使用Iconv and Oconv来映射日期,因为可能产生一些意想不到的结果。
1.4Datastage的使用心得及unix应用 Datastage是Ascential公司出品的著名第三方ETL工具。它的主要特点有: 1.可视化操作截面,避免了大量的手工code 2.第三方工具,善于处理复杂的数据源 3.可监控性好,能够快速发现ETL中的问题并解决
对于Datastage的初学者来说,通过学习官方培训资料(网上到处都有的当了),可以快速的入门,毕竟Datastage是一个可视化的工具,没有太深涩难懂的内容。但在真正运用中,就可能碰到各种各样的问题。 下面就说一说我在使用中曾经困惑过的一些问题: 1.Job的粒度。 一套ETL过程中,含有多个步骤,在设计过程中,到底是粗化一些,用少而复杂的job实现,还是细化一些,用多而简单的job实现更好呢?我个人认为,比较细的粒度更有利于程序的开发。在开发初期,表面看来细化的job比较繁琐,但在项目后期的测试阶段,细化的job可以更准确的定位错误并易于修改。 2.并行和串行。 当到了开发后期,我们准备把多个job连接起来,我们就会发现,能否将多个job并行成为ETL效率的关键,而这个因素在设计初期往往被忽略。ETL中可能会涉及多个数据源的多个表,而多个job也可能会形成对某个数据源以及其中的某个表的争用。当数据源争用时,会影响ETL的执行效率。当表争用无法解决的时候,就只能使用串行。而一个好的结构流程设计,可以极大的减少这种争用,从而提高ETL的效率。 3.要将Datastage与外部code相结合。 Datastage并不是独立运行的开发工具,它需要外部控制程序为载体,才可以进行良好的客户操作。而 Datastage也不是万能的,简单的说,它只是sql语言的一个可视化载体。因此,有一些功能,并不一定要在Datastage中实现,而应该放到外部程序中,以sql code的形式完成,以保证整个程序的稳定性,安全性。
上面是一些大方向的问题,在实际中会有很多烦琐的小问题,我也尽量的列举一些: 1.字符集:output和input中的字符集都设置为none,是一个不错的选择。至少可以保证程序运行不会因为乱码abort。 2.文本中的列分隔符无法设置为三位,从理论上讲,只有三位分割符才可以保证程序不会将乱码辨认为分隔符,这是Datastage的一个缺陷。 3.在使用自定义sql前,需要使用非自定义形式手工配置好所需要的表,然后再切回自定义格式,如果直接写自定义sql,将导致Datastage无法辨别表名,从而导致错误,这应该是一个bug。 4.保持配置一个input或output,就view data一下的习惯,不要等到run时再回头找error. 5.Input中尽量不要使用insert or update之类的选项,它和insert only的差别是巨大的。使用insert or update等选项,相当于使用游标,逐条进行对比,每insert一条,都要先做一次全表扫描,其速度是可想而知的。如果必须要实现这种功能,应使用其他方法,如先delete目标表中所有与源表重复的记录,然后再从源表中insert数据. 6.Date型数据是比较麻烦的,因为Datastage中的日期格式为timestamp,当然你也可以把它的日期格式更改为date型,但经常会出现错误。对于oracle数据库源表和目标表,不需要对date型数据做任何转换,直接使用默认即可,但对于informix等一些数据库,则需要使用oconv,iconv函数进行转换,并在output中相应的修改output sql中的日期格式。具体用法可以去网上或查datastage帮助。 7.只要你保证input和output时数据类型和长度不会有问题,在两者之间的这一段过程中,Datastage中的数据类型和长度是可以随意更改的,也可以随意增加自定义列。 8.字符串中的半角空格需要用trimb,而不是trim函数,但这点往往被忽略。其他的情况还可能有半角中文等,所以字符串,长度,字符集,这几者之间经常会导致Datastage产生错误,所以应尽量保证insert前的字符串长度要小于insert后的字符串长度,而你看到的insert前的字符串长度并不一定就是它在Datastage中真正的长度,所以使用trimb函数在input sql中做一下限制,才是最稳妥的方法。
2.实用技术介绍 2.1JOB的分类与作用 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的实行流程,出错处理,文件监控等。