程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 使用 DWE-SQW 實現 ETL 過程 1

使用 DWE-SQW 實現 ETL 過程 1

編輯:DB2教程

摘要

本文介紹了 IBM DWEv9.1.1 產品包中的一個新成員:SQW(SQL Warehousing Tool)。 SQW 是一種 ETL(Extract Transform and Load) 工具,它可以實現多種數據源到 DB2 數據倉庫的抽取、轉換和加載,並且實現這一過程的可視化、自動化和可控化。

從需求講起

一個跨國零售店,主要經營衣服、鞋、飾品、電器、食品,有著多年的經營歷史。為了增加率潤,公司需要分析多年的歷史銷售數據,得到客戶的消費趨勢並且找到公司現存的銷售問題。為了達到這個目標,銷售經理需要分析銷售狀態並且找到可以改進的問題,數據架構師則需要建立一個數據倉庫來向銷售經理提供相關的數據。

圖 1. 零售公司的數據倉庫需求

使用 DWE-SQW 實現 ETL 過程 1

數據架構師首先根據公司現存的交易型數據庫,設計出一個供公司進行銷售分析的分析型數據庫。

圖 2. 數據倉庫模型

使用 DWE-SQW 實現 ETL 過程 1

下面他的問題來了,怎樣將多年的歷史數據導入這個數據倉庫數據庫裡呢?公司的數據庫系統運營多年,產生了多個歷史備份,並且其間系統經過了多次升級,數據庫結構也已經大相徑庭,因此怎樣將這些零散的、結構不一致的數據導入到一個數據庫倉庫變成了一個非常復雜的問題。

SQW 的功能和相關術語

SQW 可以實現多數據源到 DB2 數據源的數據導入,可以將多個異構數據源的數據經過加工整理導入到 DB2 數據倉庫裡 , 並且可以按時按期循環執行。下面我們將介紹如何使用 SQW 在可視化環境中進行數據的轉移、整理和加載的。

SQW 分為設計和生產兩個環境,也可以描述為客戶端和服務器。其中 DWE Design Studio 是內置於 Eclipse 的客戶端,用來完成各種數據流和控制流的設計調試。而 DWE Admin Console 則是部署在 WebSphere 之上的一個服務器,用來管理、運行和監控 ETL 進程。

為了便於描述,這裡有一些術語名詞需要解釋:

ETL 是 Data Extraction, Transformation and Loading 的首字母縮寫,是數據倉庫、數據挖掘以及商業智能等技術的基石 , 其主要用來實現異構多數據源的數據集成。

工作空間 (workspace):一個本地的目錄,用來存放工程文件。DWE Design Studio 運行時,必須指定一個 workspace。同一個 workspace 同時只能由一個用戶打開。

數據倉庫工程 (Data Warehouse Project):為了完成某項任務而設計的 model 和 flow 的集合。一個 Workspace 中可以包含多個 Project.

SQL 執行數據庫 (SQL Execution Database):用於執行 SQL 的中間數據庫,可以是源數據庫,或者目標數據庫,也可以是一個單獨的數據庫,物理上必須是 DB2。

數據流 (dataflow):通過對源文件或者源表的一系列轉換步驟,從而加載或者更新數據到目標文件或者目標表中。任何 dataflow 都需要在一個 SEDB 上執行。

數據子流 (subflow):dataflow 的一個子集,用來定義一些通用的數據轉換操作,源和目標可以在 dataflow 中指定,並引用 subflow。

控制流 (controlflow):用於序列化一個或多個 dataflow,並集成了如 FTP,Command,Email 等多種功能的流程,也可以定義分支 (branch) 和循環 (iterator)。

數據倉庫應用 (application):設計完成 controlflow 之後,為了部署到 DWE Admin Console 上而需要對 code 打包,application 正是打包之後生成的 zip 文件,一個 application 可以包含多個 control flow。

進程 (process):部署到 DWE Admin Console 裡的 application 的下一個級別,它對應於 design studio 的一個 control flow。

實例 (instance):process 的每一個具體執行。

數據倉庫 application 的產生和運行

數據倉庫 application 從產生到運行到卸載有一個生命周期,要經過下述的步驟:

安裝並建立設計和運行的環境:可以通過 DWE 安裝介質來安裝 SQW,其中 DB2 和 WAS 是必須的。

在 Design Studio 中設計、驗證、運行和調試數據流。

產生可部署的應用包,做部署到 DWE Admin Console 的預備工作。

在 DWE Admin Console 中部署 Design Studio 生成的應用包。

在 DWE Admin Console 中運行、定時、管理和監控進程,以完成 ETL 過程。

如果應用包不再需要運行,可以卸載。

下圖描述了 application 從產生到運行的整個過程。

圖 3. application 從產生到運行的整個過程

使用 DWE-SQW 實現 ETL 過程 1

從上圖可以清晰的看出完成一個 application 經歷了設計、部署預備、部署、運行和管理五個階段。

在 DWE Design Studio 中建立 SQW 的設計環境

DWE Design Studio 是以 eclipse 為基礎平台的開發的一套數據倉庫設計工具。上面集成眾多插件以支持數據倉庫的設計開發。DWE Design Studio 通過 xmi 作為原數據模型,保存並解析用戶的設計圖形。其基本結構如下所示:

圖 4:DWE Design Studio 基本結構圖

使用 DWE-SQW 實現 ETL 過程 1

Design Studio 同時也是一個集成的開發環境和元數據系統,它承擔了下述的一些功能:

導入、建立物理模型。

建立、執行、調試數據流。

建立、執行、調試控制流。

打包控制流到可部署文件。

用戶要在 Design Studio 中完成一個設計,需要遵循如下所示的基本工作流程:

圖 5. 在 Design Studio 中的設計流程

使用 DWE-SQW 實現 ETL 過程 1

1、 導入數據模型

數據模型代表某種具體的數據庫結構,由表、視圖、函數等數據庫對象組成,是數據庫的映射。數據模型是 SQW 的可操作對象。通過數據模型,SQW 可以獲知預操作數據庫的基本結構,並且根據數據模型,生成相應的 SQL 語句。用戶可以修改數據模型以適應自己的需要,SQW 可以根據修改後的數據模型同步數據庫結構。下圖就是導入後的數據模型

圖 6. 導入後的數據模型

使用 DWE-SQW 實現 ETL 過程 1

2、 建立、執行、調試數據流

用戶可以使用 DWE Design Studio,通過 GUI 的方式快速的設計出合適的數據流圖,然後可以在 Design Studio 中執行修改數據流圖,驗證數據的邏輯走向是否符合用戶的期望。同時,DWE Design Studio 為用戶提供了生成代碼的功能,生成後的代碼是一種類 Java 的代碼,由 SQL 語句、TRY/CATCH/FINALLY 語句、屬性定義語句組成。SQW 執行解釋器所能控制的最小控制單元叫 SQL 單元,每一個 SQL 單元也是由一組 SQL 語句、TRY/CATCH/FINALLY 語句、屬性定義語句組成。SQW 執行解釋器將這些 SQL 單元解釋成 node,並且賦予唯一的名稱。因此如果數據流在 DWE Design Studio 裡執行錯誤或者返回了不正確的結果,用戶就可以以 node 為最小單元來對該數據流進行調試,發現數據流問題所在。

清單 1. 生成的數據流代碼

