【转载】DataStage(ETL)技术总结

数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform,  Load)。
    IBM WebSphere DataStage(下面简称为DataStage)为整个 ETL 过程提供了一个图形化的开发环境,它是一套专门对多种操作数据源的数据抽取、转换和维护过程进行简化和自动化,并将其输入数据集或数据仓库的集成工具。
    通常数据抽取工作分抽取、清洗、转换、装载几个步骤:
    抽取主要是针对各个业务系统及不同网点的分散数据,充分理解数据定义后,规划需要的数据源及数据定义,制定可操作的数据源,制定增量抽取的定义。
    清洗主要是针对系统的各个环节可能出现的数据二义性、重复、不完整、违反业务规则等问题,允许通过试抽取,将有问题的纪录先剔除出来,根据实际情况调整相应的清洗操作。
    转换主要是针对数据仓库建立的模型,通过一系列的转换来实现将数据从业务模型到分析模型,通过内建的库函数、自定义脚本或其他的扩展方式,实现了各种复杂的转换,并且支持调试环境,清楚的监控数据转换的状态。
    装载主要是将经过转换的数据装载到数据仓库里面,可以通过数据文件直接装载或直连数据库的方式来进行数据装载,可以充分体现高效性。在应用的时候可以随时调整数据抽取工作的运行方式,可以灵活的集成到其他管理系统中。

一.数据源连接能力:
数据整合工具的数据源连接能力是非常重要的,这将直接决定它能够应用的范围。DataStage 能够直接连接非常多的数据源,包括:
1、 文本文件
2、 XML 文件
3、 企业应用程序,比如 SAP、PeopleSoft、Siebel、Oracle Application
4、 几乎所有的数据库系统,比如 DB2、Oracle、SQL Server、Sybase ASE/IQ、Teradata、Informix等以及可通过ODBC连接的数据库
5、 Web Services
6、 SAS、WebSphere MQ

二.多国语言支持(NLS):
    DataStage能够支持几乎所有编码,以及多种扩展编码(IBM、NEC、富士通、日立等),可以添加编码的支持,DataStage内部为UTF8编码。

三.并行运行能力: 
ETL Job的控件大多数都支持并行运行,此外DataStage企业版还可以在多台装有DataStage Server的机器上并行执行,这也是传统的手工编码方式难以做到的。这样,DataStage就可以充分利用硬件资源。而且,当你的硬件资源升级的时候 也不用修改已经开发好的ETL Job,只需要修改一个描述硬件资源的文件即可。并行执行能力是DataStage所能处理数据的速度可以得到趋近于线性的扩展,轻松处理大量数据。

四.便捷的开发环境:
DataStage 的开发环境是基于 C/S 模式的,通过 DataStage Client 连接到DataStage Server 上进行开发。这里有一点需要注意,DataStage Client 只能安装在 Windows 平台上面(在Win2000/XP上运行过)。而 DataStage Server 则支持多种平台,比如 Windows、Solaris、Redhat Linux、AIX、HP-UNIX。(在WinXP/Solaris8上运行过)
DataStage Client 有四种客户端工具。分别是 DataStage Administrator、DataStage Designer、DataStage Manager、DataStage Director。下面介绍这几种客户端工具在 DataStage 架构中所处的位置以及它们如何协同工作来开发 ETL Job 的。
(1) DataStage Administrator
DataStage Administrator 的主要功能有以下几个:
1. 设置客户端和服务器连接的最大时间。
以 管理员的身份登陆 DataStage Administrator(默认安装下管理员为dsadm)。你可以设置客户端和服务器的最大连接时间,默认的最大连接时间是永不过期。最大连接时间的 意思就是如果客户端和服务器的连接时间超过了最大连接时间,那么客户端和服务器之间的连接将被强行断开。

2. 添加和删除项目
在 Projects标签中,可以新建或者删除项目,以及设置已有项目的属性。要用 DataStage 进行 ETL 的开发,首先就要用 DataStage Administrator 新建一个项目,然后在这个项目里面进行 ETL Job 的开发。
在Property里,能够设置该Project全局设置、用户权限以及License的管理

(2) DataStage Designer
DataStage Designer是ETL Job开发的核心环境。值得注意的是,登陆DataStage Designer 的时候,不仅要指定DataStage Server 的IP或Server名,而且要指定连接到这个DataStage Server上的哪个项目上面,上面已经提到DataStage的项目是由DataStage Administrator 来创建的。

DataStage Designer的主要功能可以概括为以下三个方面:
1. ETL Job的开发
DataStage Designer里面包含了DataStage为ETL开发已经构建好的组件, 主要分为两种,一种是用来连接数据源的组件,另一种是用来做数据转换的组件。此外DataStage还提供自定义函数(Basic),利用这些组件,开发 人员可以通过图形化的方式进行ETL Job的开发,此外ETL Job支持参数的传递。

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

3. ETL Job的执行
编译成功后,ETL Job就可以执行了,在DataStage Designer里面可以运行ETL Job。ETL Job的运行情况可以在DataStage Director中看到,这方面的内容将在介绍DataStage Director的时候提到。

