发布时间 : 星期一 文章ETL DataStage - 鐧惧害鏂囧簱更新完毕开始阅读e3067640050876323012123a
ETL DataStage实现
ETL DataStage实现 第1页 共31页
第1章 前言
自开始知道数据库,就知道有数据仓库这个东西,数据仓库中一关键环节就是ETL。可是三四年过去了,由于没有接触数据仓库这个东西,对ETL自然是一知半解,更别提实现了。从2007年9月份开始,要做数据仓库项目了,接触了ETL。ETL中要用DS实现,项目中没有人会,组长要我一个月内,边工作边自学DS,然后给大家讲怎么用DS实现ETL。想起初学时的困难和迷惑,和现在一些同学的疑问,本人从开发的角度,简单介绍一下用DS实现ETL。由于本人的知识和经验的局限,自然有很多错误和不足,希望大家指正,共同进步,给初进入者一个参考。
适合人群是对DS实现ETL不了解,想有一个大概印象的人。其他人就帮忙补充或者修正一下这个东东吧!
有很多地方都是从网上或者其他文章上摘抄的,如有不妥,请指出,将会删掉。
本文都用DS代替DataStage。
1.1 什么是ETL
既然是ETL DS实现,那就首先得介绍一下ETL了,呵呵。ETL即数据的抽取(Extract)、转换(Transform)、装载(Load),简单来讲,就是一个倒数的过程。原数据很难满足目标系统(就是数据仓库或者别的系统)的需要,就得对数据进行各种各样的处理了。
1.2 自编程实现与ETL工具
既然是一个导数的过程,应该不难实现了,而且工具还得学习,又那么贵,可为什么还要用工具呢?
试想以下场景:
一、项目中的源就是csv文件,目标库就只有一个oracle库,而且接口数量不大,数据基本没有什么转换,以后也没有多少接口增加;
二、项目中的源有多种文件,好多种数据库,接口的数量很多,数据的转换
ETL DataStage实现
第2页 共31页
也比较复杂,以后还有很多接口,很多种源。
当然第一种情况,编程就很容易实现,而且如果程序做的不是太烂,性能,可维护性和可扩展性应该都不错。那项目上非得要用ETL工具呢,你就用吧,艺多不压身,呵呵。
第二种情况,编程也可以实现,问题是得有多少人,花多长时间,能实现个什么程度,它的性能,可维护性和可扩展性如何?如果这些问题都可以确定,OK,那就项目组编程实现好了。相信,大多数项目组,特别是给别人做项目的,会选择用ETL工具。
现代社会之所以发展的这么快,我认为主要的就是专业化分工(扯远了)。虽然ETL工具有这样那样的缺点,但它的技术门槛比较低,开发人员可以很容易的上手,做出的东西性能上也不会差很多,开发,调试,维护都可以很容易的在图形界面上实现。各种各样的源和转换工作,都可以用它的组件实现。相比较之下,这些方面要远好于自编程实现。
1.3 DS可实现功能
做为专业的ETL工具,DS可实现的功能自然是ETL中需要完成的功能,它基本上都可以做到。
DS的基础组件被称为Stage,它所实现的功能,大多是通过在图形界面上拖拉实现的。DS的基础Stage分为两类:Active Stage就是完成数据的转换加载等动作,Passive Stage就是与数据库或者文件进行连接,然后让Active Stage完成其他操作。
Passive Stage可以与文本文件,XML文件,几乎所有的数据库,Web Services, WebSphere MQ和主要的企业级应用如SAP、Siebel、Oracle 以及PeopleSoft进行联接。
Active Stage几乎可以完成SQL所能完成的所有工作,如关联,过滤,去重。 Job Sequence可以将基础JOB联接起来,实现JOB间的依赖,互斥等操作。 再加上DS自带的Basic语言,可以实现各种定制Function,也可以在DS Job Job Crontrol中,除可以对JOB进行灵活多样的控制外,也可以完成大多数语言实现的功能。
DS也可以调用其他语言,如Shell(或DOS),TCL,可以完成DS本身难以完
ETL DataStage实现
第3页 共31页
成的任务。
当然,调度自然不可少,它支持相对不复杂的以时间为主的调度。 以及相关的源数据的管理,备份恢复,调试等功能。
ETL DataStage实现 第4页 共31页