ETL DataStageWord文件下载.docx

上传人:b****1 文档编号:4393530 上传时间:2023-05-03 格式:DOCX 页数:27 大小:2.25MB
下载 相关 举报
ETL DataStageWord文件下载.docx_第1页
第1页 / 共27页
ETL DataStageWord文件下载.docx_第2页
第2页 / 共27页
ETL DataStageWord文件下载.docx_第3页
第3页 / 共27页
ETL DataStageWord文件下载.docx_第4页
第4页 / 共27页
ETL DataStageWord文件下载.docx_第5页
第5页 / 共27页
ETL DataStageWord文件下载.docx_第6页
第6页 / 共27页
ETL DataStageWord文件下载.docx_第7页
第7页 / 共27页
ETL DataStageWord文件下载.docx_第8页
第8页 / 共27页
ETL DataStageWord文件下载.docx_第9页
第9页 / 共27页
ETL DataStageWord文件下载.docx_第10页
第10页 / 共27页
ETL DataStageWord文件下载.docx_第11页
第11页 / 共27页
ETL DataStageWord文件下载.docx_第12页
第12页 / 共27页
ETL DataStageWord文件下载.docx_第13页
第13页 / 共27页
ETL DataStageWord文件下载.docx_第14页
第14页 / 共27页
ETL DataStageWord文件下载.docx_第15页
第15页 / 共27页
ETL DataStageWord文件下载.docx_第16页
第16页 / 共27页
ETL DataStageWord文件下载.docx_第17页
第17页 / 共27页
ETL DataStageWord文件下载.docx_第18页
第18页 / 共27页
ETL DataStageWord文件下载.docx_第19页
第19页 / 共27页
ETL DataStageWord文件下载.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ETL DataStageWord文件下载.docx

《ETL DataStageWord文件下载.docx》由会员分享,可在线阅读,更多相关《ETL DataStageWord文件下载.docx(27页珍藏版)》请在冰点文库上搜索。

ETL DataStageWord文件下载.docx

第二种情况,编程也可以实现,问题是得有多少人,花多长时间,能实现个什么程度,它的性能,可维护性和可扩展性如何?

如果这些问题都可以确定,OK,那就项目组编程实现好了。

相信,大多数项目组,特别是给别人做项目的,会选择用ETL工具。

现代社会之所以发展的这么快,我认为主要的就是专业化分工(扯远了)。

虽然ETL工具有这样那样的缺点,但它的技术门槛比较低,开发人员可以很容易的上手,做出的东西性能上也不会差很多,开发,调试,维护都可以很容易的在图形界面上实现。

各种各样的源和转换工作,都可以用它的组件实现。

相比较之下,这些方面要远好于自编程实现。

1.3DS可实现功能

做为专业的ETL工具,DS可实现的功能自然是ETL中需要完成的功能,它基本上都可以做到。

DS的基础组件被称为Stage,它所实现的功能,大多是通过在图形界面上拖拉实现的。

DS的基础Stage分为两类:

ActiveStage就是完成数据的转换加载等动作,PassiveStage就是与数据库或者文件进行连接,然后让ActiveStage完成其他操作。

PassiveStage可以与文本文件,XML文件,几乎所有的数据库,WebServices,WebSphereMQ和主要的企业级应用如SAP、Siebel、Oracle以及PeopleSoft进行联接。

ActiveStage几乎可以完成SQL所能完成的所有工作,如关联,过滤,去重。

JobSequence可以将基础JOB联接起来,实现JOB间的依赖,互斥等操作。

再加上DS自带的Basic语言,可以实现各种定制Function,也可以在DSJobJobCrontrol中,除可以对JOB进行灵活多样的控制外,也可以完成大多数语言实现的功能。

DS也可以调用其他语言,如Shell(或DOS),TCL,可以完成DS本身难以完成的任务。

当然,调度自然不可少,它支持相对不复杂的以时间为主的调度。

以及相关的源数据的管理,备份恢复,调试等功能。

第2章DS入门

2.1DS结构

DS是C/S结构,由服务器端和客户端组成。

