ETL DataStage實現
前言
自開始知道數據庫,就知道有數據倉庫這個東西,數據倉庫中一關鍵環節就是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工具呢,你就用吧,藝多不壓身,呵呵。
第二種情況,編程也可以實現,問題是得有多少人,花多長時間,能實現個什麼程度,它的性能,可維護性和可擴展性如何?如果這些問題都可以確定,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本身難以完成的任務。
當然,調度自然不可少,它支持相對不複雜的以時間為主的調度。
以及相關的源數據的管理,備份恢復,調試等功能。
第2章 DS入門
2.1 DS結構
DS是C/S結構,由服務器端和客戶端組成。服務器端可以裝在Windows,Unix等平台上,客戶端只能裝在Windows上。客戶端包含:DS Administrator; DS Manager; DS Designer; DS Director。服務端包含:DS Engine; MetaData Repository; Package Installer。總體架構見下圖:

2.2 客戶端組件介紹
我們開發,自然用得最多的是客戶端,就重點介紹一下客戶端。
2.2.1 DS Administrator
主要功能有:
1、添加和刪除項目(Project),一個項目就相當於Oracle數據庫的一個Schema,各個對象都必須屬於特定的項目;
2、License的管理;
3、設置全局參數和修改項目中的參數。項目中用到的通用參數可以在這裡設置,調優需要修改的參數也都在這裡。
既然功能這麼重要,操作時要慎重喲!
2.2.2 DS Manager
主要功能有:
1、察看和修改DS元數據;
2、導入表定義,不止從數據庫喲;
3、export,import DS Components,其實也就是DS的備份恢復功能;
4、創建Routine: Transformer Routine(Parallel Routine,Server Routine),就是在Transformer Stage中調用的function; Befor-after Job subroutine; Job Control Routine。除了Parallel Job中Transformer Routine需要用C/C++寫外,其他Routine都可以用DS Basic寫,而且大多也是通用的。
5、批量編譯JOB,不用一個個的編譯(廢話),記住這一點,就不會像我曾經那樣上千個JOB一個個點了。
2.2.3 DS Designer
當然這個就是我們開發DS最主要的工作環境了。
1、與JOB相關的開發,編譯,執行;
2、Container,包括Local containers和Shared containers,Container就是將具有相同功能和輸入輸出參數的用幾個Stage封裝成一個模塊;
3、新Parallel Stage的創建,就是自定義Stage。
2.2.4 DS Director
1、執行JOB
2、察看JOB執行情況及狀態,JOB調度,JOB執行日誌
以下文章點擊率最高
Loading…