DataStage v11.7

数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所 说的ETL过程。IBM WebSphere DataStage 为整个 ETL 过程提供了一个图形化的开发环境,具备数据源连接能力和Job并行执行等功能。

DataStage 的开发环境是基于 C/S (Client-Server) 模式的,通过 DataStage Client 连接到DataStage Server 上进行开发。这里有一点需要注意,DataStage Client 只能安装在 Windows 平台上面。而 DataStage Server 则支持多种平台,比如 Windows、Redhat Linux、AIX 、HP-UNIX。Server端存储全部的项目和元数据,Client DataStage Designer 为整个 ETL 过程提供了一个图形化的开发环境。用所见即所得的方式设计数据的抽取清洗转换整合和载入的过程。Datastage 的可执行单元是 Datastage Job ,用户在 Designer 中对 Datastage Job 的进行设计和开发。

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

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的备份等。

Job的分类

Server Job

一个 Job 就是一个 Datastage 的可执行单元。Server Job 是最简单经常使用的 Job 类型,它使用拖拽的方式将主要的设计单元 -Stage 拖拽到工作区中。并通过连线的方式代表数据的流向。通过 Server Job,能够实现下面功能。

  1. 定义数据怎样抽取
  2. 定义数据流程
  3. 定义数据的集合
  4. 定义数据的转换
  5. 定义数据的约束条件
  6. 定义数据的聚载
  7. 定义数据的写入

Parallel Job

Server Job 简单而强大,适合高速开发 ETL 流程。Parallel Job 与 Server Job 的不同点在于其提供了并行机制,在支持多节点的情况下能够迅速提高数据处理效率。Parallel Job 中包括很多其它的 Stage 并用于不同的需求。每种 Stage 使用上的限制也往往大于 Server Job。

Sequence Job

Sequence Job 用于 Job 之间的协同控制,使用图形化的方式来将多个 Job 汇集在一起,并指定了 Job 之间的运行顺序。逻辑关系和出错处理等。

数据源的连接

DataStage 可以直接连接许多的数据源,应用范围很大,可连接的数据源包含:

  • 文本文件
  • XML 文件
  • 企业应用程序。比方 SAP 、PeopleSoft 、Siebel 、Oracle Application
  • 差点儿全部的数据库系统,比方 DB2 、Oracle 、SQL Server 、Sybase ASE/IQ 、Teradata 、Informix 以及可通过 ODBC 连接的数据库等
  • Web Services
  • SAS 、WebSphere MQ

Server Job

Server Job 中的 Stage 综述

Stage 是构成 Datastage Job 的基本元素。在 Server Job 中。Stage 可分为下面五种:

  1. General
  2. Database
  3. File
  4. Processing
  5. Real Time

本节中将介绍怎样使用 Datastage 开发一个 Server Job。如图所示:

Server Job

Sequential File Stage

Sequential File Stage 可用来从一个 Sequential 文件里获取源数据或将数据载入到一个 Sequential 文件里。在使用 Sequential File Stage 时须要指定文件的路径和名称,文件的格式,列的定义和文件写入的类型(覆盖或追加)。

Sequential File 属性框

Sequential File 列定义

上图是本节样例中使用到的 Sequence File。

在 Input 页中。File Name 參数代表文件的实际路径,假设文件不存在将会被自己主动建立。Update Action 中选择 Overwrite existing file 表示此文件在载入数据之前将被清空;在 Format 页中,定义文件的格式,比如分隔符,NULL 值,首行是否为列定义等;在 Column 页中,须要输入文件的列定义。

Hash File Stage

Hash File 以主键将记录分成一个或多个部分的文件,在 Datastage 中通常被用做參考查找。

在进行參考查找的时候,Hash File 文件会被载入到内存中,因此具有较高的查找效率。

和 Sequence File 类似,使用 Hash File 时须要输入文件的实际地址。通过參数设置写入时的选项,并提供数据的列定义。须要注意的是,Hash File 须要指定主键。假设未指定,第一列被默觉得主键。进行參数查找时,使用主键值在 Hash File 中搜索。假设找到则返回该数据。假设未找到则返回 NULL 值。