服务器端可以装在Windows,Unix等平台上,客户端只能装在Windows上。

客户端包含:

DSAdministrator;

DSManager;

DSDesigner;

DSDirector。

服务端包含:

DSEngine;

MetaDataRepository;

PackageInstaller。

总体架构见下图:

2.2客户端组件介绍

我们开发,自然用得最多的是客户端,就重点介绍一下客户端。

2.2.1DSAdministrator

主要功能有:

1、添加和删除项目(Project),一个项目就相当于Oracle数据库的一个Schema,各个对象都必须属于特定的项目;

2、License的管理;

3、设置全局参数和修改项目中的参数。

项目中用到的通用参数可以在这里设置,调优需要修改的参数也都在这里。

既然功能这么重要,操作时要慎重哟!

2.2.2DSManager

1、察看和修改DS元数据;

2、导入表定义,不止从数据库哟;

3、export,importDSComponents,其实也就是DS的备份恢复功能;

4、创建Routine:

TransformerRoutine(ParallelRoutine,ServerRoutine),就是在TransformerStage中调用的function;

Befor-afterJobsubroutine;

JobControlRoutine。

除了ParallelJob中TransformerRoutine需要用C/C++写外,其他Routine都可以用DSBasic写,而且大多也是通用的。

5、批量编译JOB,不用一个个的编译(废话),记住这一点,就不会像我曾经那样上千个JOB一个个点了。

2.2.3DSDesigner

当然这个就是我们开发DS最主要的工作环境了。

1、与JOB相关的开发,编译,执行;

2、Container,包括Localcontainers和Sharedcontainers,Container就是将具有相同功能和输入输出参数的用几个Stage封装成一个模块;

3、新ParallelStage的创建,就是自定义Stage。

2.2.4DSDirector

1、执行JOB

2、察看JOB执行情况及状态,JOB调度,JOB执行日志

3、添加、删除、修改JOB的调度,对,这里就是大名鼎鼎的调度,可以在这里实现,可以按照不同时间调度。

对了,本人偶尔发现的小秘密,一个JOB可以加多个调度,而且都起作用的(是不是大家都知道了?

)。

可惜它的调度方式只能满足一般的应用,一些复杂的调度,就得我们自己动手了。

唉!

它咋不能做的再强点呢?

3、删除JOB,在Designer中也是可以的。

其实有些功能,不只是在一个组件中有,在其他组件中也是可以用的。

2.3JOB注意事项

一些初学时的注意事项:

1、用文件或者数据库做源时,做好后最好先"

ViewData"

一下,然后再编译、运行。

这是出错最多的地方

2、运行完之后,一定要在director中看一下日志。

大部分错误都是由于数据库配置或者文件名称不对,也可能是定义的列与实际的列不是完全匹配等引起的。

其实DS的报错和其他程序的报错差不多,大多数是可以看明白是哪些地方,为什么报错的

3、ServerJob对列的定义要求不严,类型长度短点长点都无所谓,而ParallelJob长度必须正确,定义的短了,就会截断数据;

如果中间用到ActiveStage,在ActiveStage中源和目标长度必须一样,否则会报警告。

4、如果不知道哪个Stage该怎么用,DSBasic怎么用,可以查看安装客户端时自带的PDF帮助,这个应该是最详细的,在网上很难找到这类的帮助。

第3章ETL设计

ETL的设计是个庞大的工程,不同的项目设计差别很大。

对于特别简单或者特别复杂的项目,在此不做讨论,只讨论一些常见的项目中利用DS实现ETL的设计。

ETL一般需要考虑的问题有:

接口数据的获取,频率,数据校验,接口间及后续处理的关联关系,入库方式;

优先级,顺序乱序执行,出错处理,重传处理,调度监控等。

除了这些问题,可能还会有个别数据不是格式化数据,文件格式DS无法识别,文件标识的时间与实际数据数据时间不一致等问题。

3.1设计原则

3.1.1简单

说起来简单,做起来难,呵呵。

一直以来都追求简单,无奈做出来的却是越来越复杂,越来越难以让人明白。

