Oracle數(shù)據(jù)庫WarehouseBuilder培訓(xùn)教材_第1頁
Oracle數(shù)據(jù)庫WarehouseBuilder培訓(xùn)教材_第2頁
Oracle數(shù)據(jù)庫WarehouseBuilder培訓(xùn)教材_第3頁
Oracle數(shù)據(jù)庫WarehouseBuilder培訓(xùn)教材_第4頁
Oracle數(shù)據(jù)庫WarehouseBuilder培訓(xùn)教材_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Oracle9i Warehouse Builder培訓(xùn)資料· 提交人:Oracle Sales Consultant · 提交日期: · 版本號(hào):v1.0文檔控制變更記錄· 48日期作者版本號(hào)變更參考文件OCT 30, 2002閔文杰V1.0·審閱·日期姓名職位·目 錄簡(jiǎn)介4提綱4前提5培訓(xùn)目標(biāo)5反饋與意見5Module 1: 在Warehouse Builder中設(shè)置環(huán)境6開始6環(huán)境6Module 2 創(chuàng)建數(shù)據(jù)源8導(dǎo)入數(shù)據(jù)源元數(shù)據(jù)8Module 3 設(shè)計(jì)數(shù)據(jù)倉庫11創(chuàng)建分段傳輸區(qū)(Staging Area)11創(chuàng)建數(shù)據(jù)倉

2、庫模型14Module 4: 建立映射及轉(zhuǎn)換20創(chuàng)建 PL/SQL Function20導(dǎo)入一個(gè)已經(jīng)存在的過程(Procedure)20創(chuàng)建映射裝載數(shù)據(jù)20Module 5: 配置,部署及運(yùn)行29環(huán)境29配置29部署對(duì)象32運(yùn)行數(shù)據(jù)裝載33Module 6: 生命周期管理35將數(shù)據(jù)源元數(shù)據(jù)的變化反映到OWB 存儲(chǔ)中35對(duì)于目標(biāo)的變化管理36Module 7: 元數(shù)據(jù)報(bào)告38從Warehouse Builder 客戶端看38簡(jiǎn)介Oracle 9i Warehouse Builder (OWB) 是Oracle完整智能解決方案中的一部分。其作用主要是完成數(shù)據(jù)倉庫的設(shè)計(jì)及抽取、轉(zhuǎn)換、裝載設(shè)計(jì)(Ext

3、ract, Transform and Load ETL)與生成??梢栽O(shè)計(jì)Oracle Discoverer的End User Layer 并與Oracle 9i 數(shù)據(jù)庫緊密集成。提綱本資料的目標(biāo)是例示OWB的功能,因此中間沒有什么重復(fù)工作,在某些方面較為簡(jiǎn)潔。另外,本資料沒有論述如何建立數(shù)據(jù)倉庫的模型及如何進(jìn)行性能優(yōu)化,該部分內(nèi)容請(qǐng)參考相關(guān)Oracle資料。本資料分為以下幾個(gè)部分,每一個(gè)針對(duì)OWB的一特定領(lǐng)域。· Module 1: 建立環(huán)境該模塊描述如何建立環(huán)境。也給出了一些源數(shù)據(jù)的詳細(xì)數(shù)據(jù)結(jié)構(gòu)。· Module 2: 建立數(shù)據(jù)源該模塊讓用戶建立基于9i數(shù)據(jù)庫種子對(duì)象得

4、源數(shù)據(jù)模塊。該步驟僅是整個(gè)解決方案中的第一步。在后面的階段,我們將回頭來改變數(shù)據(jù)源對(duì)象,以舉例顯示生命周期管理。· Module 3: 設(shè)計(jì)數(shù)據(jù)倉庫該模塊顯示W(wǎng)arehouse Builder 創(chuàng)建表、視圖、方案的一些特征。在此部分我們將練習(xí)創(chuàng)建事實(shí)表及維。完成這些工作后,就能將數(shù)據(jù)載入這些結(jié)構(gòu)中定下數(shù)據(jù)倉庫。· Module 4: 設(shè)計(jì)映射與轉(zhuǎn)換模型OWB 的核心功能是基于ETL 過程,轉(zhuǎn)換及進(jìn)行它們的設(shè)計(jì)。本模塊將展示如何利用OWB 映射設(shè)計(jì)工具完成這些過程的設(shè)計(jì)。將充分利用前面在OWB中定義好的數(shù)據(jù)源與數(shù)據(jù)目標(biāo),允許客戶化PL/SQL 開發(fā)輔助數(shù)據(jù)轉(zhuǎn)換。也將看到如何重

5、用PL/SQL。· Module 5: 配置,部署,運(yùn)行在設(shè)計(jì)完數(shù)據(jù)倉庫后,下一步當(dāng)然就是在數(shù)據(jù)庫中安裝它,并載入數(shù)據(jù)。本模塊將展示如何配置在前面中創(chuàng)建的模塊,并運(yùn)行映射,載入數(shù)據(jù)。· Module 6: 生命周期管理數(shù)據(jù)倉庫是一個(gè)一直在進(jìn)化的系統(tǒng)。為了處理數(shù)據(jù)源及數(shù)據(jù)目標(biāo)的變化,OWB 提供了用戶數(shù)據(jù)源協(xié)調(diào)及數(shù)據(jù)倉庫升級(jí)的手段。本部分將展示這些內(nèi)容。· Module 7: 元數(shù)據(jù)報(bào)告本模塊是可選做的一部分,因?yàn)楸仨毎惭bOracle 9iAS 并正確配置。元數(shù)據(jù)報(bào)告模塊將展示OWB Browser的能力。該瀏覽器可以進(jìn)行線性分析、影響分析及更多的報(bào)表。前提為完成本