Hash File 属性框

Transformer Stage

Transformer Stage 是一个重要的,功能强大的 Stage。它负责 ETL 过程中的数据转换操作。在 Transformer Stage 中能够指定数据的来源和目的地,匹配相应输入字段和输出字段,并指定转换规则和约束条件。

Transformer Stage 列映射

Transformer Stage 中分为 5 个区域:

左上方区域,是用表格形式描写叙述的输入数据信息。

假设有多条输入数据流。则有非常多表格。

本例中有一个输入,一个參照查询,因此左上方有两个表格。

右上方区域。是用表格形式描写叙述的输出信息。

左下方区域为输入的元数据列定义,包含列名。类型和长度等属性。

右下方区域为输出的元数据列定义,包含列名,类型和长度等属性。

左上方和右上方的表格由带有流向的箭头连接,代表了字段的相应关系。

此例中,输入的数据仅仅有一个字段 EMPLOYEE_ID。通过此字段在 Hash File 中进行參照查找。获取 EMPLOYEE_NAME 字段。假设在 Hash File 中找到了 EMPLOYEE_NAME 则将数据发送到输出端,这个条件是通过 Transformer Stage 提高的约束功能实现。我们在约束中的定义为 NOT(ISNULL(lkp_name.EMPLOYEE_ID))。另外不管是否在 Hash File 中查找到相应的数据,我们都将数据记录到一个 csv 文件里,即相应的 save_all 输出。

Parallel Job

Parallel Job 的 Stage 综述

与 Server job 相比。Parallel Job 提供了更丰富的 stage。添加了 Development/Debug,Restructure 和 Transactional 类的 stage。同一时候。对于一些在 server job 中能够在 transformer 中完毕的功能,Parallel job 也提供了专用的 stage 以提高执行性能和开发效率,比方 lookup。join,Compare 等。另外一个显著的差别是在 Parallel Job 中内置地支持 job 的并行执行,并行执行也就意味着数据在 job 中的各个 stage 见处理时须要处理 partition 和 combination 的问题,所以在开发 job 时,我们须要设定 partition 和 combination 的策略。

Lookup DataSet 与 Lookup Stage

Parallel Job 对 lookup 的实现做了一些调整,在 Server Job 中。我们通常是用 Transformer Stage 配合 lookup 数据源(通常是 hash 文件)来实现 lookup,同一个 transformer 中能够同一时候完毕多个 lookup。类似于 sql 中的多表自然联接,假设 lookup 数据源使用的是 database stage 而不是 hash file 并且对于一条记录返回多条 lookup data 的话。job 会产生 warning(hash file 的键唯一特性使得它不会存在这个问题,后面插入的反复数据会覆盖前面的同主键的数据)。

而在 Parallel Job 中,lookup 须要用一个单独的 stage 来实现。transformer 不再兼职 lookup 的“副业”。在一个 lookup stage 中,能够有一个主数据 link 和多个 lookup link。同一时候,Parallel 中的 lookup 还有下面的新特性

  • 支持 multi rows,在一个 lookup stage 中对于一行主输入数据能够有一个 lookup link 返回多于一行的 lookup 数据。

    结果也会变成多行。

  • Parallel 中不在支持 hash file,转而使用封装更强的 Data Set stage, Data Set 本质上也是 hash 数据结构,但对 Job 开发者隐藏了实现细节,我们不用象开发 Server Job 那样去手动设定具体參数
  • Parallel 中除了支持等值 lookup 外,还直接支持 Range lookup 和 Caseless lookup。这样我们在完毕类似月份转换为季度性质的设计时就会很的方便和自然。

类似于 Server Job 中的 hash 文件,在 Parallel Job 中我们使用 Data Set 文件来缓存 lookup 数据,并载入到内存中,在 Data Set stage 中。我们仅仅须要制定记录的主键和存储的文件名称,Parallel 引擎会为我们处理其它的操作。

但为了达到性能的最优化,我们有时须要制定 Data Set 的缓存策略和缓存大小,系统默认的缓存大小是 3M。假设我们的 lookup 数据比較大。就须要设定合适的缓存大小。否则会严重影响 lookup 的性能。

DataSet 缓存设置

Sort Stage

Parallel Sort stage 的行为类似于 Sql 中的 order by,可是比 order by 提供了很多其它的选项。

在 job 中,Sort stage 接收一个输入 link 并产生一个输出 link。对于写过 sql order by 或者排序程序的开发者使用 Sort Stage 的基本功能应该是非常easy的,可是要充分发挥 Parallel stage 的强大功能。我们还是须要注意以下几点:

  • 并行还是串行运行,假设选择串行运行。那么 Sort stage 的行为就类似于 Server Job 中的 Sort Stage,整个输入数据都会依照设定的排序选项排序,但假设选择分区 / 并行排序。则仅仅有每一个分区内的输出是有序的,这在有些情况下是能够接受的。但在另外一些情况下会导致代码缺陷,须要依据 sort 的兴许操作做出选择。
  • 假设有可能。尽量在数据源端的数据库中进行排序,这样不但会提高数据排序的效率,还能大大降低 job 对内存。I/O 的压力。Sort stage 仅仅有在接收完输入之后才干完毕排序,进而输出数据,使得 job 的兴许 stage 都处于等待状态。
  • 类似于 order by 后面的字段列表,我们能够指定排序的方向,是升序还是降序,Sort Stage 也能够指定对多个字段进行排序,排在前面的 column 称为主排序字段,假设排序字段中有某一个或几个字段已经是有序的,我么也能够指定其为有序,这样在排序的时候就能够提高排序的效率。
  • 稳定排序(stable sort)/ 同意反复。stable sort 默认是 yes,这样假设两条记录 sort key 同样的话,排序的输出和输入顺序将是同样的,假设没有选择同意反复。两条或者多条记录的 sort key 同样的话。将仅仅保留一条记录。
  • 限制内存的使用,数据的排序操作是很耗费内存的,假设不加限制。让全部的数据的排序都在内存中完毕的话,job 的其它操作或者其它 job 的运行的效率将受到严重影响,全部在 Sort Stage 中。我们能够设定此排序能够使用的最大内存数(M),这样我们在能够接受的排序效率和使用的内存数量之间找到平衡点。

Compare/Difference/Change Capture Stage

Compare, Difference 和 Change Capture Stage 是 Parallel job 中三个用于比較数据集合异同的 stage,对于这三个 stage 本身的使用没有太多困难的地方,主要的參数和设置都非常简明直观,我们的介绍主要集中在这三个 stage 在使用中的同样点和不同点上,一旦了解了这些 stage 的特点。使用的时候不但能依据需求选择正确的 stage,也能依据 stage 特性知道须要设置哪些參数。

同样点:

  • 都有两个输入,产生一个输出,
  • 输入的数据主键的字段名同样,都须要指定须要比較的字段。
  • 产生的结果数据中都会添加一个整型的结果字段,用于表示两行数据的比較结果

不同点:

  • Capture Change Stage 输出的是以 after 输入流为基础,外加 change code 字段,适合和 change apply 配合使用,把 before 输入流同步为和 after 一样。
  • Difference Stage 的输出是以 before 输入流为基础,外加 change code 字段
  • Compare Stage 产生的结果包含 before 和 after。以及 change code 字段

以下是一个 Capture Change Stage 的演示样例:

Capture Change Stage 的演示样例

Before source Sql: SELECT k,v
FROM (values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10))
as temp(k,v) order by k asc After source Sql: SELECT k,v
FROM (values (1,1),(2,2),(11,11),(4,5),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10))
as temp(k,v) order by k asc

Capture Change Stage 參数设置