不过,始终相信简单就是好的,以此做为设计和开发的第一原则。

3.1.2全面考滤,重点实现

设计之前,需要全面考滤ETL要实现的各种功能。

包括源数据都有哪些,如何得到,数据是如何存储的,如何调度,出错如何处理,过了期的数据如何处理,整个ETL过程如何监控等。

所有这些项下面都有各种各样的小项,每个小项又是千变万化,不可能每项都能想到,即使能想到,也不可能都能设计时考滤进去。

所以设计要把大项尽可能的考滤进去,可以用比较容易扩展的设计,包括小项80%的功能。

3.1.3充分利用各种资源

ETL中涉及到好多系统,用到很多技术,ETL的设计就是要充分利用已有资源的优势(包括人员,操作系统,DS,数据库等),综合运用,达到ETL和其他系统最好的结合。

这个可能要求对各种资源了解的比较清楚。

3.1.4层次分明

稍复杂的ETL,涉及到的面就比较多,除需要考滤实现的难易程度,性能,实现成本,还得考滤程序的稳定性和可扩展性。

层次分明将是其实现的一个重要保证

3.1.5规范严明

开始时规范可能定的不够详细,不是很准确,但是一定得有,而且相关人员需要知道为什么要这么定。

这些规范可能包括Shell、DSJOB,存储过程如何命名如何注释等。

也许按照规范可能开始时比较费事,而且看不到任何的好处,等做的多了,时间长了,只要看看规范或者是程序的注释部分,就能知道程序实现了什么功能,如何实现,而不用一行行的看代码。

3.2总体架构

这里只是ETL的架构,而不是整个数据仓库的架构。

主要的架构包括以下部分。

这个图只是表示大概部分,监控可以完成整个ETL的监控,或者是对部分重要任务的监控。

3.3调度

ETL,堆在一块不运行也没什么用,如何能让它正确的运行起来呢?

那就是调度了。

调度是ETL的灵魂。

ETL调度的设计,决定了ETL所能实现的功能以及灵活性,也决定了其他ETL部分工作量的大小。

调度涉及到的问题主要有优先级,顺序乱序执行,出错处理,重传处理,调度监控。

优先级就是任务之间执行的先后紧急顺序,将DSJob分为几个优先级,同一优先级或者不同优先级的JOB间有依赖、互斥等关系。

顺序乱序执行,顺序就是按照时间的先后顺序加载,而乱序则可以不按照时间顺序执行,主要是一些高频率JOB,异常情况不适合人工处理。

出错处理、重传处理,就是要求整个ETL支持重做。

调度监控,对ETL的处理结果和重要步骤有一个记录,有问题时发邮件或者短信通知相关负责人。

如果这些都不太复杂,可以用sequenceJob,在调度的JOB中用JobControl自编程的方式实现部分任务执行日志的记录。

对于很复杂的,sequenceJob难以实现的,可以自己写调度程序实现(如Shell,Python,Java)。

3.4ETL

这部分是整个ETL的主要部分,无论是工作量,还是复杂程度,都是最大的。

这部分的实现很大部分与源数据,源数据与目标数据数据的对应有很大关系。

如果需要做的很简单,完全可以一个JOB搞定,没有必要分的很细。

如果比较复杂,可能需要分为ETL三个步骤或者更多,DS的设计也会在项目中经建目录的方式将其分开,各步骤生成的文件也将以不同的命名方式放在ETL服务器不同的目录下。

这部分的处理,尽早将没用的数据过滤,不正确的格式转换等,使得后来的处理尽量少,尽量简单。

下面有些具体的处理方式,可以在Extract时做,也可以在Transform中做,load时就尽量少做些与入库不相关的操作了。

执行的顺序可以是ETL,也可以是ELT,或者是ETLT等。

但是做为一个整体,最好有一致的方式处理,而不是不同的任务处理方式千变万化。

这部分正是DS的强项。

3.4.1Extract

就是从数据源获取数据。

在数据抽取时,尽量将没用的数据,不对的数据在抽取时过滤掉,格式等不符合的转换掉。

如果源系统对自己的性能要求比较高,则用对源系统打扰尽量少的方式获取,如db2的export,oracle的exp等方式,然后再做处理。

涉及到的功能主要有:

数据范围过滤,抽取表中所有数据或者根据时间抽取相应数据

字段过滤,只抽取需要的字段,不需要的就不用管

条件过滤,根据抽取条件抽取数据

去除回车换行,如果已抽取成文件,字段中的回车换行将很难去掉

除此之外,还有

格式转换,特别是时间格式,最好是做成统一格式

赋缺省值,对于空的部分数据,根据需要赋一个缺省值

类型变换,如将number类型转换为varchar类型

代码转换,就是将在不同源系统中同一含义不同的编码表示转换成统一的编码表示,如将代表性别“男”的'

N'

,'

0'

转换成'

M'

数值转换,就是度量单位的转换

3.4.2Transform

就是将抽取的数据,进行一定的处理,生成目标表所需要的格式,内容。

涉及到的处理主要有:

字段合并、拆分:

字段合并就是将多个字段合并成一个字段;

拆分就是将一个字段拆成多个字段

数据翻译,就是不同的数据集进行关联,从另一个数据集中得到所需要的部分数据

数据聚合,就是做一些sum,max等操作

数据合并,相当于数据库中的merge

行列转换,需要将某些数据转换成行,或者是将行转换成列

参照完整性检查,对于数据中的参照完整性,入库前需要进行关联等方式检查其参照完整性

唯一性检查,对数据进行去重操作

3.4.3Load

就是将数据入库,如果前面的处理都做了,就可以直接入库了。

入库的时候需要考滤:

更新入库,对数据库中的记录进行更新

插入,就是将数据直接入库

刷新,将表中的数据清空,然后入库

部分刷新,将表中的部分数据清除,然后入库

由于性能等方面的需要,入库前后,可能需要做一些处理,如索引临时失效,主外键约束临时失效等

3.5过期文件处理

接口文件或者是ETL中间处理生成的文件会越积越多,久而久之,再大的文件系统也会撑爆,所以就得对文件进行处理了。

接口文件或者有些中间生成的文件,过期之后,有些需要归档,以供不时之需,有些就可以直接删了(这个我喜欢)。

这部分的处理最好写个统一的程序,对所有过期的文件进行处理,当需要过期的数据时,也方便取回。

3.6过期数据处理

同理,数据也有一个生命周期,当绝大多数都用不到时,就需要对它进行处理了,否则性能,管理,存储都会是一个大问题。

对于数据量很大的表,就是delete掉那些数据耗费的时间也是很惊人的了。

还好,各个数据库厂商都提供了分区表这个东西,detach表分区还是相当快的。

当然,将表分区,还得考滤管理,维护,性能方面的问题。

充分利用数据库提供的大数据量的操作方式,将过期数据进行归档删除。

做此操作时,尽量将此表的其他相关操作都停掉,避免产生死锁或者严重的锁等待。

当然,这个也是一个程序实现好了。

第4章ETL实现

4.1总体实现

设计完了,那实现就开始了。

设计时可以不关心具体用什么产品,什么技术,实现时就很得关心这些东西的优劣了。

现在得根据设计时的方式,创建ETL接口文件、临时文件、中间文件、程序、日志等的存放方式;

DSJOB中用到的参数的存放,传递等等这些问题。

再对需要的程序和DS的东东进行开发。

Job要联接数据库,一般都是通过数据库客户端的方式,这样,需要在在Engine下的dsenv文件中配置数据库客户端的联接方式,同时在DS用户(默认是dsadm)的.profile文件中进行配置。

另外,Scratch目录存放DS进行运算时自己生成的临时文件,如果文件很大,进行排序等操作时此目录会占用很大的空间。

Datasets存放DSDataSetsStage生成的文件。

所以这两个目录需要特别注意。

DSJOB中用到的参数一般有三种方式:

一种是在DSAdministrator中定义,在JOB中调用;