6、培訓(xùn),必須滿足以下幾點(diǎn)前提:1. 安裝Oracle 9i 數(shù)據(jù)庫2. 安裝Warehouse Builder及存儲(chǔ)庫 3. 有足夠的權(quán)限以授予權(quán)限,創(chuàng)建用戶,安裝運(yùn)行時(shí),如果需要的話,還安裝Browser4. 企業(yè)管理器并設(shè)置,以能從OEM中調(diào)度job5. Oracle Workflowset安裝并設(shè)置以能創(chuàng)建工作流6. 安裝9iAS 及Portal,如果練習(xí)元數(shù)據(jù)報(bào)告的話7. 有一定的Warehouse Builder基本概念知識(shí)8. 有一定的Oracle 9i 數(shù)據(jù)庫概念9. 有一定的Oracle 9i ETL 概念10. 有一定的SQL 及 PL/SQL 知識(shí),才能在你自己的環(huán)境下寫出客

7、戶化的代碼培訓(xùn)目標(biāo)本培訓(xùn)的幾個(gè)目標(biāo)是:1. 對(duì)Warehouse Builder 的能力有一個(gè)綜合認(rèn)識(shí)2. 利用Warehouse Builder 進(jìn)行一個(gè)完整的設(shè)計(jì)、部署及運(yùn)行周期反饋與意見若對(duì)本培訓(xùn)資料有何意見,請(qǐng)將意見反饋給我們,以便我們改進(jìn)和提高。請(qǐng)聯(lián)系:閔文杰技術(shù)咨詢顧問Module 1: 在Warehouse Builder中設(shè)置環(huán)境為開始始用Warehouse Builder,我們首先必須創(chuàng)建一個(gè)項(xiàng)目(project).我們?nèi)№?xiàng)目名XWEEK。開始將Xweek.zip文件移動(dòng)到本地硬盤并解壓。假設(shè)在C盤上,你也可以放在其他磁盤上,解壓完后,將有如下目錄:C Xweek Sourc

8、eFilesSQLScripts建好這些目錄后,開始進(jìn)入Warehouse Builder。登陸到Warehouse Builder,并進(jìn)入管理部分??梢匀缦?種方式實(shí)現(xiàn)。1. 輸入用戶名及口令后,在“選擇要打開得項(xiàng)目”處,點(diǎn)擊“取消”,就進(jìn)入管理部分。 2. 輸入用戶名及口令后,在“選擇要打開得項(xiàng)目”處,隨便選一個(gè)項(xiàng)目打開,然后使用控制臺(tái)點(diǎn)擊“管理”按鈕進(jìn)行切換,就進(jìn)入管理部分。在管理部分:1. 高亮度“項(xiàng)目”然后點(diǎn)鼠標(biāo)右鍵,選擇“創(chuàng)建項(xiàng)目”。(或者到管理菜單中選擇“創(chuàng)建項(xiàng)目”)2. 給出一個(gè)名字,如“Xweek”3. 選擇項(xiàng)目版本標(biāo)簽號(hào)(例如Xweek)4. 點(diǎn)擊完成按鈕提交5. 切換項(xiàng)目

9、到新項(xiàng)目?,F(xiàn)在就在該項(xiàng)目下開始工作。環(huán)境整個(gè)培訓(xùn)都是基于Oracle9i中生成的用戶對(duì)象。以下為包括這些表的對(duì)象列表。Order Entry用戶名:OE口令:OE (default)表名-CUSTOMERSINVENTORIESORDERSORDER_ITEMSPRODUCT_DESCRIPTIONSPRODUCT_INFORMATIONPRODUCT_REF_LIST_NESTEDTABSUBCATEGORY_REF_LIST_NESTEDTABWAREHOUSESHuman Resources用戶名:HR口令:HR (default)TABLE_NAME-COUNTRIESDEPARTME

10、NTSEMPLOYEESJOBSJOB_HISTORYLOCATIONSREGIONSCustomer Addresses顧客地址存儲(chǔ)在以逗號(hào)分割的平面文件中。文件名為Customer_address.txt,存儲(chǔ)在文件夾XweekSourceFiles中。 驅(qū)動(dòng)器為你解壓zip文件的驅(qū)動(dòng)器。文件格式:Customer ID,Streetname and number,Zip/postal Code,City Name,State/Province Code,CountryCode例子:101,514 W Superior St,46901,Kokomo,IN,US 102,2515 Bloy