从以上设置能够看到。我们选择了明白指定主键。剩余 column 都当作 value,对于比較的结果,假设结果同样。则从结果中删除,也就是我们仅仅希望看到对 Before 数据做 Delete。Edit,和 insert 后产生的差异,下图是我们 job 执行得到的结果:

Comparsion 结果

从以上的结果能够看到。before 和 after 数据有三处差异。change_code 的值相应为 2,3。1。分别表示对 before 运行 Delete,Update。Insert 产生的差异。要同步这些差异,我们仅仅须要对 before 数据运行相应的 Delete,Update 和 Insert 就可以实现两个数据集合的同步。

Filter Stage

Filter Stage 顾名思义是一个用于过滤的 Stage,其作用类似于我们写 sql 中的 where 子句,并且其支持的逻辑表达式和运算符也类似于 sql 语句的 where 子句,比方,在 filter stage 中,我们能够使用下面常见的逻辑表达式和运算符以及其组合 ,

  • true 和 false
  • 六个比較运算符 : =, <>, <, >, <=, >=
  • is null 和 is not null
  • like 和 between

从其语法作用上看。则类似于 java 或者 C 语言中的 switch case 语句。我们能够通过设置“Output Row Only Once”选项的值来决定是否在每一个 case when 子句后面是否加入 break。通过加入或者删除“Reject Link”来确定是否加入一个 default 子句 . 以下是一个简单的样例。

展示了我们怎样通过员工编号和薪水的组合条件来过滤员工的记录到不同的结果文件的。

Filter Stage 的演示样例

Filter Stage 的设置

对于每个 where 条件。我们须要设置相应的输出链接。这是一个整型数字,我们能够在“Link Ordering”页签上找到输出链接的编号和名称之间的相应关系。

另外须要注意的一点是,Filter Stage 不正确输入的记录做不论什么修改,仅仅做分发。可是你能够手动设置输出的 column,使得每一个输出的 column 列表不一样,但仅仅要是输入 column 列表的子集就可以。可是对于 Reject Link, Column 列表是默认全然等同于输入的,且不可更改。

用于调试的 Stages

我们知道 DataStage Server Job 中提供了 Debug 功能,我们在开发过程中遇到问题的时候能够让 Job 执行在 debug 模式下。细致查看每行数据在 Job 中各个 Stage 之间的流动和转换情况,但 Parallel Job 并没有给我们提供调试功能。但 Parallel Job 用第二种方式提供了调试的能力:Parallel Job 内置了用于调试的 Stage,使用这些 Stage,我们能够依照我们的须要,把我们怀疑有问题的中间数据输出,进而能够深入查找问题的根源。在 Parallel Job 中提供了下面的 Stage 用于调试:

  • Head Stage
  • Tail Stage
  • Sample Stage
  • Peek Stage
  • Row Generator Stage
  • Column Generator Stage

我们以一个 peek 的实例展示一下 development/debug Stage 的使用。其它的 Stage 的使用方法类似,能够參见后面的表格和文档。例如以下图是我们的 Job。DB2 Stage 的 Source Sql 例如以下:

 SELECT k,v FROM (values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12),(13,13),(14,14),(15,15),(16,16),(17,17),(18,18),(19,19),(20,20) )as temp(k,v)

Peek Job 的演示样例

Peek Stage 的设置

Peek 的结果

下表简述了这些 Stage 的特点和使用方法

Stage 的特点和使用方法

Stage 类型 用途 可设置项目
Head Stage 从头部開始抓取输入流的数据
一个输入一个输出
抓取的行数
从哪些分区抓取
每一个分区的起始位置
每次抓取的间隔
Tail Stage 抓取输入流尾部的 N 行数据
一个输入一个输出
抓取的行数
从哪些分区抓取
Sample Stage 一个输入,多个输出依据设置的策略从输入流的各个分区抓取数据,每一个输出流有不同的百分比设置 百分比
随机数的种子
每一个分区抓取的最多行数
Peek Stage 从一个数据流中有选择地“偷窥”流经的数据。一个输入。两个输出,一个输出原样输出输入数据,一个输出生成一个文本,包括“偷窥到的数据” 每次抓取的间隔
每一个分区抓取的行数
“偷窥”哪些行
输出“偷窥”结果到 log 还是输出
Row Generator Stage 依据定义的数据 schema,生成模拟数据,无需输入,一个输出 Schema(column list 或者 schema file)
生成的行数
Column Generator Stage 在一个输入流上加入新的 column,为这些新加入的或原有的 column 生成模拟数据 须要生成模拟数据的 column

