ETL DataStage實現V11

ETL DataStage實現

前言

自開始知道數據庫,就知道有數據倉庫這個東西,數據倉庫中一關鍵環節就是ETL。可是三四年過去了,由於沒有接觸數據倉庫這個東西,對ETL自然是一知半解,更別提實現了。從20079月份開始,要做數據倉庫項目了,接觸了ETLETL中要用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和主要的企業級應用如SAPSiebelOracle 以及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結構

DSC/S結構,由服務器端和客戶端組成。服務器端可以裝在WindowsUnix等平台上,客戶端只能裝在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,各個對象都必須屬於特定的項目;

2License的管理;

3、設置全局參數和修改項目中的參數。項目中用到的通用參數可以在這裡設置,調優需要修改的參數也都在這裡。

既然功能這麼重要,操作時要慎重喲!

2.2.2    DS Manager

主要功能有:

1、察看和修改DS元數據;

2、導入表定義,不止從數據庫喲;

3exportimport DS Components,其實也就是DS的備份恢復功能;

4、創建Routine: Transformer Routine(Parallel RoutineServer Routine),就是在Transformer Stage中調用的function; Befor-after Job subroutine; Job Control Routine。除了Parallel JobTransformer Routine需要用C/C++寫外,其他Routine都可以用DS Basic寫,而且大多也是通用的。

5、批量編譯JOB,不用一個個的編譯(廢話),記住這一點,就不會像我曾經那樣上千個JOB一個個點了。

2.2.3    DS Designer

當然這個就是我們開發DS最主要的工作環境了。

1、與JOB相關的開發,編譯,執行;

2Container,包括Local containersShared containersContainer就是將具有相同功能和輸入輸出參數的用幾個Stage封裝成一個模塊;

3、新Parallel Stage的創建,就是自定義Stage

2.2.4    DS Director

1、執行JOB

2、察看JOB執行情況及狀態,JOB調度,JOB執行日誌

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營