《Oracle9i Warehouse Builder培训资料.docx》由会员分享,可在线阅读,更多相关《Oracle9i Warehouse Builder培训资料.docx(44页珍藏版)》请在课桌文档上搜索。
1、0rac1.e9iWarehouseBui1.der培训资料提交人:Orac1.eSa1.esConsu1.tant提交日期:版本号:v1.0文档控制变更记录日期作者版本号变更参考文件OCT30,2002闵文杰VI.0审阅日期姓名职位简介5提纲5前提6培训目标6反应与意见6Modu1.e1:在WarehOUSeBUi1.der中设置环境8开始8环境9Modu1.e2创立数据源11导入数据源元数据HModu1.e3设计数据仓库15创立分段传输区(StagingArea)15创立数据仓库模型19Modu1.e4:建立映射及转换24创立P1./SQ1.Function24导入一个巳经存在的过程(Pr
2、ocedure)24创立映射装载数据25Modu1.e5:配置,部署及运行34环境34配置34部署对象38运行数据装载38Modu1.e6:生命周期管理40将数据源元数据的变化反映到OWB存储中40对于目标的变化管理42Modu1.e7:元数据报告43从WarehoUSeBui1.der客户端看43简介Orac1.e9/WarehouseBui1.der(OWB)是OraCIe完整智能解决方案中的一局部。其作用主要是完成数据仓库的设计及抽取、转换、装载设计(EX1.ract,Transformand1.oadET1.)与生成O可以设计OraCIeDiSCOVerer的EndUSer1.ayer
3、并与Orac1.e9/数据库紧密集成。提纲本资料的目标是例示OWB的功能,因此中间没有什么重复工作,在某些方面较为简洁。另外,本资料没有论述如何建立数据仓库的模型及如何进行性能优化,该局部内容请参考相关OraC1.e资料。本资料分为以下几个局部,每一个针时OWB的一特定领域。 Modu1.e1:建立环境该模块描述如何建立环境。也给出了一些源数据的详细数据结构。 Modu1.e2:建立数据源该模块让用户建立基于9i数据库种子对象得源数据模块。该步骤仅是整个解决方案中的第一步。在后面的阶段,我们将回头来改变数据源对象,以举例显示生命周期管理。 Modu1.e3:设计数据仓库该模块显示WarehOU
4、SeBUi1.der创立表、视图、方案的一些特征。在此局部我们将练习创立事实表及维。完成这些工作后,就能将数据载入这些结构中定下数据仓库。 Modu1.e4:设计映射与转换模型OWB的核心功能是基于ET1.过程,转换及进行它们的设计。本模块将展示如何利用OWB映射设计工具完成这些过程的设计。将充分利用前面在(MB中定义好的数据源与数据目标,允许客户化P1./SQ1.开发辅助数据转换。也将看到如何重用P1./SQ1.。 Modu1.e5:配置,部署,运行在设计完数据仓库后,下一步当然就是在数据库中安装它,并载入数据。本模块将展示如何配置在前面中创立的模块,并运行映射,载入数据。 Modu1.e6
5、:生命周期管理数据仓库是一个一直在进化的系统。为了处理数据源及数据目标的变化,OWB提供了用户数据源协调及数据仓库升级的手段。本局部将展示这些内容。 Modu1.e7:元数据报告本模块是可选做的一局部,因为必须安装OraCIe9iS并正确配置。元数据报告模块将展示OWBBrowSer的能力。该浏览器可以进行线性分析、影响分析及更多的报表。前提为完本钱培训,必须满足以下几点前提:1 .安装OraCIe9/数据库2 .安装WarehOUSeBUiIder及存储库3 .有足够的权限以授予权限,创立用户,安装运行时,如果需要的话,还安装Browser4 .企业管理器并设置,以能从OEM中调度job5
6、.Orac1.eWOrkfIOWSet安装并设置以能创立工作流6 .安装9iAS及Porta1,如果练习元数据报告的话7 .有一定的WarehOUSeBUi1.der根本概念知识8 .有一定的OraCIe9i数据库概念9 .有一定的OraC1.e9iET1.概念10 .有一定的SQ1.及P1./SQ1.知识,才能在你自己的环境下写出客户化的代码培训目标本培训的几个目标是:1 .对WarehOUSeBui1.der的能力有一个综合认识2 .利用WarehoUSeBui1.der进行一个完整的设计、部署及运行周期反应与意见若对本培训资料有何意见,请将意见反应给我们,以便我们改良和提高。请联系:闵文
7、杰技术咨询参谋Modu1.e1:在WarehoUSeBUi1.der中设置环境为开始始用WarehOUSeBui1.der,我们首先必须创立一个工程(project).我们取工程名XWEEK。开始将XWeek.zip文件移动到本地硬盘并解压。假设在C盘上,你也可以放在其他磁盘上,解压完后,将有如下目录:CXweek-SourceFiIesSQ1.Scripts建好这些目录后,开始进入WarehoUSeBUi1.dero登陆到WarehOUSeBui1.der,并进入管理局部。可以如下2种方式实现。1 .输入用户名及口令后,在“选择要翻开得工程”处,点击取消,就进入管理局部。V4jp使用OTdC
8、iewarehouse逢簿要打开的口修曲用;(g()m(oj高亮度“工程”然后点鼠标右键,选择“创立工程”。(或者到管理菜单中选择“创立工程”)2 .输入用户名及口令后,在“选择要翻开得工程”处,随便选一个工程翻开,然后使用控制台点击“管理”按钮进行切换,就进入管理局部。在管理局部:1.3 .给出一个名字,如Xweek4 .选择工程版本标签号(例如XWeek)5 .点击完成按钮提交6 .切换工程到新工程。现在就在该工程下开始工作。环境整个培训都是基于OraCIe9i中生成的用户对象。以下为包括这些表的对象列表。OrderEntry用户名:OE口令:OE(defau1.t)表名CUSTOMERS
9、INVENTORIESORDERSORDERTEMSPROD1.CDESCRIPTIONSPRoDIc1.informationPRODUCT1.Refjjs1.nestedtabSUBCATEGORYREF1.ISTKESTEDTABWAREHOUSESHumanResources用户名:HR口令:HR(defau1.t)TAB1.ENAMECOUNTRIESDEPARTMENTSEMP1.OYEESJOBSJOBHISTORY1.OCATIONSREGIONSCustomerAddresses顾客地址存储在以逗号分割的平面文件中。文件名为CUStomer_address.txt,存储在文件
10、夹XweekSourceFiIes中。驱动器为你解压ZiP文件的驱动器。文件格式:CustomerID1Streetnameandnumber,Zip/posta1.Code1CityNametStateZProvinceCodefCountryCode例子:101,514WSuperiorSt,46901,Kokomo,IN,US102,2515B1.oydAve,46218,Indianapo1.is,IN,US103,8768NStateRd37,47404,B1.oomington,IN,US104,6445BayHarbor1.n,46254,Indianapo1.is,IN,US1
11、05,4019W3RdSt,47404,B1.oomington,IN,US106,1608PortageAve,46616,SouthBend,TN,US852,1539StripesRd,3413,Baden-Dae11wi1,AG,CH853.1540StripesCrt,3413.Baden-DaettwiI1AG1CH905.1592Si1.veradoSt.361123.Banga1.ore.Kar.IN906,1593Si1.veradoSt.361112.Banga1.ore.Kar.IN导入数据源元数据在本培训的第一局部,主要讲述定义数据源对象的结构。定义数据源对象的结构包括
12、如下行为: 定义和创立针对平面文件的数据源模块 定义和创立针对关系型数据库的数据源模块 从数据源对象导入元数据到数据源模块在下面的段落中,将定义企业数据仓库和随之产生的数据集市的结构。创立模块,导入平面文件本练习中,将创立平面文件模块,然后导入CUSIOmerS文件。将包括连接到后面customers表的地址列。1.在工程树中创立新模块,命名为SoUrCeFiIeS2.选择GeneriCAPP1.iCatiOn类型3.选中“继续导入元数据向导栏4 .在向导中选择文件CUStOmCraddress,txtW*(三)FPMtf:)I5 .抽样U6 .对各列重新命名如下:7.其他3个文件命名如下:C
13、usSourceICustomer1.txtC1.FnameC21.nameC3Middinitia1.C4PhonehomeC5Address1.C6Address2C7CityC8StateC9ZipC1.OPhonebC1.1.Ce1.1.phoneOrderstatus1ist.txtC1.Status_CodeC2StatusDescSupp1.iers_1.ist.txtC1.Supp1.ierIDC2SUPPIieJnameC3Status8.完成该向导并提交元数据。创立OrderEntry模块并导入表1 .在工程树中,创立新模块,命名OraCIe_0E。2 .选择GeneriC
14、Orac1.eDatabaseAPPIiCation作为模块类型,Orac1.e8i9i为数据库版本。3 .使用Orac1.eDataDictionary并创立数据库链路(点击创立新数据库链路按钮)a.名字:OE1.inkb.输入hostname,portandSID:本例中为1.oca1.host.1521.ordc.用户名,口令(OE用E)d.1.Q1.HBrXW*B1.x*XK(M4 .选中“继续导入元数据向导grHorrOdMindp3.010 .使用Orac1.eDataDictionary并创立数据库锥路(点击创立新数据库链路按钮)a.名字:HR1.inkb.输入hostname,
15、portandSID:本例中为1.oca1.host,1521,orc1.c.用户名,口令(HR/HR)d点击创立并测试11 .选中“继续导入元数据向导”12 .选择全部对象导入13 .完成导入O1.提交元数据上面导入了数据源元数据,基于这些数据源,我们将创立数据仓库对象并从这些表中抽取数据。数据仓库设计包括一个数据仓库方案(即用户)及一个中间区,用于分段传输(staging)信息。创立分段传输区(StagingArea)一个分段传输区是存放临时数据的地方以用于进一步处理。使用OraeIe9/ET1.新的特性,例如外部表(EXterna1.Tab1.es),该区变得多余了。本练习示范老代码的使
16、用(e.g.使用SQ1.*1.oader装载数据)及使用外部表(Externa1.Tab1.es)的新的方式。建议两个练习都做,因为WarehOUSeBUi1.der也支持OraCIe8.1.7数据库目标(现在有许多这种应用)。创立模块及数据对象Stagingarea包括许多由用户创立的表。下述步骤创立Staging模块、表及映射:1 .创立模块,命名为Staging2 .选择数据仓库目标类型,其他默认。3 .提交该元数据。4 .翻开刚创立的模块。5 .创立新的映射(命名为S1.gCUStomcraddress.map)并最大化编辑器。6 .拖取映射平面文件图标到画布上,从列表中选择CUS1.
17、O1.neraddresstxt文件。7 .拖取“映射表”图标到画布上,选择第一项“创立未绑定的映射表(不具有属性)”对话框。(TMweiS)UO1RS*5to_cust_wresses|8 .输入该新映射表的名字(Stgcustaddresses)9 .使用自动映射映射整个平面文件到stg_cust_addresses(选择缺省项后点击开始)10 .确认列的数据类型是正确的。(请使用YarChar2代替Char类型)11 .为了在存储中建立该表,在对象stg_cust_addresses的头上点击右键,选择协调出站(reconci1.eoutbound)%b1.-4SgRKeI城侬帆-iS5
18、E0W庭J12 .在警告对话框上点击“确定”。13 .选择第一项,“创立新的表并选择Staging,其为唯一的缺省值选项。14 .关闭该映射并提交元数据。15 .此时在存储库中即有了新的表和新的映射,对两者进行校脸。16 .后面我们将回到该映射并运行它。到此为止,该映射就完成了。其他Staging表和映射此处不再枚举。除上面的方法外,我们也可以使用创立表的向导创立新表,然后逐一输入列名。另外一种创立对象SIgcustaddresses的方法是是适用外部表(Externa1.Tab1.e)功能。实现该方式如下所示:1 .1.ogintoSQ1.*P1.usasSYSDB,以便于建立新用户2 .创
19、立用户名:Wh_Xweek及口令(Wh_XWeek)3 .授予用户DBA疯限(此处为简便使Q,在现实世界中应谨慎使用)4 .从OE用户,将OrderS表SeIeCt权限授予给Wh_Xweek用户(grantse1.ectonorderstowh_xweek;)5 .连接到该用户6 .从平面文件CUStOmeJaddress.txt创立外部表。a.在数据库中创金目录Createdirectoryxweek_fi1.esas*c:XxweekXsourcefi1.es,;b.创立外部表定义CREATETAB1.Estg_cust_addresses_ext(CUSTOMERDNUMBER,STRE
20、ETVARCHR2(27),POSTA1.CODENUMBER,CITYVRCHAK2(16),STATECODEVAKCHAR2(4),COUNTRYCODEVARCHAR2(2)ORGANIZATIONEXTERNA1.(TYPEorac1.e_1.oaderDEFAU1.TDIREeTORYXWeek_fi1.es1.OCATION(customer_address.txt)REJECT1.IMITUN1.IMITED;7 .在WarehOUSeBui1.der中导入该表。8 .此时,在WarehoUSeBui1.der中有了2个顾客地址表,一个用于Staging表,用于SQ1.*1.o
21、ader装载数据,另外一个是利用外部表来访问。两者都在后面映射中使用。9 .提交元数据。我们在Staging区创立一个视图用于转换时间标记列为常规日期。1 .在SIaging模块中创立新视图。2 .命名该视图为stgorders并添加适当列,如下:3 .设定查询,并确认列的顺序如上所述。se1.ectorder_id.to_date(to_char(order,date,fDD-MON-YYYYHH24:MI:SS),DD-MOn-YYYYHH24zM1.SS,)Ordejdate,OrdeJmOde,CUStomeJid,caseOrder.statuswhen0thenwhen1thenE
22、NTVERwhen2thenBKD,when3then,BI1.,when4thenSPDwhen5thenHO1.when6thenCCK,when7then,DMG,when8thenRET,when9thenINV,when10then,CANe1.se,N0Nenc1.,order_tota1.,sa1.es_rep_id,promotion_idfromoe.orders4 .提交元数据。第3个对象是基于平面文件,用于未来维的源数据表。可以使用前面所述stgCUStaddresses中两种机制中的任一种方式创立。1 .在模块staging中创立一个表,用于存储从文件“Order_st
23、atus_1.ist.txt”中的信息,命名为stg_ordeJStatUs,命名映射为stg_ord_stat_map(如果采用该种方式创立)。2 .列名Status_CodeStatus_Desc3 .确认表中列的数据类型正确。(将Char改为Varchar2)4 .提交元数据。第四个对象也用于未来维的源数据表。可以使用前面所述stg_cust_addresses中两种机制中的任一种方式创立。1 .在模块staging中创立一个表,用于存储从文件“Supp1.iers1.ist.txtw中的信息,命名为Stgsupp1.iers,命名映射为stgsupp1.iersmap(如果采用该种方式
24、创立)。2 .列名取名为:SUPP1.ierTDSupp1.ier_NameStatus3 .确认表中列的数据类型正确。(将Char改为Varchar2)4 .提交元数据。创立数据仓库模型在本局部,我们主要讨论定义目标数据仓库对象结构。该数据仓库是简单的星型模型,数据来源于用户OE.HR及Staging模块。主要关心的是Order及Inventory信息。该星型模型不保存详细订单信息,也就意味着订单详细在本数据仓库中没有。简化有时是一种商业分析的需要。*实表(Facttab1.es)OrderS的事实表(name:Orders)收集有关定单的信息。包含以下度量(measures):Quanti
25、tyNumberAmountNumber该事实表的相关维为:ProductsTimes(useSmartKeyBKonday1.eve1.)CustomersSa1.esKepsOrderStatusInventory事实表(name:Inventory)保存有关产品库存的信息,包含以下度量(measures):Quantity_on_Hand该事实表的相关维为(全部都是最低层次Ieve1.与缺省值):ProductsTime(useSmartKeyPKonday1.eve1.)WarehousesSupp1.iers维(Di1.oenSionS)从事实表看出,数据仓库中需要建立7个维表。为简
26、便起见,各层次在属性上比较紧凑。以下描述了各维的详细信息:标有星号的属性为关键域,缺省被命名为IDO将其改名为如下所示。维表名维前鬃ProductsPD1.eve1.Name1.eve1.PrefixCategoryCTProductPR1.eve1.NameAttributeDatatype/1.enCategoryProdCategorNumberPrOd_CatNameVarchar2(50)Prod_Cat_DescVarchar2(100Product*Prod_1.DNumberProdNameVarchar2(125Pro1.DeSCVarchar2(200Prod_1.ist_
27、PriNumber(nv11iiCnPrOd_Min_PricNumber(11vor,;UiCnHierarchyHierarchyPrefixPro(1.RoI1.UPProd,Ro11upHierarchyProd-Ro1.1.up1.eve1.sCategoryProduct维表名维前蒙Order_StatusOS1.eve1.Name1.eve1.PrefixStatusST1.eve1.NameAttributeDatatype/1.enStatusStatusIDNumberStatus_CodeVarchar2(3)Status_DescVarchar2(15)Hierarch
28、yHierarchyPrefixStatRo1.1.upStatRo1.1.upHierarchyStat_Ro1.1.UP1.eve1.sStatus维表名维前毁WarehousesWH1.eve1.Name1.eve1.PrefixWarehouseWH1.ocation1.NCountryCT1.eve1.NameAttributeDatatype/1.enCountryCountry_IDVarchar2(2)CountryVarchar2(50)1.ocation1.ocationIDNumberStreetVarchar2(40)POSta1.CodeVarchar2(12)Cit
29、yVarchar2(40)State_Pr。VinCVarchar2(30)Warehouse*WII11)NumberWarehouseVarchar2(50)HierarchyHierarchyPrefixWH_Ro1.1.upWH-Ro1.1.pHierarchyW1.1.Ro1.Iup1.eve1.sCountry1.ocationWarehouse维表名维前最CustomersCS1.eve1.Name1.eve1.PrefixCountryCTCustomerCS1.eve1.NameAttributeDatatype/1.enCountryCountry_IDVarchar2(2
30、)CountryVarchar2(50)Customer*CustIDNumberCusjFirsjNaVarchar2(40)Cust_1.ast_NamVarchar2(40)StreetVarchar2(40)POSta1.CodeVarchar2(12)CityVarchar2(40)StateBrovincVarchar2(30)AccountJ1.grVarchar2(25)HierarchyHierarchyPrefixCustRo1.1.upCustRo1.IupHierarchyCust_Ro1.Iup1.eve1.sCountryCustomer维表名维前锻Sa1.esRe
31、psSR1.eve1.NaDe1.eve1.PrefixSa1.es_RepSRCountryCTRegionRG1.eve1.NameAttributeDatatype/1.enCountryCountryIDVarchar2(2)CountryVarchar2(50)Region*RegionIDNumberRegionVarchar2(40)Sa1.es_RepSa1.esRep_IDNumberFirst_NameVarchar2(50)1.astNameVarchar2(50)ManagerVarchar2(50)DepartmentVarchar2(50)HierarchyHier
32、archyPrefixSaIesRcpRo1.Sa1.esRcpRo1.1.upHierarchySa1.esRep_Ro1.1.eve1.sRegionCountrySa1.esRep维表名维前缀Supp1.iersSP1.eve1.Name1.eve1.PrefixSupp1.ier-sp-1.eve1.NameAttributeDatatype/1.enSupp1.ierSupp1.ier_IDNumberSupp1.ierNameVarchar2(35)Supp1.ierStatVarchar2(10)HierarchyHierarchyPrefixSUPP_Ro1.1.upSuppR
33、o1.1.upHierarchy1.eve1.sSuppRo1.1.upSupp1.iers最后需要创立的维是时间维。使用WarehOUSeBUiIder向导创立,最低级别为Day,可以选择你希望看到得时间维,如李、月。所有命名都是标准的。可以在时间维上创立多种层次。创立维表与事实表为了输入上面提到的信息,需要首先创立一个新的模块,命名为Warehouse。窗开该模块并:1 .在维节点,选择创立维,然后利用向导创立维。2 .在创立完每一个维后,进行提交3 .作为创立维的最后一步,记得用向导创立一个时间维。4 .同样也要提交。5 .创立两个事实表,在事实表节点,利用向导创立6 .记住要在维的最低
34、层次上进行链接7 .将外键重命名为描述性的名字(也可直接用默认值)Q从外力键字凰I*分fc的一关便于8 .选中从外关键字创立分段的唯一关键字。9 .提交至此就完成了数据源、分段传输区及目标数据仓库的工作。下一步我们将创立映射以完成数据从数据源到数据仓库的工作。Modu1.e4:建立映射及转换WarehouseBui1.der允许在存储库中创立、导入及维护P1./SQ1.。本模块将展示如何做并在映射中利用它。映射将在本模块的后半局部练习。创立P1./SQ1.Function1 .为了创立一个函数(function),在WarehoUSe模块中,翻开转换库,点鼠刨建竹6)CtrtNctIMCHP2
35、.CO1.WTRYXD-IMGRP3.C0URYXC5 .连接joiner到目标维列6 .设置装载类型为INSERT/UPDATE7 .验证并查看报告8 .提交映射COUNTRI69提示:TheUpdate:用于装载数据必须设为N0,以产生mergecode。CustomersSourceobjects:Tab1.e:Orac1.eOE.CustomersTab1.e:Staging.stgcustaddressesOrStaging,stgcustaddressesextTab1.e:Orac1e1.1.R.Countries1.ookup:Orac1.eHR.emp1.oyeesTarge
36、t:Dimension:Warehouse.CustomersMappingActivities:1 .在WarehOUSe模块中创立维wh_custonIerSJnaP2 .添加适宜的数据操作符3 .对CUStomerS创立关键字查找,以决定,顾客的客户经理名a.1.OokUP表为OraCIeHR.Emp1.oyeesC血Ib.添加100kUP运算符小k”4c.account-mgr-id及emp1.oyee_id间创立匹配条件(选择EMP_EMP_ID_PK)AW.9IWPMP_IO_RA卜、rw-MAMzbtII1.AtJTeIMAMI=a1.cA4 .匹配其他适宜列到joiner运算符5 .根据CUStomerid及COUntryid/countrycqde连接数据源对象TorJO1.N(Boo1.eanCondition)I1.IHCRP1.CU3T0HEP_ID-IMGPP2.CUSTOKER-ID2*nRP2.Couwtrycope-ingrp3.country.io6 .连接joiner运算符其他