4. ETL Job的DEBUG
ETL Job可以在Designer中设置断点,跟踪监视Job执行时的中间变量。

5. ETL Job Report的生成
可以为ETL Job生成文档报告,该报告非常详细,只通过该报告,就可以完全了解该Job的结构与处理过程,非常便于分析。

DataStage提供很多实用的控件,常用的控件有:
1. DB操作控件
主要用于各种DB的连接,连接方式有多种,有面向厂家的Native方式,如Sybase的OpenClient方式,也有通用的ODBC等方式,此外也有些比较特别的DB操作控件,如Sybase的IQ Load、BCP控件,主要用于数据的快速导入和导出。

2. 文件操作控件
常用的有Sequential File、Hashed File, Sequential File是可指定编码形式和格式的CSV文件,Hashed File主要是为了加快检索效率,而替代DB控件的一种比较好的选择,这两种控件可用于输入或输出。

3.处理控件
主要的处理空间有Transformer、Aggregator, Transformer是负责数据转换的关键控件,在该控件中可以调用一些自定义函数,Aggregator是用于统计的控件,非常类似于SQL中的 GROUP BY,也提供Count、Max、Min、Sum的统计操作,还支持如First、Last、Average等操作。

DataStage的ETL Job分类:
1. Server Job
最为常用的Job类型,Job可以组合使用,Server Job是Job的最小单位。

2. Job Sequence
Job Sequence主要用于Job间的协作工作控制,如各Job的实行流程,出错处理,文件监控等。
3. Job Control
Job Control是一种特殊的Server Job,这种Server Job不是通过Designer来设计的,而是直接通过DataStage内嵌支持的Basic语言来开发,因此方式更为灵活,完全可以利用Job Control替代Job Sequence,至少在出错处理和Log输出等方面要灵活很多。(我参与开发的一个项目中完全用Job Control替代了Job Sequence,做出了更为详细的Log输出)

(3) DataStage Manager
DataStage Manager主要用来管理项目资源。一个项目可能包含多个ETL Job,可以用DataStage Manager把一个项目里面的ETL Job导出来。然后再用DataStage Manager导入到另外一个项目中去,利用这个功能一方面可以实现ETL Job的备份,另一方面就是可以在多个项目之间来重复使用开发好的ETL Job。在DataStage Manager里面可以把数据库中的表结构直接导入到项目中来,供这个项目中的所有ETL Job使用。DataStage Designer也提供了从数据库中直接导入表结构的功能。

(4) 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。(Windows平台下需要打开的Task Scheduler服务,此外,在Unix等平台下,更常用的是用Cron结合dsjob命令来定时运行ETL Job)

五.命令行形式的运行:
ETL Job支持在DataStage Server侧用命令行形式的调用,可以用dsadmin命令来管理DataStage的Project,包括Project的新建,删除以及一些环境变 量的增删(DataStage 7.5.1下未能通过dsadmin来设置全局NLS和一些项目属性)。使用dsjob命令,能够同步或非同步的运行DataStage的Job,并传递 需要的Job参数,能够检查Job运行的状态,并能恢复Job的运行状态。

六. DataStage的不足:
以上都是说DataStage优点,但实际上DataStage也有不少缺点和不足,这些不足点,会直接影响到能否采用DataStage来达到我们的客户或设计要求。下面就谈一下,最近利用DataStage7.5.1来开发一个项目中遇到的问题。
1.缺点:
存 在一个Bug,在利用DB控件的参照功能时,如果指定的SQL文有错误的话,那可能会直接造成DataStage出错,然后客户端会和服务端直接断开,需 要关闭客户端,重新连接服务端,并且更为严重的是,DB连接将不会被释放(可能是服务器端的执行进程并没有停掉的缘故)
DataStage的表定义的使用,可以通过PlugIn的方式导入,但是导入后基本就只起一个模版的作用,当表结构发生改变而需要修改表定义时,使用该表定义的地方并不能同步,需要手动修改,容易出现遗漏。
2.不足:
一 些高级控件的功能不够全面,在实际应用时,会出现不能完全利用DataStage提供的控件来满足要求,如:Sybase的BCP, DataStage的Sybase BCP控件只支持导出,无法支持导入。当然这些不足,后来我都使用Java API来实现了Sybase BCP和Sybase IQ Load。
错误处理功能不够,DataStage对业务错误,如:检索0件等错误,很难捕获和处理。
某些应用要求无法满足,如需要对DB某表的某数据进行状态监视,这时,由于DataStage只有监视文件的功能,DB访问也只有DB控件才可以,因此该应用最后也是用JAVA来实现。

时间: 2024-10-12 18:32:08

【转载】DataStage(ETL)技术总结的相关文章

ETL技术入门之ETL初认识