11、d Ave,46218,Indianapolis,IN,US 103,8768 N State Rd 37,47404,Bloomington,IN,US 104,6445 Bay Harbor Ln,46254,Indianapolis,IN,US 105,4019 W 3Rd St,47404,Bloomington,IN,US 106,1608 Portage Ave,46616,South Bend,IN,US852,1539 Stripes Rd,3413,Baden-Daettwil,AG,CH 853,1540 Stripes Crt,3413,Baden-Daettwil,AG

12、,CH 905,1592 Silverado St,361123,Bangalore,Kar,IN 906,1593 Silverado St,361112,Bangalore,Kar,IN Module 2 創(chuàng)建數(shù)據(jù)源導(dǎo)入數(shù)據(jù)源元數(shù)據(jù)在本培訓(xùn)的第一部分,主要講述定義數(shù)據(jù)源對(duì)象的結(jié)構(gòu)。定義數(shù)據(jù)源對(duì)象的結(jié)構(gòu)包括如下行為:· 定義和創(chuàng)建針對(duì)平面文件的數(shù)據(jù)源模塊· 定義和創(chuàng)建針對(duì)關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)源模塊· 從數(shù)據(jù)源對(duì)象導(dǎo)入元數(shù)據(jù)到數(shù)據(jù)源模塊在下面的段落中,將定義企業(yè)數(shù)據(jù)倉庫和隨之產(chǎn)生的數(shù)據(jù)集市的結(jié)構(gòu)。創(chuàng)建模塊,導(dǎo)入平面文件本練習(xí)中,將創(chuàng)建平面文件模塊,然后導(dǎo)入custo

13、mers 文件。將包括連接到后面customers 表的地址列。1. 在項(xiàng)目樹中創(chuàng)建新模塊,命名為SourceFiles2. 選擇Generic File Based Application類型 3. 選中“繼續(xù)導(dǎo)入元數(shù)據(jù)向?qū)А睓?4. 在向?qū)е羞x擇文件customer_address.txt 5. 抽樣 6. 對(duì)各列重新命名如下:C1Customer_IDC2StreetC3PostalCodeC4CityC5StateCodeC6CountryCode7. 其他3個(gè)文件命名如下:CusSource1Customer1.txtC1FnameC2LnameC3MiddinitialC4Phon

14、ehomeC5Address1C6Address2C7CityC8StateC9ZipC10PhonebC11CellphoneOrder_status_list.txtC1Status_CodeC2Status_DescSuppliers_list.txtC1Supplier_IDC2Supplier_nameC3Status8. 完成該向?qū)Р⑻峤辉獢?shù)據(jù)。創(chuàng)建Order Entry模塊并導(dǎo)入表1. 在項(xiàng)目樹中,創(chuàng)建新模塊,命名Oracle_OE。2. 選擇Generic Oracle Database Application 作為模塊類型,Oracle 8i/9i 為數(shù)據(jù)庫版本。3. 使用O

15、racle Data Dictionary 并創(chuàng)建數(shù)據(jù)庫鏈路 (點(diǎn)擊創(chuàng)建新數(shù)據(jù)庫鏈路按鈕)a. 名字:OELinkb. 輸入hostname, port and SID:本例中為localhost,1521,orclc. 用戶名,口令 (OE/OE)d. 點(diǎn)擊創(chuàng)建并測(cè)試4. 選中 “繼續(xù)導(dǎo)入元數(shù)據(jù)向?qū)А?. 選擇全部對(duì)象導(dǎo)入6. 完成導(dǎo)入。7. 提交元數(shù)據(jù)。創(chuàng)建Human Resources 模塊并導(dǎo)入表8. 在項(xiàng)目樹中,創(chuàng)建新模塊,命名Oracle_HR。9. 選擇Generic Oracle Database Application 作為模塊類型,Oracle 8i/9i 為數(shù)據(jù)庫版本。1

16、0. 使用Oracle Data Dictionary 并創(chuàng)建數(shù)據(jù)庫鏈路 (點(diǎn)擊創(chuàng)建新數(shù)據(jù)庫鏈路按鈕)a. 名字:HRLinkb. 輸入hostname, port and SID:本例中為localhost,1521,orclc. 用戶名,口令 (HR/HR)d. 點(diǎn)擊創(chuàng)建并測(cè)試11. 選中 “繼續(xù)導(dǎo)入元數(shù)據(jù)向?qū)А?2. 選擇全部對(duì)象導(dǎo)入13. 完成導(dǎo)入。1. 提交元數(shù)據(jù)上面導(dǎo)入了數(shù)據(jù)源元數(shù)據(jù),基于這些數(shù)據(jù)源,我們將創(chuàng)建數(shù)據(jù)倉庫對(duì)象并從這些表中抽取數(shù)據(jù)。Module 3 設(shè)計(jì)數(shù)據(jù)倉庫數(shù)據(jù)倉庫設(shè)計(jì)包括一個(gè)數(shù)據(jù)倉庫方案(即用戶)及一個(gè)中間區(qū),用于分段傳輸(staging)信息。創(chuàng)建分段傳輸區(qū)(S

17、taging Area)一個(gè)分段傳輸區(qū)是存放臨時(shí)數(shù)據(jù)的地方以用于進(jìn)一步處理。使用Oracle 9i ETL 新的特性,例如外部表(External Tables),該區(qū)變得多余了。本練習(xí)示范老代碼的使用(e.g. 使用SQL*Loader裝載數(shù)據(jù))及使用外部表(External Tables)的新的方式。 建議兩個(gè)練習(xí)都做,因?yàn)閃arehouse Builder也支持Oracle 8.1.7數(shù)據(jù)庫目標(biāo)(現(xiàn)在有許多這種應(yīng)用)。創(chuàng)建模塊及數(shù)據(jù)對(duì)象Staging area 包括許多由用戶創(chuàng)建的表。下述步驟創(chuàng)建staging 模塊、表及映射:1. 創(chuàng)建模塊,命名為Staging2. 選擇數(shù)據(jù)倉庫目標(biāo)類

18、型,其他默認(rèn)。3. 提交該元數(shù)據(jù)。4. 打開剛創(chuàng)建的模塊。5. 創(chuàng)建新的映射(命名為stg_customer_address_map) 并最大化編輯器。6. 拖取映射平面文件圖標(biāo)到畫布上,從列表中選擇customer_address_txt 文件。7. 拖取“映射表”圖標(biāo)到畫布上,選擇第一項(xiàng) “創(chuàng)建未綁定的映射表(不具有屬性)”對(duì)話框。 8. 輸入該新映射表的名字(stg_cust_addresses)9. 使用自動(dòng)映射映射整個(gè)平面文件到 stg_cust_addresses (選擇缺省項(xiàng)后點(diǎn)擊開始)10. 確認(rèn)列的數(shù)據(jù)類型是正確的。 (請(qǐng)使用varchar2 代替char類型) 11. 為了

19、在存儲(chǔ)中建立該表,在對(duì)象stg_cust_addresses的頭上點(diǎn)擊右鍵,選擇協(xié)調(diào)出站(reconcile outbound) 12. 在警告對(duì)話框上點(diǎn)擊“確定”。13. 選擇第一項(xiàng),“創(chuàng)建新的表” 并選擇Staging,其為唯一的缺省值選項(xiàng)。14. 關(guān)閉該映射并提交元數(shù)據(jù)。15. 此時(shí)在存儲(chǔ)庫中即有了新的表和新的映射,對(duì)兩者進(jìn)行校驗(yàn)。16. 后面我們將回到該映射并運(yùn)行它。到此為止,該映射就完成了。其他Staging表和映射此處不再枚舉。除上面的方法外,我們也可以使用創(chuàng)建表的向?qū)?chuàng)建新表,然后逐一輸入列名。另外一種創(chuàng)建對(duì)象stg_cust_addresses 的方法是是適用外部表(Exter

20、nal Table)功能。實(shí)現(xiàn)該方式如下所示:1. Log into SQL*Plus as SYSDBA,以便于建立新用戶2. 創(chuàng)建用戶名:Wh_Xweek 及口令 (Wh_Xweek)3. 授予用戶 DBA 權(quán)限(此處為簡(jiǎn)便使用,在現(xiàn)實(shí)世界中應(yīng)謹(jǐn)慎使用)4. 從 OE 用戶, 將orders表select權(quán)限授予給Wh_Xweek用戶 (grant select on orders to wh_xweek;)5. 連接到該用戶6. 從平面文件customer_address.txt創(chuàng)建外部表。 a. 在數(shù)據(jù)庫中創(chuàng)建目錄Create directory xweek_files as c:xw