……
EPGTXN ( ) : type TXN : node /graph12
(db connection = [SALES])
{
( ):CODE_UNIT, node /graph12/node9;
CODE_UNIT:JDBC
( )
{
  CREATE TABLE SQWTMP_1_INPUT2_017(
    COL_1 DATE,
    COL_2 VARCHAR(15),
    COL_3 VARCHAR(15),
    COL_4 INTEGER)
}
( ):CODE_UNIT, node /graph12/node12;
……

3、建立、執行、調試控制流

如前面的定義:數據流通過對源文件或者源表的一系列轉換步驟,從而加載或者更新數據到目標文件或者目標表中。控制流則是用於序列化一個或多個 dataflow,並集成了如 FTP、Command、Email、循環控制、分支控制等多種功能的流程。與數據流不同的是,控制流所生成的代碼並不包含 SQL 語句,但是控制流同樣是由 node 組成,用戶同樣可以以 node 為最小單元來對控制流進行調試,發現控制流問題所在。

清單 2. 控制流生成的代碼

……
CODE_UNIT:SHELL
(OperatorTag = /flow:06/op:02
OperatorLabel = DB2_Shell_02
Activity: = DB2_Shell_02
@RESOURCE =
@FILE = ${VMODVALVAR01/var_design}${VMODVALVAR01/var_deployprep}
        ${VMODVALVAR01/var_deployment}${VMODVALVAR01/var_runtime}
        ${VMODVALVAR01/var_execute}
@ARGUMENTS =
commandType = DB2Shell
logLevel = 0
traceLevel = 0
……

4、 打包控制流到可部署文件

控制流調試無誤後,用戶將需要使用 Design Studio 提供的“數據倉庫應用打包向導”將該控制流打包成一個 zip 文件。至此,用戶在 Design Studio 裡的設計工作就全部完成。

在 DWE Admin Console 中建立 SQW 的生產環境

如果說剛才介紹的 DWE Design Studio 屬於設計環境的話,那麼現在要介紹的 DWE Admin Console 則屬於 SQW 的生產環境。DWE Admin Console 本身屬於 WebSphere 上的一個應用,通過與 WebSphere 和 DB2 的集成,DWE Admin Console 為用戶提供了更好的安全性、穩定性和更快的執行力度。DWE Admin Console 可以部署在 Window、Linux、AIX、Solaris 等各種平台,並且為用戶提供了功能強大的管理和統計功能。

圖 7. DWE Admin Console 結構圖

使用 DWE-SQW 實現 ETL 過程 1

上圖展示了 DWE Admin Console 與 WAS、DB2 的關系。其中用戶請求通過浏覽器將一個 HTTP 請求發送給 WAS 的 Http Server,經過 Http Server 解析後將強求轉發給 DWE Admin Console, 之後 DWE Admin Console 調用 WAS 的 Scheduler、MBean、JNDI、Security 等服務,最後與 DB2 完成用戶數據的查詢或者持久化操作。

大家需要注意的是,DWE Admin Console 裡有一些術語和 Design Studio 裡是對應的,如果不仔細觀察的話,容易產生混亂。對應關系如下表所示:

表 1. 對應關系表

DWE Design Studio DWE Admin Console Data Warehouse Applications Deployed Applications Control Flows Processes Control Flow Operators ActivitIEs

其中應用的打包過程是在 DWE Design Studio 中完成,在 DWE Admin Console 裡完成的運行、監控、日志操作都是針對 Processes 的。Activities 在 DWE Admin Console 是不能單獨運行的,用戶對 ActivitIEs 唯一能做的事情就是監控這些 Operators 的執行結果。

DWE Admin Console 是為用戶提供了基於角色管理 (ACL) 的認證方式。用戶可以屬於以下三種角色:administrators、managers、Operators。

administrators:創建數據源、系統資源和部署應用。

managers:運行監控 Processes,創建 Profiles,對 Processes 定時。

Operators:運行監控 Processes,其權限低於 managers。

用戶訪問 DWE Admin Console 的 URL 地址是:http://ip:9080/dweadm,其界面如下所示:

圖 8. DWE Admin Console 的界面結構

使用 DWE-SQW 實現 ETL 過程 1

DWE Admin Console 非常簡單易用,用戶在 DWE Admin Console 裡搭建生產環境的流程如下圖所示:

圖 9. DWE Admin Console 使用流程

使用 DWE-SQW 實現 ETL 過程 1

首先用戶登陸之後,需要建立相應的數據源和系統資源(系統資源分為 FTP Server 和 DataStage Server 兩種),之後部署在 Design Studio 中打包的 zip 文件,在部署過程中需要綁定相應的數據源和系統資源,需要指定變量值。在部署好後,在 DWE Admin Console 會生成一個應用,用戶可以運行這個應用裡包含的 Processes,可以對這個應用所包含的 Processes 定時。如果執行失敗,用戶不但可以查看日志,而且還可以指定日志級別,對某個 Process 進行 trace。系統會記錄用戶所有的部署 / 卸載紀錄,同時,系統還會記錄下用戶所有的執行記錄和執行的詳細信息,這些信息對於用戶分析執行結果、執行效率也都非常有用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved