Oracle数据库WarehouseBuilder培训教材.docx

上传人:小飞机 文档编号:1663683 上传时间:2022-12-13 格式:DOCX 页数:48 大小:592.22KB
返回 下载 相关 举报
Oracle数据库WarehouseBuilder培训教材.docx_第1页
第1页 / 共48页
Oracle数据库WarehouseBuilder培训教材.docx_第2页
第2页 / 共48页
Oracle数据库WarehouseBuilder培训教材.docx_第3页
第3页 / 共48页
Oracle数据库WarehouseBuilder培训教材.docx_第4页
第4页 / 共48页
Oracle数据库WarehouseBuilder培训教材.docx_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《Oracle数据库WarehouseBuilder培训教材.docx》由会员分享,可在线阅读,更多相关《Oracle数据库WarehouseBuilder培训教材.docx(48页珍藏版)》请在三一办公上搜索。

1、Oracle9i Warehouse Builder培训资料 提交人:Oracle Sales Consultant 提交日期: 版本号:v1.0文档控制变更记录 48日期作者版本号变更参考文件OCT 30, 2002闵文杰V1.0审阅日期姓名职位目 录简介4提纲4前提5培训目标5反馈与意见5Module 1: 在Warehouse Builder中设置环境6开始6环境6Module 2 创建数据源8导入数据源元数据8Module 3 设计数据仓库11创建分段传输区(Staging Area)11创建数据仓库模型14Module 4: 建立映射及转换20创建 PL/SQL Function20

2、导入一个已经存在的过程(Procedure)20创建映射装载数据20Module 5: 配置,部署及运行29环境29配置29部署对象32运行数据装载33Module 6: 生命周期管理35将数据源元数据的变化反映到OWB 存储中35对于目标的变化管理36Module 7: 元数据报告38从Warehouse Builder 客户端看38简介Oracle 9i Warehouse Builder (OWB) 是Oracle完整智能解决方案中的一部分。其作用主要是完成数据仓库的设计及抽取、转换、装载设计(Extract, Transform and Load ETL)与生成。可以设计Oracle

3、Discoverer的End User Layer 并与Oracle 9i 数据库紧密集成。提纲本资料的目标是例示OWB的功能,因此中间没有什么重复工作,在某些方面较为简洁。另外,本资料没有论述如何建立数据仓库的模型及如何进行性能优化,该部分内容请参考相关Oracle资料。本资料分为以下几个部分,每一个针对OWB的一特定领域。 Module 1: 建立环境该模块描述如何建立环境。也给出了一些源数据的详细数据结构。 Module 2: 建立数据源该模块让用户建立基于9i数据库种子对象得源数据模块。该步骤仅是整个解决方案中的第一步。在后面的阶段,我们将回头来改变数据源对象,以举例显示生命周期管理。

4、 Module 3: 设计数据仓库该模块显示Warehouse Builder 创建表、视图、方案的一些特征。在此部分我们将练习创建事实表及维。完成这些工作后,就能将数据载入这些结构中定下数据仓库。 Module 4: 设计映射与转换模型OWB 的核心功能是基于ETL 过程,转换及进行它们的设计。本模块将展示如何利用OWB 映射设计工具完成这些过程的设计。将充分利用前面在OWB中定义好的数据源与数据目标,允许客户化PL/SQL 开发辅助数据转换。也将看到如何重用PL/SQL。 Module 5: 配置,部署,运行在设计完数据仓库后,下一步当然就是在数据库中安装它,并载入数据。本模块将展示如何配

5、置在前面中创建的模块,并运行映射,载入数据。 Module 6: 生命周期管理数据仓库是一个一直在进化的系统。为了处理数据源及数据目标的变化,OWB 提供了用户数据源协调及数据仓库升级的手段。本部分将展示这些内容。 Module 7: 元数据报告本模块是可选做的一部分,因为必须安装Oracle 9iAS 并正确配置。元数据报告模块将展示OWB Browser的能力。该浏览器可以进行线性分析、影响分析及更多的报表。前提为完成本培训,必须满足以下几点前提:1. 安装Oracle 9i 数据库2. 安装Warehouse Builder及存储库 3. 有足够的权限以授予权限,创建用户,安装运行时,如

6、果需要的话,还安装Browser4. 企业管理器并设置,以能从OEM中调度job5. Oracle Workflowset安装并设置以能创建工作流6. 安装9iAS 及Portal,如果练习元数据报告的话7. 有一定的Warehouse Builder基本概念知识8. 有一定的Oracle 9i 数据库概念9. 有一定的Oracle 9i ETL 概念10. 有一定的SQL 及 PL/SQL 知识,才能在你自己的环境下写出客户化的代码培训目标本培训的几个目标是:1. 对Warehouse Builder 的能力有一个综合认识2. 利用Warehouse Builder 进行一个完整的设计、部署

7、及运行周期反馈与意见若对本培训资料有何意见,请将意见反馈给我们,以便我们改进和提高。请联系:闵文杰技术咨询顾问Module 1: 在Warehouse Builder中设置环境为开始始用Warehouse Builder,我们首先必须创建一个项目(project).我们取项目名XWEEK。开始将Xweek.zip文件移动到本地硬盘并解压。假设在C盘上,你也可以放在其他磁盘上,解压完后,将有如下目录:C Xweek SourceFilesSQLScripts建好这些目录后,开始进入Warehouse Builder。登陆到Warehouse Builder,并进入管理部分。可以如下2种方式实现。

8、1. 输入用户名及口令后,在“选择要打开得项目”处,点击“取消”,就进入管理部分。 2. 输入用户名及口令后,在“选择要打开得项目”处,随便选一个项目打开,然后使用控制台点击“管理”按钮进行切换,就进入管理部分。在管理部分:1. 高亮度“项目”然后点鼠标右键,选择“创建项目”。(或者到管理菜单中选择“创建项目”)2. 给出一个名字,如“Xweek”3. 选择项目版本标签号(例如Xweek)4. 点击完成按钮提交5. 切换项目到新项目。现在就在该项目下开始工作。环境整个培训都是基于Oracle9i中生成的用户对象。以下为包括这些表的对象列表。Order Entry用户名:OE口令:OE (def

9、ault)表名-CUSTOMERSINVENTORIESORDERSORDER_ITEMSPRODUCT_DESCRIPTIONSPRODUCT_INFORMATIONPRODUCT_REF_LIST_NESTEDTABSUBCATEGORY_REF_LIST_NESTEDTABWAREHOUSESHuman Resources用户名:HR口令:HR (default)TABLE_NAME-COUNTRIESDEPARTMENTSEMPLOYEESJOBSJOB_HISTORYLOCATIONSREGIONSCustomer Addresses顾客地址存储在以逗号分割的平面文件中。文件名为Cu

10、stomer_address.txt,存储在文件夹XweekSourceFiles中。 驱动器为你解压zip文件的驱动器。文件格式: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 Bloyd Ave,46218,Indianapolis,IN,US 103,8768 N State Rd 37,47404,Bloomington,IN,US 104,6445

11、 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,CH 905,1592 Silverado St,361123,Bangalore,Kar,IN 906,1593 Silverado St,361112,Bangalo

12、re,Kar,IN Module 2 创建数据源导入数据源元数据在本培训的第一部分,主要讲述定义数据源对象的结构。定义数据源对象的结构包括如下行为: 定义和创建针对平面文件的数据源模块 定义和创建针对关系型数据库的数据源模块 从数据源对象导入元数据到数据源模块在下面的段落中,将定义企业数据仓库和随之产生的数据集市的结构。创建模块,导入平面文件本练习中,将创建平面文件模块,然后导入customers 文件。将包括连接到后面customers 表的地址列。1. 在项目树中创建新模块,命名为SourceFiles2. 选择Generic File Based Application类型 3. 选中“

13、继续导入元数据向导”栏 4. 在向导中选择文件customer_address.txt 5. 抽样 6. 对各列重新命名如下:C1Customer_IDC2StreetC3PostalCodeC4CityC5StateCodeC6CountryCode7. 其他3个文件命名如下:CusSource1Customer1.txtC1FnameC2LnameC3MiddinitialC4PhonehomeC5Address1C6Address2C7CityC8StateC9ZipC10PhonebC11CellphoneOrder_status_list.txtC1Status_CodeC2Stat

14、us_DescSuppliers_list.txtC1Supplier_IDC2Supplier_nameC3Status8. 完成该向导并提交元数据。创建Order Entry模块并导入表1. 在项目树中,创建新模块,命名Oracle_OE。2. 选择Generic Oracle Database Application 作为模块类型,Oracle 8i/9i 为数据库版本。3. 使用Oracle Data Dictionary 并创建数据库链路 (点击创建新数据库链路按钮)a. 名字:OELinkb. 输入hostname, port and SID:本例中为localhost,1521,

15、orclc. 用户名,口令 (OE/OE)d. 点击创建并测试4. 选中 “继续导入元数据向导”5. 选择全部对象导入6. 完成导入。7. 提交元数据。创建Human Resources 模块并导入表8. 在项目树中,创建新模块,命名Oracle_HR。9. 选择Generic Oracle Database Application 作为模块类型,Oracle 8i/9i 为数据库版本。10. 使用Oracle Data Dictionary 并创建数据库链路 (点击创建新数据库链路按钮)a. 名字:HRLinkb. 输入hostname, port and SID:本例中为localhost

16、,1521,orclc. 用户名,口令 (HR/HR)d. 点击创建并测试11. 选中 “继续导入元数据向导”12. 选择全部对象导入13. 完成导入。1. 提交元数据上面导入了数据源元数据,基于这些数据源,我们将创建数据仓库对象并从这些表中抽取数据。Module 3 设计数据仓库数据仓库设计包括一个数据仓库方案(即用户)及一个中间区,用于分段传输(staging)信息。创建分段传输区(Staging Area)一个分段传输区是存放临时数据的地方以用于进一步处理。使用Oracle 9i ETL 新的特性,例如外部表(External Tables),该区变得多余了。本练习示范老代码的使用(e.

17、g. 使用SQL*Loader装载数据)及使用外部表(External Tables)的新的方式。 建议两个练习都做,因为Warehouse Builder也支持Oracle 8.1.7数据库目标(现在有许多这种应用)。创建模块及数据对象Staging area 包括许多由用户创建的表。下述步骤创建staging 模块、表及映射:1. 创建模块,命名为Staging2. 选择数据仓库目标类型,其他默认。3. 提交该元数据。4. 打开刚创建的模块。5. 创建新的映射(命名为stg_customer_address_map) 并最大化编辑器。6. 拖取映射平面文件图标到画布上,从列表中选择cust

18、omer_address_txt 文件。7. 拖取“映射表”图标到画布上,选择第一项 “创建未绑定的映射表(不具有属性)”对话框。 8. 输入该新映射表的名字(stg_cust_addresses)9. 使用自动映射映射整个平面文件到 stg_cust_addresses (选择缺省项后点击开始)10. 确认列的数据类型是正确的。 (请使用varchar2 代替char类型) 11. 为了在存储中建立该表,在对象stg_cust_addresses的头上点击右键,选择协调出站(reconcile outbound) 12. 在警告对话框上点击“确定”。13. 选择第一项,“创建新的表” 并选择

19、Staging,其为唯一的缺省值选项。14. 关闭该映射并提交元数据。15. 此时在存储库中即有了新的表和新的映射,对两者进行校验。16. 后面我们将回到该映射并运行它。到此为止,该映射就完成了。其他Staging表和映射此处不再枚举。除上面的方法外,我们也可以使用创建表的向导创建新表,然后逐一输入列名。另外一种创建对象stg_cust_addresses 的方法是是适用外部表(External Table)功能。实现该方式如下所示:1. Log into SQL*Plus as SYSDBA,以便于建立新用户2. 创建用户名:Wh_Xweek 及口令 (Wh_Xweek)3. 授予用户 DB

20、A 权限(此处为简便使用,在现实世界中应谨慎使用)4. 从 OE 用户, 将orders表select权限授予给Wh_Xweek用户 (grant select on orders to wh_xweek;)5. 连接到该用户6. 从平面文件customer_address.txt创建外部表。 a. 在数据库中创建目录Create directory xweek_files as c:xweeksourcefiles;b. 创建外部表定义CREATE TABLE stg_cust_addresses_ext (CUSTOMER_ID NUMBER,STREET VARCHAR2(27),POS

21、TALCODE NUMBER,CITY VARCHAR2(16),STATECODE VARCHAR2(4),COUNTRYCODE VARCHAR2(2)ORGANIZATION EXTERNAL(TYPE oracle_loader DEFAULT DIRECTORY xweek_files LOCATION (customer_address.txt)REJECT LIMIT UNLIMITED;7. 在Warehouse Builder 中导入该表。8. 此时,在Warehouse Builder 中有了2个顾客地址表,一个用于staging 表,用于SQL*Loader装载数据,另外

22、一个是利用外部表来访问。两者都在后面映射中使用。9. 提交元数据。我们在staging区创建一个视图用于转换时间标记列为常规日期。1. 在Staging 模块中创建新视图。2. 命名该视图为 stg_orders 并添加适当列,如下:3. 设定查询,并确认列的顺序如上所述。select order_id, to_date( to_char(order_date , DD-MON-YYYY HH24:MI:SS ) , DD-MON-YYYY HH24:MI:SS ) order_date, order_mode, customer_id, case order_status when 0 th

23、en ENT when 1 then VER when 2 then BKD when 3 then BIL when 4 then SPD when 5 then HOL when 6 then CCK 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. 提交元数据。第3个对象是基于平面文件,用于未来维的源数据表。可以使用前面所述stg_cust_addresses中两种机制中

24、的任一种方式创建。1. 在模块 staging 中创建一个表,用于存储从文件 “Order_status_list.txt” 中的信息,命名为stg_order_status,命名映射为 stg_ord_stat_map(如果采用该种方式创建)。 2. 列名Status_CodeStatus_Desc3. 确认表中列的数据类型正确。(将 Char 改为 Varchar2)4. 提交元数据。第四个对象也用于未来维的源数据表。可以使用前面所述stg_cust_addresses中两种机制中的任一种方式创建。1. 在模块 staging 中创建一个表,用于存储从文件 “Suppliers_list.

25、txt” 中的信息,命名为stg_suppliers,命名映射为 stg_suppliers_map(如果采用该种方式创建)。2. 列名取名为:supplier_IDSupplier_NameStatus3. 确认表中列的数据类型正确。(将 Char 改为 Varchar2)4. 提交元数据。创建数据仓库模型在本部分,我们主要讨论定义目标数据仓库对象结构。该数据仓库是简单的星型模型,数据来源于用户 OE, HR 及 Staging 模块。 主要关心的是Order 及 Inventory 信息。该星型模型不保存详细订单信息,也就意味着订单详细在本数据仓库中没有。简化有时是一种商业分析的需要。事实

26、表(Fact tables)orders的事实表 (name: Orders) 收集有关定单的信息。包含以下度量(measures):QuantityNumberAmountNumber该事实表的相关维为:ProductsTimes (use Smart Key PK on day level)CustomersSalesRepsOrderStatusInventory 事实表(name: Inventory) 保存有关产品库存的信息,包含以下度量(measures):Quantity_on_Hand该事实表的相关维为(全部都是最低层次level与缺省值):ProductsTime (use

27、Smart Key PK on day level)WarehousesSuppliers维(Dimensions)从事实表看出,数据仓库中需要建立7个维表。为简便起见,各层次在属性上比较紧凑。以下描述了各维的详细信息:* 标有星号的属性为关键域,缺省被命名为ID 。将其改名为如下所示。维表名维前缀ProductsPDLevel NameLevel PrefixCategoryCTProductPRLevel NameAttribute Datatype/LengthCategory*Prod_CategoryNumberProd_Cat_NameVarchar2(50)Prod_Cat_De

28、scVarchar2(1000)Product*Prod_IDNumber Prod_NameVarchar2(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 NameLev

29、el PrefixStatusSTLevel NameAttribute Datatype/LengthStatus*Status_IDNumberStatus_CodeVarchar2(3)Status_DescVarchar2(15)Hierarchy NameHierarchy PrefixStat_RollupStat_RollupHierarchy NameLevelsStat_RollupStatus维表名维前缀WarehousesWHLevel NameLevel PrefixWarehouseWHLocationLNCountryCTLevel NameAttribute Da

30、tatype/LengthCountry*Country_IDVarchar2(2)CountryVarchar2(50)Location*Location_IDNumberStreetVarchar2(40)Postal_codeVarchar2(12)CityVarchar2(40)State_ProvinceVarchar2(30)Warehouse*WH_IDNumber WarehouseVarchar2(50)Hierarchy NameHierarchy PrefixWH_RollupWH_RollupHierarchy NameLevelsWH_RollupCountryLoc

31、ationWarehouse维表名维前缀CustomersCSLevel NameLevel 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_Provin

32、ceVarchar2(30)Account_MgrVarchar2(25)Hierarchy NameHierarchy PrefixCust_RollupCust _RollupHierarchy NameLevelsCust _RollupCountryCustomer维表名维前缀Sales_RepsSRLevel NameLevel PrefixSales_RepSRCountryCTRegionRGLevel NameAttribute Datatype/LengthCountry*Country_IDVarchar2(2)CountryVarchar2(50)Region*Regio

33、n_IDNumberRegionVarchar2(40)Sales_Rep*SalesRep_IDNumber First_NameVarchar2(50)Last_NameVarchar2(50)ManagerVarchar2(50)DepartmentVarchar2(50)Hierarchy NameHierarchy PrefixSalesRep_RollupSalesRep_RollupHierarchy NameLevelsSalesRep_RollupRegionCountrySales_Rep维表名维前缀SuppliersSPLevel NameLevel PrefixSupp

34、lierSPLevel NameAttribute Datatype/LengthSupplier*Supplier_IDNumberSupplier_NameVarchar2(35)Supplier_StatusVarchar2(10)Hierarchy NameHierarchy PrefixSupp_RollupSupp_RollupHierarchy NameLevelsSupp_RollupSuppliers最后需要创建的维是时间维。 使用Warehouse Builder向导创建,最低级别为Day,可以选择你希望看到得时间维,如季、月。所有命名都是标准的。可以在时间维上创建多种层次

35、。创建维表与事实表为了输入上面提到的信息,需要首先创建一个新的模块,命名为Warehouse。打开该模块并:1. 在维节点,选择创建维,然后利用向导创建维。2. 在创建完每一个维后,进行提交3. 作为创建维的最后一步,记得用向导创建一个时间维。4. 同样也要提交。5. 创建两个事实表,在事实表节点,利用向导创建6. 记住要在维的最低层次上进行链接7. 将外键重命名为描述性的名字(也可直接用默认值)8. 选中从外关键字创建分段的唯一关键字。 9. 提交至此就完成了数据源、分段传输区及目标数据仓库的工作。下一步我们将创建映射以完成数据从数据源到数据仓库的工作。Module 4: 建立映射及转换Wa

36、rehouse Builder 允许在存储库中创建、导入及维护PL/SQL。本模块将展示如何做并在映射中利用它。映射将在本模块的后半部分练习。创建 PL/SQL Function1. 为了创建一个函数(function),在Warehouse 模块中,打开转换库,点鼠标右键创建一个新的function 2. 命名为GET_TIME_ID3. 不要设定输入参数,点击 。4. 在窗口中输入如下代码,部分内容已按照格式给出,粗体部分为添加进去的。:-initialize variables herev_return number;- main bodyBEGIN select da_id into

37、v_return from TIMES where times.da_actual_date = sysdate; RETURN v_return;END;5. 保存,提交。导入一个已经存在的过程(Procedure)1. 为了在Warehouse Builder中重用已经存在的PL/SQL 代码,进入需要使用存储过程的模块中选择导入,本例中,导入Warehouse 模块2. 创建一个指向HR的新的数据库链路以导入数据。3. 选择导入,并只选中PL/SQL转换。4. 将会看到两个对象。选择导入其中的一个或两个。5. 验证导入6. 可选择“添加到共享库”创建映射装载数据下面我们创建映射将数据从不

38、同数据源将数据抽取到数据仓库。首先是将数据装载入维表,然后再是事实表。映射维首先创建产品Products维。下面描述创建数据源到数据目标的映射。ProductsSource objects:Table:OracleOE.Product_InformationTable:OracleOE.Categories_tabTarget:Dimension:Warehouse.ProductsMapping Activities:1. 在Warehouse模块中创建维 wh_products_map 2. 添加合适的数据操作符3. 连接全部的列到joiner4. 对于两个数据源基于category_id

39、进行连接 5. 从joiner连接相应的列到目标维各列6. 设置装载类型为INSERT/UPDATE7. 验证并查看报告8. 提交映射.提示: The Update: 用于装载数据必须设为NO,以产生merge codeOrder_StatusSource objects:Table:Staging.stg_order_statusSequence:Warehouse.wh_orderstat_seqTarget:Dimension:Warehouse.Order_StatusMapping Activities:1. 在Warehouse模块中创建维wh_ord_stat_map2. 添加合

40、适的数据操作符3. 添加序列 wh_orderstat_seq (在映射中创建完后将在新的存储库中创建一个新的序列,或者,事先创建好该序列,然后在映射中引用它)4. 映射合适的列到维中5. 设置加载类型为 INSERT/UPDATE(鼠标右键点击维order_status标题,选择运算符属性,如图)6. 在运算符属性中选择“无约束条件”。 7. 验证映射,检查报告8. 提交映射提示: The Update: 用于装载数据必须设为NO,以产生merge code。注: 当使用外部表时,能看到不分段传输的优点。平面文件可立即从Warehouse映射中访问,能被join到其他对象中去。Warehou

41、sesSource objects:Table:OracleOE.WarehousesTable:OracleHR.LocationsTable:OracleHR.CountriesTarget:Dimension:Warehouse.WarehousesMapping Activities:1. 在Warehouse模块中创建维wh_warehouses_map 2. 添加合适的数据操作符3. 将合适的列添加到连接运算符 joiner4. 根据location_id 及 country_id 进行join。5. 连接joiner 到目标维列6. 设置装载类型为INSERT/UPDATE 7. 验证并查看报告8. 提交映射提示: The Update: 用于装载数据必须设为NO,以产生merge code。CustomersSource objects:Table:OracleOE.CustomersTable:Staging.stg_cust_addressesOr Staging.stg_cust_addresses_extTable:OracleHR.CountriesLookup:OracleHR.employees

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号