21、eeksourcefiles;b. 創(chuàng)建外部表定義CREATE TABLE stg_cust_addresses_ext (CUSTOMER_ID NUMBER,STREET VARCHAR2(27),POSTALCODE NUMBER,CITY VARCHAR2(16),STATECODE VARCHAR2(4),COUNTRYCODE VARCHAR2(2)ORGANIZATION EXTERNAL(TYPE oracle_loader DEFAULT DIRECTORY xweek_files LOCATION ('customer_address.txt')REJECT

22、 LIMIT UNLIMITED;7. 在Warehouse Builder 中導(dǎo)入該表。8. 此時(shí),在Warehouse Builder 中有了2個(gè)顧客地址表,一個(gè)用于staging 表,用于SQL*Loader裝載數(shù)據(jù),另外一個(gè)是利用外部表來訪問。兩者都在后面映射中使用。9. 提交元數(shù)據(jù)。我們?cè)趕taging區(qū)創(chuàng)建一個(gè)視圖用于轉(zhuǎn)換時(shí)間標(biāo)記列為常規(guī)日期。1. 在Staging 模塊中創(chuàng)建新視圖。2. 命名該視圖為 stg_orders 并添加適當(dāng)列,如下:3. 設(shè)定查詢,并確認(rèn)列的順序如上所述。select order_id, to_date( to_char(order_date , &#

23、39;DD-MON-YYYY HH24:MI:SS' ) , 'DD-MON-YYYY HH24:MI:SS' ) order_date, order_mode, customer_id, case order_status when 0 then 'ENT' when 1 then 'VER' when 2 then 'BKD' when 3 then 'BIL' when 4 then 'SPD' when 5 then 'HOL' when 6 then 'CC

24、K' when 7 then 'DMG' when 8 then 'RET' when 9 then 'INV' when 10 then 'CAN' else 'NON' end, order_total, sales_rep_id, promotion_idfrom oe.orders4. 提交元數(shù)據(jù)。第3個(gè)對(duì)象是基于平面文件,用于未來維的源數(shù)據(jù)表。可以使用前面所述stg_cust_addresses中兩種機(jī)制中的任一種方式創(chuàng)建。1. 在模塊 staging 中創(chuàng)建一個(gè)表,用于存儲(chǔ)從文件 “Order_

25、status_list.txt” 中的信息,命名為stg_order_status,命名映射為 stg_ord_stat_map(如果采用該種方式創(chuàng)建)。 2. 列名Status_CodeStatus_Desc3. 確認(rèn)表中列的數(shù)據(jù)類型正確。(將 Char 改為 Varchar2)4. 提交元數(shù)據(jù)。第四個(gè)對(duì)象也用于未來維的源數(shù)據(jù)表。可以使用前面所述stg_cust_addresses中兩種機(jī)制中的任一種方式創(chuàng)建。1. 在模塊 staging 中創(chuàng)建一個(gè)表,用于存儲(chǔ)從文件 “Suppliers_list.txt” 中的信息,命名為stg_suppliers,命名映射為 stg_suppliers

26、_map(如果采用該種方式創(chuàng)建)。2. 列名取名為:supplier_IDSupplier_NameStatus3. 確認(rèn)表中列的數(shù)據(jù)類型正確。(將 Char 改為 Varchar2)4. 提交元數(shù)據(jù)。創(chuàng)建數(shù)據(jù)倉庫模型在本部分,我們主要討論定義目標(biāo)數(shù)據(jù)倉庫對(duì)象結(jié)構(gòu)。該數(shù)據(jù)倉庫是簡(jiǎn)單的星型模型,數(shù)據(jù)來源于用戶 OE, HR 及 Staging 模塊。 主要關(guān)心的是Order 及 Inventory 信息。該星型模型不保存詳細(xì)訂單信息,也就意味著訂單詳細(xì)在本數(shù)據(jù)倉庫中沒有。簡(jiǎn)化有時(shí)是一種商業(yè)分析的需要。事實(shí)表(Fact tables)orders的事實(shí)表 (name: Orders) 收集有關(guān)定單

27、的信息。包含以下度量(measures):QuantityNumberAmountNumber該事實(shí)表的相關(guān)維為:ProductsTimes (use Smart Key PK on day level)CustomersSalesRepsOrderStatusInventory 事實(shí)表(name: Inventory) 保存有關(guān)產(chǎn)品庫存的信息,包含以下度量(measures):Quantity_on_Hand該事實(shí)表的相關(guān)維為(全部都是最低層次level與缺省值):ProductsTime (use Smart Key PK on day level)WarehousesSuppliers維

28、(Dimensions)從事實(shí)表看出,數(shù)據(jù)倉庫中需要建立7個(gè)維表。為簡(jiǎn)便起見,各層次在屬性上比較緊湊。以下描述了各維的詳細(xì)信息:* 標(biāo)有星號(hào)的屬性為關(guān)鍵域,缺省被命名為ID 。將其改名為如下所示。維表名維前綴ProductsPDLevel NameLevel PrefixCategoryCTProductPRLevel NameAttribute Datatype/LengthCategory*Prod_CategoryNumberProd_Cat_NameVarchar2(50)Prod_Cat_DescVarchar2(1000)Product*Prod_IDNumber Prod_Nam

29、eVarchar2(125)Prod_DescVarchar2(2000)Prod_List_PriceNumber (precision 8,scale 2)Prod_Min_PriceNumber (precision 8, scale 2)Hierarchy NameHierarchy PrefixProd_RollupProd_RollupHierarchy NameLevelsProd_RollupCategoryProduct維表名維前綴Order_StatusOSLevel NameLevel PrefixStatusSTLevel NameAttribute Datatype/

30、LengthStatus*Status_IDNumberStatus_CodeVarchar2(3)Status_DescVarchar2(15)Hierarchy NameHierarchy PrefixStat_RollupStat_RollupHierarchy NameLevelsStat_RollupStatus維表名維前綴WarehousesWHLevel NameLevel PrefixWarehouseWHLocationLNCountryCTLevel NameAttribute Datatype/LengthCountry*Country_IDVarchar2(2)Coun

31、tryVarchar2(50)Location*Location_IDNumberStreetVarchar2(40)Postal_codeVarchar2(12)CityVarchar2(40)State_ProvinceVarchar2(30)Warehouse*WH_IDNumber WarehouseVarchar2(50)Hierarchy NameHierarchy PrefixWH_RollupWH_RollupHierarchy NameLevelsWH_RollupCountryLocationWarehouse維表名維前綴CustomersCSLevel NameLevel

32、 PrefixCountryCTCustomerCSLevel NameAttribute Datatype/LengthCountry*Country_IDVarchar2(2)CountryVarchar2(50)Customer*Cust_IDNumber Cust_First_NameVarchar2(40)Cust_Last_NameVarchar2(40)StreetVarchar2(40)Postal_codeVarchar2(12)CityVarchar2(40)State_ProvinceVarchar2(30)Account_MgrVarchar2(25)Hierarchy

33、 NameHierarchy PrefixCust_RollupCust _RollupHierarchy NameLevelsCust _RollupCountryCustomer維表名維前綴Sales_RepsSRLevel NameLevel PrefixSales_RepSRCountryCTRegionRGLevel NameAttribute Datatype/LengthCountry*Country_IDVarchar2(2)CountryVarchar2(50)Region*Region_IDNumberRegionVarchar2(40)Sales_Rep*SalesRep

34、_IDNumber First_NameVarchar2(50)Last_NameVarchar2(50)ManagerVarchar2(50)DepartmentVarchar2(50)Hierarchy NameHierarchy PrefixSalesRep_RollupSalesRep_RollupHierarchy NameLevelsSalesRep_RollupRegionCountrySales_Rep維表名維前綴SuppliersSPLevel NameLevel PrefixSupplierSPLevel NameAttribute Datatype/LengthSuppl

35、ier*Supplier_IDNumberSupplier_NameVarchar2(35)Supplier_StatusVarchar2(10)Hierarchy NameHierarchy PrefixSupp_RollupSupp_RollupHierarchy NameLevelsSupp_RollupSuppliers最后需要?jiǎng)?chuàng)建的維是時(shí)間維。 使用Warehouse Builder向?qū)?chuàng)建,最低級(jí)別為Day,可以選擇你希望看到得時(shí)間維,如季、月。所有命名都是標(biāo)準(zhǔn)的??梢栽跁r(shí)間維上創(chuàng)建多種層次。創(chuàng)建維表與事實(shí)表為了輸入上面提到的信息,需要首先創(chuàng)建一個(gè)新的模塊,命名為Warehouse

36、。打開該模塊并:1. 在維節(jié)點(diǎn),選擇創(chuàng)建維,然后利用向?qū)?chuàng)建維。2. 在創(chuàng)建完每一個(gè)維后,進(jìn)行提交3. 作為創(chuàng)建維的最后一步,記得用向?qū)?chuàng)建一個(gè)時(shí)間維。4. 同樣也要提交。5. 創(chuàng)建兩個(gè)事實(shí)表,在事實(shí)表節(jié)點(diǎn),利用向?qū)?chuàng)建6. 記住要在維的最低層次上進(jìn)行鏈接7. 將外鍵重命名為描述性的名字(也可直接用默認(rèn)值)8. 選中從外關(guān)鍵字創(chuàng)建分段的唯一關(guān)鍵字。 9. 提交至此就完成了數(shù)據(jù)源、分段傳輸區(qū)及目標(biāo)數(shù)據(jù)倉庫的工作。下一步我們將創(chuàng)建映射以完成數(shù)據(jù)從數(shù)據(jù)源到數(shù)據(jù)倉庫的工作。Module 4: 建立映射及轉(zhuǎn)換Warehouse Builder 允許在存儲(chǔ)庫中創(chuàng)建、導(dǎo)入及維護(hù)PL/SQL。本模塊將展示如何

37、做并在映射中利用它。映射將在本模塊的后半部分練習(xí)。創(chuàng)建 PL/SQL Function1. 為了創(chuàng)建一個(gè)函數(shù)(function),在Warehouse 模塊中,打開轉(zhuǎn)換庫,點(diǎn)鼠標(biāo)右鍵創(chuàng)建一個(gè)新的function 2. 命名為GET_TIME_ID3. 不要設(shè)定輸入?yún)?shù),點(diǎn)擊 。4. 在窗口中輸入如下代碼,部分內(nèi)容已按照格式給出,粗體部分為添加進(jìn)去的。:-initialize variables herev_return number;- main bodyBEGIN select da_id into v_return from TIMES where times.da_actual_date

38、 = sysdate; RETURN v_return;END;5. 保存,提交。導(dǎo)入一個(gè)已經(jīng)存在的過程(Procedure)1. 為了在Warehouse Builder中重用已經(jīng)存在的PL/SQL 代碼,進(jìn)入需要使用存儲(chǔ)過程的模塊中選擇導(dǎo)入,本例中,導(dǎo)入Warehouse 模塊2. 創(chuàng)建一個(gè)指向HR的新的數(shù)據(jù)庫鏈路以導(dǎo)入數(shù)據(jù)。3. 選擇導(dǎo)入,并只選中PL/SQL轉(zhuǎn)換。4. 將會(huì)看到兩個(gè)對(duì)象。選擇導(dǎo)入其中的一個(gè)或兩個(gè)。5. 驗(yàn)證導(dǎo)入6. 可選擇“添加到共享庫”創(chuàng)建映射裝載數(shù)據(jù)下面我們創(chuàng)建映射將數(shù)據(jù)從不同數(shù)據(jù)源將數(shù)據(jù)抽取到數(shù)據(jù)倉庫。首先是將數(shù)據(jù)裝載入維表,然后再是事實(shí)表。映射維首先創(chuàng)建產(chǎn)品Pr