Sequence Job

假设说每一个个 Server Job 或 Parallel Job 完毕 ETL 流程中的一个数据抽取,转换。载入的子过程的话,那么 Sequence Job 的作用就是把这些子过程给串联起来。形成一个完整的全局的 ETL 过程。从结构上看,一个 Sequence Job 类似于一个 C 或者 Java 语言的一个函数。但功能更为强大。

  • 能够使用 UserVariables Activity Stage 定义局部变量。变量在定义的时候须要赋值,赋值表达式能够是系统变量,Job 參数,Datastage 的宏。常量,Routine 的返回结果等。还能够是这些单独变量的条件。数学或者字符串运算后的结果。差点儿你在一个函数中能完毕的局部变量定义的功能这儿都能实现。以下的演示样例定义了六个变量。
  • 能够调用其它的功能模块,通过 Job Activity Stage 能够调用 Server Job,Parallel Job;通过 Execute Command Stage 调用 unix/windows cmd。通过 Routine Activity 支持调用 datastage routine。
  • 支持循环,Sequence Job 通过 StartLoop Activity Stage 和 EndLoop Activity Stage 提供了循环的功能。循环变量能够是基于起始值,结束值和步长的整数循环,也能够基于给定的列表进行循环。还能够把这些循环中的暂时变量传递给每一个详细的循环步骤。

在 StartLoop Activity Stage 和 EndLoop Activity Stage 之间。能够增加随意多个的

  • 支持逻辑运算。Nested Condition Stage 支持类似 switch 的逻辑,Sequencer Stage 支持与和或的逻辑运算,通过这些 Stage 的组合,能够支持随意复杂的逻辑控制。
  • 支持 email 通知,使用 Notification Stage,在 job 执行成功,失败或者满足其它设定条件时,Sequence Job 能够发送一封或者多封的通知邮件,使我们能够更方便地监控 Job 的执行状态。邮件的内容能够包括 job 的执行状态,当前的參数等等,凡是能够在 User Variables Stage 中引用的变量都能够包括在邮件中。同一时候还能够包括我们指定的文件和 Sequence Job 的执行状态等。
  • 支持错误处理和现场清理,使用 Terminator Activity Stage 和 Exception Handler Stage。我们能够定义须要处理的错误,并在发生错误的使用依据定义的策略停止不必要的 Job 执行。
  • 通过 Wait for File Activity Stage 能够支持等待时间。我们能够定义仅仅有某个信号文件出现或者消失的时候才開始启动 Wait for File Activity Stage 兴许的执行。

以下的图展示了一个简单的 Sequence Job。在 Job 的開始,我们定义一组变量。这些变量在我们循环和发送通知邮件的时候将会被引用。然后利用 Job 參数 yearlist 開始循环,每个循环里面我们调用一次 Job extract_trans, 假设这个 job 调用执行不成功,我们就发邮件通知 Job 执行失败,否则进入下一个循环,在循环结束后,发邮件通知 Sequence Job 执行成功

Job 全景

定义的变量

StartLoop Stage 的定义

Job Activity Triggers 定义

DataStage Designer

DataStage Designer是ETL Job开发的核心环境。Job图和Parameter Sets(多个参数)等,在图里如果是Execute Command图标的话,#ps_name.p_name#即可调用对应参数,比如Command里写#ps_DATA_PATH.p_BASE_PATH#/Scripts/OS/XXX.sh,并且Parameters填入shell调用需要的各个参数,用空格隔开即可,也是用#XXX.YYY#的形式调用。值得注意的是,登陆DataStage Designer 的时候,指定DataStage Server 的IP/Host name(:端口),并指定连接到这个DataStage Server上的哪个project项目上面,上面已经提到DataStage的项目是由DataStage Administrator 来创建的。DataStage Designer的主要功能可以概括为以下三个方面:

1. ETL Job的开发

DataStage Designer里面包含了DataStage为ETL开发已经构建好的组件, 主要分为两种 ,一种是用来连接数据源的组件,另一种是用来做数据转换的组件。利用这些组件,开发人员可以 通过图形化的方式进行ETL Job的开发。

2. ETL Job的编译

开发好ETL Job后,可以直接在DataStage Designer里面进行编译。如果编译不通过,编 译器会帮助开发人员定位到出错的地方。

3. ETL Job的执行

编译成功后,ETL Job就可以执行了,在DataStage Designer里面可以运行ETL Job。ETL Job的运行情况可以在DataStage Director中看到。

DataStage Director

DataStage Director 主要有以下两个功能:

1. 监测ETL Job的运行状态

ETL Job在DataStage Designer中编译好后,可以通过DataStage Director来运行它。 前面在介绍DataStage Designer的时候提到在DataStage Designer中也可以运行ETL Job,但是如 果要监测ETL Job的运行情况还是要登陆到DataStage Director中。在这里,你可以看到ETL Job 运行的详细的日志文件,还可以查看一些统计数据,比如ETL Job每秒所处理的数据量。

2. 设置何时运行ETL Job

ETL Job开发完成后,我们可能希望ETL Job在每天的某个时间都运行一次。DataStage Director为这种需求提供了解决方案。在DataStage Director中可以设置在每天、每周或者每月 的某个时间运行ETL Job。

日常有Job name,Status(Finished/Aborted),Elapsed time,(On date哪一天,Started时间,Last ran时间,Description),run job,reset job,View Log等。

开发一个简单的ETL Job

1. 配置dsenv文件(Linux环境),dsenv文件是主要是用来存放环境变量的,这些环境变量包含了DataStage要用到的类库 ,以及要连接的数据库的安装的路径等。dsenv文件位于位于文件夹 $DataStage/DSEngine里面, $DataStage/是DataStage的安装目录。Oracle的安装路径、Oracle的实例、以及Oracle类库的路径。配置好这些环境变量后,我们就可以用DataStage连接Oracle了。

eg:打开dsenv文件,在文件的最后加上如下内容:

DB2DIR=/opt/IBM/DB2/V8.1;export DB2DIR
DB2INSTANCE=db2inst1; export DB2INSTANCE
INSTHOME=/home/db2inst1;export INSTHOME
PATH=$PATH:$INSTHOME/sqllib/bin:$INSTHOME/sqllib/adm:$INSTHOME/sqllib/misc
export PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$INSTHOME/sqllib/lib;export LD_LIBRARY_PATH
THREADS_FLAG=native;export THREADS_FLAG

这些环境变量用来描述DB2的安装路径、DB2的实例、以及DB2类库的路径。配置好这些环境变量后,我们就可以用DataStage连接DB2了。

2. 新建项目project

(1)用DataStage Administrator登录到DataStage Server。Host system是安装DataStage Server的主机,输入它的IP地址或者主机名。另外再输入用户名和密码后,单击按钮"OK";

(2)登录后,在标签Projects中可以看到目前这个DataStage Server上面所有的项目。单击按钮"Add"新建一个项目;

(3)在弹出的对话框中输入项目名SampleProject,项目存储的默认路径是DataStage安装路径的Projects目录下面,你可以通过单击按 钮"Browse"来改变默认路径。注意不要钩上选择框"Create protected project",因为如果钩上的话你所创建的工程将没办法被改变。单击按钮"OK";

(4) 你会看到在项目列表里面已经有了我们刚创建好的项目SampleProject,单击按钮"Close"关闭DataStage Administrator;

3. 用DataStage Designer登陆到DataSatge Server,输入DataStage Server的IP或 主机名以及用户名和密码,并指定Project为创建的项目。单击按钮 "OK";在DataStage Designer当中单击File=>New去创建一个新的ETL Job; 选择"Parallel Job",单击按钮"OK";

一个新的ETL Job已经创建了,单击工具栏上的图标"保存",或者用快捷 键"Ctrl+S"来保存,这时候一个保存ETL Job的对话框会弹出来;在弹出的对话框中。在Job name一栏输入"SampleJob",在Category中 输入"Sample"。单击按钮"OK";保存好刚创建的ETL Job后,我们用DataStage Designer来导入数据库的表结构。在 DataStage Designer的左下方的Repository中右键单击"Table Definition"。然后选择 Import'Pug-in Meta Data Definitions…;在弹出的对话框中,Server Name选择Source。输入用户名和密码,再钩上Tables选择框之后单击按钮Next;选择表employee,把要保存到的目录改成PlugIn\Source。然后单击按钮 Import;在子标签Columns中,你会发现已经有表结构load进来了,这个表结构是和source数据库中的employee表的结构一致的。单击按钮OK并保存ETL Job;在工具栏中单击图标"编译"对刚开发完的ETL Job进行编译

1. 编译成功后,我们打开DataStage Director来运行我们开发的ETL Job。从 DataStage Designer中打开DataStage Director的方法为:从菜单栏中选择Tools'Run Director;打开DataStage Director后你会在Sample目录下面发现我们开发好的ETL Job SampleJob,状态为Compiled。选择SampleJob,然后单击工具栏中的"运行"按钮;这时候你会注意到SampleJob的状态从Compiled变成了Running,等到SampleJob的状态变成Finished后,该ETL Job的运行就结束了;

2. 到DataStage Designer中,用View Data功能查看目标数据库Target中employee 表中的数据。你会发现和源数据库source中的employee表中的数据是一样的,也说明我们开发的 ETL Job成功的完成了我们想要它完成的任务。

项目流程

有一个项目文件夹去专门存放ETL每个步骤的文件和参数文件。

数据仓库整个ETL流程是:先FTP Staging接收文件(ftp_staging.sh:receipt),再File Reception对接收到的文件进行拆分(file_reception.sh:receipt => receipt_full),然后再Assign Sequence Num会有一个Valuation Num(seq_num_assign.sh:receipt_full => load_pending),然后ETL Batch Control load数据(etl_batch_control.sh:load_pending => load_start => load_success),最后才是Extract到数据集市(extract_batch_control.sh:load_success => xxx_trigger)。

数据仓库到数据集市是把处理后的archive目录下的文件打包后SFTP到数据集市重新load一遍,然后数据集市处理后可以直接给前端。

在Shell里调用bin下的dsjob,加上多个options即可指定调用哪个job。

Support Case例子:

Load Error可以在Error table里查看具体error,可以知道具体是哪个记录缺失。

case 1:数据仓库到数据集市有问题,Master先看具体是哪个job有错误,再根据log做相应操作,如果需要重新启动DataStage就是提交申请,自动重新运行DataStage即可。

case 2: missing reference - special char导致过长load不进去时,根据上游的一个portal去提交申请,填写具体哪个文件哪个record,优先级等信息,让上游重新发放数据。

Reference&ReferenceSchema会新load(insert进db),每天的fileset会根据reference data去先select对应的code/id,然后load进去,修改last change date和其他有新value的字段。

case 3:发送客户信息时, reference data还没ready,如果根据batch id查etl_error_tab表发现具体哪个account id报错,就可以去account表查对应account id,结果发现该account id created_dt时间不对delay,直接reload,web page/control-m reload,背后是调用reload shell会去重新trigger上面整个流程。