另一种方式是在参数文件或者参数表中定义,用程序调用,赋给相应的JOB;

第三种是将两者混合使用,基本固定不变的参数(如ETL根路径、数据库用户名、密码)在DSAdministrator中设置,经常变化的参数(如接口时间)在参数文件或者参数表中定义。

DSAdministrator中定义的参数如下

4.2调度

调度的复杂程度,决定了调度的方式。

对于调度比较简单的,可以用SequenceJob将相关JOB串联起来,不同SequenceJob间的依赖,可以用消息文件或者数据库记录的方式,最后直接在Director中配置调度时间。

而对于需要记录执行情况日志的,则可以再做一层通用的Job,在此Job的JobControl中,用basic写通用的方式调度其下的ETLJob,并将其记录日志,参数就是Job的名称和时间等。

其实就是此类Job调用ETLJob,然后再用SequenceJob调用他们。

而对于比较复杂的,就得单独开发独立的程序了。

可以在配置表中将不同JOB的执行时间,依赖条件,优先级,顺序乱序执行等信息配置进去,写程序(Shell,Python,Java等)根据不同的情况,按照不同的方式执行,调用DS提供的接口dsJob对JOB进行控制,并将重要的步骤记录到日志表中。

而对于重传等操作,可以通过更改日志表中的状态来执行。

配置的JOB可以是ETLJob,也可以是SequenceJob。

4.3ParallelJobVSServerJob

ETL用到的Job有ServerJob,ParallelJob,MainframeJob(专供大型机上用的),一般情况下就是ServerJob,ParallelJob了。

从一类Job转到另一类Job,跟从一个开发工具转到另一个开发工具一样,让人感到很陌生。

项目中是用ServerJob合适,还是ParallelJob合适?

以下是他们之间的一个比较(直接从网上copy的):

1)ThebasicdifferencebetweenserverandparallelJobsisthedegreeofparallelism.ServerJobStagesdonothaveinbuiltpartitoningandparallelismmechanismforextractingandloadingdatabetweendifferentStages.

•AllyoucandotoenhancethespeedandperormanceinserverJobsistoenableinterprocessrowbufferingthroughtheadministrator.ThishelpsStagestoexchangedataassoonasitisavailableinthelink.

•YoucoulduseIPCStagetoowhichhelpsonepassiveStagereaddatafromanotherassoonasdataisavailable.Inotherwords,StagesdonothavetowaitfortheentiresetofrecordstobereadfirstandthentransferredtothenextStage.LinkpartitionerandlinkcollectorStagescanbeusedtoachieveacertaindegreeofpartitioningparalellism.

•AlloftheabovefeatureswhichhavetobeexploredinserverJobsarebuiltindataStagePx.

2)ThePxenginerunsonamultiprocessorsystemandtakesfulladvantageoftheprocessingnodesdefinedintheconfigurationfile.BothSMPandMMParchitectureissupportedbydataStagePx.

3)Pxtakesadvantageofbothpipelineparallelismandpartitoningparalellism.PipelineparallelismmeansthatassoonasdataisavailablebetweenStages(inpipesorlinks),itcanbeexchangedbetweenthemwithoutwaitingfortheentirerecordsettoberead.Partitioningparallelismmeansthatentirerecordsetispartitionedintosmallsetsandprocessedondifferentnodes(logicalprocessors).Forexampleifthereare100records,thenifthereare4logicalnodestheneachnodewouldprocess25recordseach.Thisenhancesthespeedatwhichloadingtakesplacetoanamazingdegree.Imaginesituationswherebillionsofrecordshavetobeloadeddaily.ThisiswheredataStagePXcomesasaboonforETLprocessandsurpassesallotherETLtoolsinthemarket.

4)InparallelwehaveDatasetwhichactsastheintermediatedatastorageinthelinkedlist,itisthebeststorageoptionitstoresthedataindataStageinternalformat.

5)InparallelwecanchoosetodisplayOSH,whichgivesinformationaboutthehowJobworks.

6)InParallelTransformerthereisnoreferencelinkpossibility,inserverStagere

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2