39、oducts維。下面描述創(chuàng)建數(shù)據(jù)源到數(shù)據(jù)目標(biāo)的映射。ProductsSource objects:Table:OracleOE.Product_InformationTable:OracleOE.Categories_tabTarget:Dimension:Warehouse.ProductsMapping Activities:1. 在Warehouse模塊中創(chuàng)建維 wh_products_map 2. 添加合適的數(shù)據(jù)操作符3. 連接全部的列到j(luò)oiner4. 對(duì)于兩個(gè)數(shù)據(jù)源基于category_id進(jìn)行連接 5. 從joiner連接相應(yīng)的列到目標(biāo)維各列6. 設(shè)置裝載類型為INSERT/UP

40、DATE7. 驗(yàn)證并查看報(bào)告8. 提交映射.提示: The Update: 用于裝載數(shù)據(jù)必須設(shè)為NO,以產(chǎn)生merge codeOrder_StatusSource objects:Table:Staging.stg_order_statusSequence:Warehouse.wh_orderstat_seqTarget:Dimension:Warehouse.Order_StatusMapping Activities:1. 在Warehouse模塊中創(chuàng)建維wh_ord_stat_map2. 添加合適的數(shù)據(jù)操作符3. 添加序列 wh_orderstat_seq (在映射中創(chuàng)建完后將在新的存

41、儲(chǔ)庫中創(chuàng)建一個(gè)新的序列,或者,事先創(chuàng)建好該序列,然后在映射中引用它)4. 映射合適的列到維中5. 設(shè)置加載類型為 INSERT/UPDATE(鼠標(biāo)右鍵點(diǎn)擊維order_status標(biāo)題,選擇運(yùn)算符屬性,如圖)6. 在運(yùn)算符屬性中選擇“無約束條件”。 7. 驗(yàn)證映射,檢查報(bào)告8. 提交映射提示: The Update: 用于裝載數(shù)據(jù)必須設(shè)為NO,以產(chǎn)生merge code。注: 當(dāng)使用外部表時(shí),能看到不分段傳輸?shù)膬?yōu)點(diǎn)。平面文件可立即從Warehouse映射中訪問,能被join到其他對(duì)象中去。WarehousesSource objects:Table:OracleOE.WarehousesTab

42、le:OracleHR.LocationsTable:OracleHR.CountriesTarget:Dimension:Warehouse.WarehousesMapping Activities:1. 在Warehouse模塊中創(chuàng)建維wh_warehouses_map 2. 添加合適的數(shù)據(jù)操作符3. 將合適的列添加到連接運(yùn)算符 joiner4. 根據(jù)location_id 及 country_id 進(jìn)行join。5. 連接joiner 到目標(biāo)維列6. 設(shè)置裝載類型為INSERT/UPDATE 7. 驗(yàn)證并查看報(bào)告8. 提交映射提示: The Update: 用于裝載數(shù)據(jù)必須設(shè)為NO,以產(chǎn)

43、生merge code。CustomersSource objects:Table:OracleOE.CustomersTable:Staging.stg_cust_addressesOr Staging.stg_cust_addresses_extTable:OracleHR.CountriesLookup:OracleHR.employeesTarget:Dimension:Warehouse.CustomersMapping Activities:1. 在Warehouse模塊中創(chuàng)建維wh_customers_map2. 添加合適的數(shù)據(jù)操作符3. 對(duì)customers創(chuàng)建關(guān)鍵字查找, ,

44、以決定顧客的客戶經(jīng)理名a. Lookup表為OracleHR.Employeesb. 添加lookup運(yùn)算符 c. 在account_mgr_id 及employee_id 間創(chuàng)建匹配條件(選擇 EMP_EMP_ID_PK)d. 將OracleHR.Employee.last_name 輸出到運(yùn)算符joiner 列4. 匹配其他合適列到j(luò)oiner運(yùn)算符5. 根據(jù)customer_id 及country_id/countrycode連接數(shù)據(jù)源對(duì)象 6. 連接joiner運(yùn)算符其他列到目標(biāo)維中7. 通過joiner運(yùn)算符在stg_cust_addresses_ext.postalcode與CS_

45、POSTAL_CODE間添加TO_CHAR轉(zhuǎn)換并確保轉(zhuǎn)換正確。8. 設(shè)置裝載類型為INSERT/UPDATE 9. 驗(yàn)證并查看報(bào)告10. 提交映射提示: The Update: 用于裝載數(shù)據(jù)必須設(shè)為NO,以產(chǎn)生merge code。注: 當(dāng)使用外部表時(shí),能看到不分段傳輸?shù)膬?yōu)點(diǎn)。平面文件可立即從Warehouse映射中訪問,能被join到其他對(duì)象中去。Sales_RepsSource objects:Table:OracleOE.OrdersTable:OracleHR.EmployeesTable:OracleHR.CountriesTable:OracleHR.RegionsTable:Or

46、acleHR.LocationsTable: OracleHR.DepartmentsLookup:OracleHR.EmployeesTarget:Dimension:Warehouse.Sales_RepsMapping Activities:1. 在Warehouse模塊中創(chuàng)建維 wh_SalesReps_map2. 添加第一個(gè)運(yùn)算符的數(shù)據(jù)操作符集。a. OracleHR.Countriesb. OracleHR.Regionsc. OracleHR.Locationsd. OracleHR.Departments3. 添加合適的列到第一個(gè)joiner運(yùn)算符4. 基于location_i