DataStage记录相关推荐

  1. DataStage常见错误记录

    Ora-01427: 单个子查询返回多个行:select语句下面嵌套的select语句查询结果大于一行. 解决方法:将嵌套查询语句加上where rownum=1,附录有去重语句. ora-01461 ...

  2. java basic data type,DataStage Basic学习笔记

    一 BASIC介绍 1 一般的BASIC程序是如下一个格式 [ label ] statement [ ; statement - ] 2 关于subroutine a 如果嵌入到了程序中用GOSUB ...

  3. datastage中oracle组件,Datastage常用组件使用方法(详尽版)

    常用组件使用方法: Sequential file1 功能特点:适用于一般顺序文件(定长或不定长),可识别文本文件或IBM大机ebcdic文件. 使用要点: 按照命名规范命名 点住文件,双击鼠标,在g ...

  4. Datastage性能优化

    1,SQL自身的优化:调优,并行处理 2,stage的拆分与合并:实践测试为准 如多个JOIN的stage双方都为大数量(几百万一般大于200w)则考虑合并.如大表但JOIN的数据不大就不用合并. 如 ...

  5. ETL DataStage实现

    写于2009年秋,DataStage6.5 第1章  前言 自开始知道数据库,就知道有数据仓库这个东西,数据仓库中一关键环节就是ETL.可是三四年过去了,由于没有接触数据仓库这个东西,对ETL自然是一 ...

  6. datastage dsjob命令

    dsjob解释一 ETL调度中不乏要用shell脚本来运行DATASTAGE中的JOB,现测试一下DSJOB的用法然后总结一下(边测试边总结) dsjob -run [-mode <NORMAL ...

  7. datastage(IBM InfoSphere Information Server )日志的获取和分析

    在使用 IBM InfoSphere Information Server 的过程中我们经常会遇到一些问题,但如何来查找和诊断问题,对于一个刚刚使用 IBM InfoSphere Informatio ...

  8. datastage transformer控件详解

    序言 在之前的工作中,用到的都是一些很简单的transformer的转换功能,比如直接加一些函数做一些判断然后输出,或者构造一些列!没有用到他的loop功能及stage variable功能,这篇主要 ...

  9. DataStage学习笔记

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

最新文章

  1. 远控软件VNC***案例研究
  2. 【译】Byzantine Fault Tolerance in Proof-of-stake protocols
  3. Selenium with Python 001 - 安装篇
  4. 求指教、。。。关于调用so文件
  5. 辨别光纤收发器优劣的方法介绍
  6. PHPUnit安装、用法、测试(三)
  7. win7 无法修改 host 文件解决方案
  8. mount挂载光盘media_Linux挂载光盘命令
  9. Bootstrap-按钮
  10. 基于linux在线预览
  11. 3.UNIX 环境高级编程--文件 IO
  12. iSCSI存储的3种连接方式
  13. 匆匆的一瞥,错过了一份正确的BIOS……,安装X64系统时错刷BIOS的彻底死机过程以及解决方法...
  14. 第03章 Python的数据结构、函数和文件--Python for Data Analysis 2nd
  15. 老司机带你快速熟悉Swift 4.1(一)
  16. unlock java_Java中lock上锁 unlock解锁
  17. 走进Microsoft Surface 的世界
  18. 网吧需配几名计算机信息网络安全员,网络安全员
  19. JavaScript事件冒泡应用实例
  20. 分享几款有意思的阅读工具

热门文章

  1. Java代码韦伯分布_Excel 应用WEIBULL函数计算韦伯分布
  2. Dundas Chart for .NET 控件的简单使用
  3. 小爱音箱怎么装app_小米小爱音箱下载安装-小爱音箱app最新版下载v2.2.33 安卓官方版-2265安卓网...
  4. 游戏项目的技术开发成本
  5. 电工基础知识计算机题库,南方电网计算机类笔试题库_国家电网计算机考试(22)_电工基础知识_电工技术-电工最常见电路...
  6. 断电后笔记本损坏文件如何恢复
  7. 阅读笔记:《The Art, Science, and Engineering of Fuzzing: A Survey》
  8. 产品运营数据分析框架应该包含哪些重要指标?
  9. 科普:影子模式shadow mode
  10. 【分享】给大家几个免费的上传空间