ETL是什么 ETL是Extract Transform Load三个英文单词的缩写 中文意思就是抽取.转换.加载.说到ETL就必须提到数据仓库. 先说下背景知识: 信息是现代企业的重要资源,是企业运用科学管理.决策分析的基础.目前,大多数企业花费大量的资金和时间来构建联机事务处理OLTP的业务系统和办公自动化系统(例如电信行业的各种运营支撑系统.购物网站系统),用来记录事务处理的各种相关数据.据统计,数据量每2-3年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占在总数据

【转载】关于技术美术的一些个人理解

[转载]关于技术美术的一些个人理解 原文地址http://www.cnblogs.com/sitt/archive/2011/07/21/1980263.html 2011.7.21,凌晨蛋疼,遂更新了一下 技术美术是什么以及需要什么: 以我的了解,游戏行业的技术美术(Technical Artist)应该源于影视动画里面的技术指导或者叫技术总监(Technical Director).此外还有R&D(research and development 研究与开发)这个往往和前面的技术美术或者技术

转载 程序员技术练级攻略

转载 程序员技术练级攻略 博客分类: 转载 本文转载自陈皓(http://coolshell.cn/articles/author/haoel) 博客: http://coolshell.cn/articles/4990.html 月光博客6月12日发表了<写给新手程序员的一封信>,翻译自<An open letter to those who want to start programming>,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的

【转载】ETL 浅谈

ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据. ETL是BI项目重要的一个环节. 通常情况下,在BI项目中ETL会花掉整个项目至少1/3的时间,ETL设计的好坏直接关接到BI项目的成败. ETL的设计分三部分:数据抽取.数据的清洗转换.数据的加载.在设计ETL的时候我们也是从这三部分出发.数据的抽取是从各个不同的数据源抽取到ODS(Operational Data Store,操作型数据存储)

[转载] Android逃逸技术汇编

本文转载自: http://blogs.360.cn/360mobile/2016/10/24/android_escape/ 摘    要 传统逃逸技术涉及网络攻防和病毒分析两大领域,网络攻防领域涉及的逃逸技术主要为网络入侵逃逸技术,病毒分析领域涉及到的逃逸技术主要包括针对静态分析.动态分析的木马逃逸技术. 本文介绍的Android木马逃逸技术研究了针对用户感知.杀软查杀.沙箱动态养殖和人工分析的各种逃逸技术. 大多数Android木马的作恶途径是长期留存用户终端,通过持续性作恶获取收益. 为

怎么将ETL技术落地

ETL概述 ETL(Extraction-Transformation-Loading)是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据, ETL是BI(商业智能)项目重要的一个环节. 数据治理流程   数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程.它通常与计算机科学有关,并通过统计.在线分析处理.情报检索.机器学习.专家系统(依靠过去的经验法则)和模式识别等诸多方法来实现上述目标.它

【转载】启发式搜索技术A*【译】

原文网址:http://www.cnblogs.com/yanlingyin/archive/2012/01/15/2322640.html 以下为原文: 这篇文章介绍找最短路径的一种算法,它的字我比较喜欢:启发式搜索. 标题上写的是翻译,只是觉得原文讲解的思路很清晰.这篇文章整体构思和原文相差不多,只是有些地方有小的改动, 我想的是用更容易理解的方式.更简洁的把A*算法的思想呈现出来. 文章中出现的词openlist,closelist我觉得用原文会更好故没有翻译,在文中会有解释. 原文地址h

[转载] linux cgroup技术介绍

原文: http://coolshell.cn/articles/17049.html 大名鼎鼎的左耳朵耗子的文章, 非常浅显的介绍了linux cgroup技术, 看完之后一定让你明白cgroup技术 前面,我们介绍了Linux Namespace,但是Namespace解决的问题主要是环境隔离的问题,这只是虚拟化中最最基础的一步,我们还需要解决对计算机资源使用上的隔离.也就是说,虽然你通过Namespace把我Jail到一个特定的环境中去了,但是我在其中的进程使用用CPU.内存.磁盘等这些计

[转载]Dll注入技术之劫持进程创建注入

转自:黑客反病毒 DLL注入技术之劫持进程创建注入 劫持进程创建注入原理是利用Windows系统中CreateProcess()这个API创建一个进程,并将第6个参数设为CREATE_SUSPENDED,进而创建一个挂起状态的进程,利用这个进程状态进行远程线程注入DLL,然后用ResumeThread()函数恢复进程.1.创建挂起的进程     下面是创建一个挂起的计算器程序进程的主要代码: STARTUPINFO si = {0}; si.cb = sizeof si; si.dwFlags

[转载]Dll注入技术之远程线程注入

转自:黑客反病毒 DLL注入技术之远线程注入 DLL注入技术指的是将一个DLL文件强行加载到EXE文件中,并成为EXE文件中的一部分,这样做的目的在于方便我们通过这个DLL读写EXE文件内存数据,(例如 HOOK EXE文件中的API),或以被注入EXE的身份去执行一些操作等等.     远线程注入原理是利用Windows 系统中CreateRemoteThread()这个API,其中第4个参数是准备运行的线程,我们可以将LoadLibrary()填入其中,这样就可以执行远程进程中的LoadLi