47、d、country_id 及 region_id 連接數(shù)據(jù)源對(duì)象。5. 添加第二個(gè)運(yùn)算符的數(shù)據(jù)操作符集a. OracleOE.Orders b. OracleHR.Employees6. 添加合適的列到第二個(gè)joiner運(yùn)算符7. 基于sales_rep_id = employee_id連接數(shù)據(jù)源。8. 添加第三個(gè)joiner 運(yùn)算符,并從2個(gè)joiner 運(yùn)算符連接目標(biāo)需要的列到第三個(gè)joiner9. 基于department_id創(chuàng)建連接條件。10. 創(chuàng)建lookup 運(yùn)算符,為每一個(gè)sales_rep查找managers名字,使用OracleHR_Employees為lookup表,重命

48、名為運(yùn)算符 MGR_LOOKUP11. 創(chuàng)建 EMP_EMP_ID_PK 上的lookup 條件,連接維last_name 到維manager列12. 從第三個(gè)joiner 運(yùn)算符連接到目標(biāo)維13. 設(shè)置裝載類型為INSERT/UPDATE 14. 驗(yàn)證并查看報(bào)告15. 提交映射提示: The Update: 用于裝載數(shù)據(jù)必須設(shè)為NO,以產(chǎn)生merge code。SuppliersSource objects:Table:Staging.stg_suppliersTarget:Dimension:Warehouse.SuppliersMapping Activities:1. 在Warehou

49、se模塊中創(chuàng)建維 wh_suppliers_map2. 添加合適的數(shù)據(jù)操作符3. 映射合適的列到目標(biāo)4. 設(shè)置裝載類型為INSERT/UPDATE 5. 驗(yàn)證并查看報(bào)告6. 提交映射提示: The Update: 用于裝載數(shù)據(jù)必須設(shè)為NO,以產(chǎn)生merge code。注: 當(dāng)使用外部表時(shí),能看到不分段傳輸?shù)膬?yōu)點(diǎn)。平面文件可立即從Warehouse映射中訪問,能被join到其他對(duì)象中去。Times時(shí)間維的數(shù)據(jù)在創(chuàng)建時(shí)即根據(jù)其配置屬性產(chǎn)生了,無需再為時(shí)間維創(chuàng)建映射裝載數(shù)據(jù)。映射事實(shí)表事實(shí)表映射一般來說比維表映射要復(fù)雜一些。下面描述了建立事實(shí)映射的一般性的做法。Inventory 事實(shí)表數(shù)據(jù)源:表:

50、OracleOE.Inventories視圖:OracleOE.Products函數(shù):Warehouse.Get_Time_Id維:Warehouse.Suppliers (as lookup)維:Warehouse.Products (as lookup)維:Warehouse.Warehouses (as lookup)目標(biāo):事實(shí)表:Warehouse.Inventory建立映射:1. 在Warehouse模塊中創(chuàng)建名為wh_inventory_map 的映射2. 將表OracleOE.Inventories和視圖OracleOE.Products添加到映射中3. 使用product_id

51、連接2個(gè)數(shù)據(jù)源4. 一條對(duì)數(shù)據(jù)清洗的商業(yè)規(guī)則是:沒有供應(yīng)商的存貨數(shù)據(jù)不能裝入數(shù)據(jù)倉庫。因此,如下:a. 建立一個(gè)針對(duì)supplier維的lookupb. 從join連接supplier id到該lookup運(yùn)算符。c. 當(dāng)沒有找到時(shí),將Inventory中的記錄劈分(split)到一個(gè)錯(cuò)誤表中(該表必須創(chuàng)建,并命名為wh_inventory_error)d. 當(dāng)找到時(shí),則將數(shù)據(jù)移入事實(shí)表e. 確信兩個(gè)表都有時(shí)間戳time stamp id (先前創(chuàng)建的函數(shù)GET_TIME_ID 就能被兩個(gè)表用于獲取time_id)5. 另一條對(duì)數(shù)據(jù)清洗的商業(yè)規(guī)則是:當(dāng)Inventory 中的值沒找到時(shí)給warehouse中附一個(gè)缺省值。6. 用 1 作為缺省值,這在本練習(xí)的后面實(shí)現(xiàn)。7. 利用求和(SUM)對(duì)Quantity-on-Hand 進(jìn)行聚集運(yùn)算,只針對(duì)事實(shí)表裝載做聚集,不要對(duì)錯(cuò)誤記錄表做。(因?yàn)槟阋坏┻@么做,則所有記錄錯(cuò)誤的詳細(xì)信息將丟失)8. 不要忘了協(xié)調(diào)新的錯(cuò)誤表,以在存儲(chǔ)中創(chuàng)建它。(確保是在 Warehouse 模塊中)9. 設(shè)置事實(shí)表為 INSERT/UPDATE ,錯(cuò)誤記錄表為INSERT狀態(tài)。10. 驗(yàn)證該映射,并改正可能出現(xiàn)的錯(cuò)誤11. 提交工作.Orders FactSourc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論