本教程向您介绍如何使用 Oracle BI EE Administration Tool 构建、修改、改进并管理 Oracle BI 信息库。
大约 4 个小时
本教程包括下列主题:
![]() |
概述 |
![]() |
前提条件 |
![]() |
构建信息库的物理层 |
![]() |
构建信息库的业务模型和映射层 |
![]() |
构建信息库的表示层 |
![]() |
测试并验证信息库 |
![]() |
创建计算量度 |
![]() |
组织表示层 |
![]() |
使用初始化块和变量 |
![]() |
添加多个源 |
![]() |
执行直接数据库请求 |
![]() |
使用聚合 |
![]() |
创建时间序列量度 |
![]() |
总结 |
![]() |
相关信息 |
将鼠标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)
注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。单击屏幕截图将其隐藏。
本教程将向您介绍如何构建 Oracle BI 元数据信息库。您将了解如何从数据库和其他数据源导入元数据,简化并将已导入元数据重新组织到业务模型中,然后架构业务模型,并向通过 Oracle BI 用户界面(例如 Oracle BI Answers 和 Oracle BI Interactive Dashboards)请求业务智能信息的用户呈现该模型。
注: 如果您是一名 Oracle 员工并且正在使用 VMWare 环境,您可以跳过子主题创建 ODBC 数据源。确保您具备 2 GB RAM 和 15 GB 硬盘空间,并且计算机上已安装 VMWare 1.5.x。如果您没有 VMWare 软件,请从 http://www.vmware.com/download/player/ 下载 VMWare Player。
对于其他用户,在开始本教程前,您应该满足以下前提条件:
| 1. | 可以访问或已经安装了 Oracle 10g 数据库。 |
| 2. | 可以访问或已经安装了示例模式。本教程使用 Oracle10g 数据库中包含的 SH 模式。 |
| 3. | 可以访问或已经安装了 Oracle BI EE 10.1.3.2。 |
在本主题中,您将使用 Oracle BI Administration Tool 构建信息库的物理层。
物理层定义作为 Oracle BI Server 提交查询目标的数据源以及物理数据库与其他用于处理多数据源查询的数据源之间的关系。填充物理层的推荐方法是从数据库和其他数据源导入元数据。数据源可以是相同或不同的种类。您可以从现有数据源导入模式或部分模式。此外,您可以在物理层手动创建对象。
当您导入元数据时,数据源的许多属性将基于导入过程中收集的信息自动进行配置。导入后,您还可以定义物理数据源的其他属性,例如,可能在数据源元数据中不存在的连接关系。物理层中可含有一个或多个数据源,包括数据库、电子数据表以及 XML 文档。在本例中,您将从 Oracle 10g 数据库中的示例 SH 模式中导入并配置表。
要构建物理层,执行以下步骤:
![]() |
创建新的信息库 | |
![]() |
创建 ODBC 数据源 | |
![]() |
导入 SH 模式 | |
![]() |
创建物理联接 | |
要创建一个新的信息库,执行以下步骤:
1. |
单击 Start > Programs > Administrative Tools > Services。 |
2. |
在 Services 对话框,终止 Oracle BI Server 服务。
|
| 3. | 单击 Start > Programs > Oracle Business Intelligence > Administration 打开 Oracle BI Administration Tool。 |
| 4. | 单击 File > New 打开 New Repository 对话框。
|
| 5. | 在 New Repository 对话框,默认选择为 Repository 文件夹。将文件命名为 SH.rpd。
|
| 6. | 单击 Save。新的信息库在 Administration Tool 中打开并显示了三个空白层:Presentation、Business Model and Mapping 和 Physical。如有需要,选择 Tools > Options > Show toolbar 显示工具栏。
Physical 层是物理数据源上的信息存储的位置。Business Model and Mapping 层是将业务中的度量和术语映射到物理数据源的位置。Presentation 层是定制对向用户呈现的业务模型的位置。您可以在创建信息库的任意阶段使用每个层,但是通常的顺序是先创建 Physical 层,然后创建 Business Model and Mapping 层,最后创建 Presentation 层。 保持 Administration Tool 开启。 |
将有关数据源的模式信息导入 Oracle BI Server 信息库中时,需要使用 ODBC 数据源。要创建用于导入 SH 模式信息的 ODBC 数据源,执行以下步骤:
| 1. | 单击 Start > Programs > Administrative Tools > Data Sources (ODBC) 打开 ODBC Data Source Administrator。
|
| 2. | 单击 System DSN 选项卡并单击 Add。
Create New Data Source 对话框开启。 |
| 3. | 在 Create New Data Source 对话框中,选择 Oracle 驱动程序。
|
| 4. | 单击 Finish 打开 Oracle ODBC Driver Configuration 对话框。 |
| 5. | 在 Oracle ODBC Driver Configuration 对话框中,输入 Data Source Name(此处可为任意名称),从下拉列表中选择相应的 TNS Service Name(本例中为 ORCL),并输入 SH 作为 SH 模式的 User ID。
|
| 6. | 单击 Test Connection 打开 Oracle ODBC Driver Connect 对话框。 |
| 7. | 在 Oracle ODBC Driver Connect 对话框中,输入 SH 模式的口令 SH 并单击 OK。
|
| 8. | 您应该看到指明连接成功的“Testing Connection”消息。
|
| 9. | 单击 OK 关闭 Testing Connection 消息。 |
| 10. | 单击 OK 关闭 Oracle ODBC Driver Configuration 对话框。 |
| 11. | 验证 SH 系统数据源已添加到 ODBC Data Source Administrator,单击 OK 关闭 ODBC Data Source Administrator。
|
要向信息库导入 SH 模式信息,执行以下步骤:
| 1. | 在 Oracle BI Administration Tool 中,单击 File > Import > from Database。 . .
|
| 2. | 在 Select Data Source 对话框中,选择您在之前步骤中创建的 SH ODBC DSN,输入 SH 作为用户名和口令,并单击 OK 打开 Import 对话框。
|
| 3. | 在 Import 对话框中,找到 SH 模式文件夹。
|
| 4. | 展开 SH 模式文件夹并使用 Ctrl + 单击选择以下表: CHANNELS、COSTS、COUNTRIES、CUSTOMERS、PRODUCTS、PROMOTIONS、SALES 和 TIMES
|
| 5. | 验证仅选中了 Tables 和 Keys 复选框(这是默认设置),单击 Import 按钮。Connection Pool 对话框打开。 推荐您仅导入支持业务模型所需的对象。然而,如果您在此处导入了其他对象也不必担心。如果这些对象不支持您的业务模型,您始终可以在后续操作中删除它们。 |
| 6. | 在 Connection Pool 对话框中的 General 选项卡中,验证调用接口设置为 Default (OCI 10g),将数据源名称更改为相应的 tnsnames.ora 条目(本例中为 ORCL)。请注意这是 TNS 服务名称,而不是 ODBC DSN。
|
| 7. | 保留其余设置为默认值,单击 OK 关闭 Connection Pool 对话框。导入过程启动。 |
| 8. | 当导入过程完成后,单击 Close 关闭 Import 对话框。 |
| 9. | 在信息库的 Physical 层中,展开 SH 模式文件夹并验证导入正确的表。
|
| 10. | 要验证连接,单击 Tools > Update All Row Counts。 |
| 11. | 当更新完所有的行数后,验证行数显示在 Administration Tool 的 Physical 层中:
|
要在信息库的物理层中创建物理联接,执行以下步骤:
| 1. | 在 Physical 层中,右键单击 SH 模式文件夹并选择 Physical Diagram > Object (s) and All Joins。此外,您可以选择 SH 数据库对象,然后单击工具栏上的 Physical Diagram 按钮。
|
| 2. | 在 Physical Diagram 中,如果该表太大,右键单击空白处并选择 Zoom 调整大小。
|
| 3. | 重新排列表格以使表格在 Physical Diagram 中完全可见。
|
| 4. | 单击工具栏中的 New Foreign Key 按钮。
|
| 5. | 单击 Channels 表,然后单击 Sales 表。打开 Physical Foreign Key 对话框。
这取决于您先单击哪个表。该连接创建一个一对多 (1:N) 关系,将第一个表中的键列和第二个表中的外键列进行联接。Administration Tool 做出最佳“猜测”并自动决定将加入联接的列。 确保联接表达式为: CHANNELS.CHANNEL_ID = SALES.CHANNEL_ID |
| 6. | 单击 OK 关闭 Physical Foreign Key 对话框。在 Channels 和 Sales 之间的联接显示在 Physical Diagram 中。
|
| 7. | 继续创建以下联接: PROMOTIONS.PROMO_ID = SALES.PROMO_ID TIMES.TIME_ID = SALES.TIME_ID PRODUCTS.PROD_ID = SALES.PROD_ID CUSTOMERS.CUST_ID = SALES.CUST_ID COUNTRIES.COUNTRY_ID = CUSTOMERS.COUNTRY_ID 现在,您将看到 Countries 连接到 Customers 并且 Costs 尚未联接。所有其他表直接联接到 Sales。
当您完成后,单击右上角的 X 关闭 Physical Diagram。 |
| 8. | 选择 File > Save 或单击工具栏上的 Save 按钮保存信息库。 |
| 9. | 在提示检查全局一致性时,单击 No。Checking Global Consistency 检查整个信息库的错误。一些更常规的检查将在业务模型和映射层和表示层进行。因为这些层尚未定义,我们将在信息库中的其他层构建完成后再进行该检查。您稍后将在本教程内了解更多关于一致性检查的信息。 |
| 10. | 为进行下一个主题,保持 Administration Tool 和 SH 信息库处于开启状态。 恭喜!您已经成功创建了一个新的信息库,设置一个 ODBC 数据源,从外部数据源向物理层导入一个表模式,并定义键和联接。 在下一个主题中,您将了解如何构建信息库的业务模型和映射层。 |
在本主题中,您将使用 Oracle BI Administration Tool 构建信息库的业务模型和映射层。
Administration Tool 的业务模型和映射层定义数据的业务、或逻辑模型并指定业务模型和物理层模式之间的映射。物理模式在这里进行简化以形成数据的用户视图基础。Administration Tool 的业务模型和映射层包含一个或多个业务模型对象。业务模型对象包含业务模型定义和业务模型从逻辑到物理表的映射。
业务模型的主要目标是捕获用户如何用自己的语言描述自身业务。该业务模型简化了物理模式并将该用户的业务词汇映射到物理源。大多数词汇转换入业务模型的逻辑列中。逻辑列的集合形成逻辑表。每个逻辑列(甚至每一个逻辑表)可以使用一个或多个物理对象作为源。
逻辑表有两种主要的类别:事实和维。逻辑事实表包含企业计量其业务运营和性能所使用的度量。逻辑维表包含用来限制事实的数据。
要构建业务模型和映射层,执行以下步骤:
![]() |
创建业务模型 | |
![]() |
创建逻辑表 | |
![]() |
创建逻辑列 | |
![]() |
创建逻辑联接 | |
![]() |
重命名业务模型对象 | |
![]() |
删除不需要的业务模型对象 | |
![]() |
构建维层次 | |
要创建一个新的业务模型,执行以下步骤:
| 1. | 在 Business Model and Mapping 层,右键单击空白处并选择 New Business Model。
|
| 2. | 在 Business Model 对话框中,将业务模型命名为 SH,取消选中 Available for queries 复选框。Description 编辑框用于添加您自己或其他开发人员的注释。保留其为空白。
|
| 3. | 单击 OK 关闭 Business Model 对话框。新的 SH 业务模型出现在 Business Model and Mapping 层。业务模型上的红色标记表示其尚未用于查询。稍后,您将在定义表示层并且信息库通过全局一致性检查后启用该业务模型,用于查询。
|
要创建一个新的逻辑表,执行以下步骤:
| 1. | 在 Business Model and Mapping 层中,右键单击 SH 业务模型并选择 New Object > Logical Table。
|
| 2. | 在 Logical Table 对话框中,将表命名为 Sales Facts。
|
| 3. | 单击 OK 关闭 Logical Table 对话框。Sales Facts 逻辑表出现在 Business Model and Mapping 层的 SH 业务模型中。我们将在下一步创建逻辑列后填充 Sources 文件夹。
|
要创建逻辑列,执行以下步骤:
| 1. | 在 Physical 层中,展开 Sales 物理表。
|
| 2. | 选择 AMOUNT_SOLD 列。
|
| 3. | 从 Physical 层将 AMOUNT_SOLD 列拖至 Business Model and Mapping 层的逻辑表 Sales Facts 中。将一个新的 AMOUNT_SOLD 逻辑列添加到 Sales Facts 逻辑表。
|
| 4. | 展开 Sources 查看您从 Physical 层拖至 AMOUNT_SOLD 列时自动创建的逻辑表源。逻辑表源定义从逻辑表到物理表的映射。逻辑表的 Sources 文件夹包含逻辑表源。因为您从 Physical 层拖拽了一个列,逻辑表源名称 SALES 与物理表的名称相同。然而,我们无需影响映射即可更改 Business Model and Mapping 层中的名称。
|
| 5. | 在 Business Model and Mapping 层中,双击 AMOUNT_SOLD 逻辑列打开 Logical Column 对话框。
|
| 6. | 单击 Aggregation 选项卡。
|
| 7. | 在 Default aggregation rule 下拉列表中,选择 SUM。
|
| 8. | 单击 OK 关闭 Logical Column 对话框。您将看到逻辑列图标已更改为表示已应用聚合规则。
|
要在业务模型中创建逻辑联接,执行以下步骤:
| 1. | 在 Physical 层中选择以下表。仅选择这些表: CHANNELS、CUSTOMERS、PRODUCTS、PROMOTIONS 和 TIMES
|
| 2. | 将已选表从 Physical 层拖拽到 Business Model and Mapping 层中的 SH 业务模型文件夹。将自动在 Business Model and Mapping 层中创建逻辑表。注意每个逻辑表有一个黄色的表图标。在 Business Model and Mapping 层中,这代表一个事实表。因为您尚未创建逻辑联接,所有的表图标均为黄色。维表的图标颜色将在稍后您创建逻辑联接的步骤中变为白色。
|
| 3. | 右键单击 SH 业务模型并选择 Business Model Diagram > Whole Diagram。
|
| 4. | 重新排列表图标使其完全可见。将 Sales Facts 表放置在中间位置。如需要,可以调整缩放因子。
|
| 5. | 单击工具栏中的 New Complex Join 按钮。
|
| 6. | 在 Logical Table Diagram 窗口中,先单击 Channels 表图标,然后单击 Sales Facts 表图标。顺序很重要。单击的第二个表是关系中多的一端。将打开 Logical Join 对话框。保留默认值,但请注意您可以设置的属性:名称、业务模型、表、驱动表、联接类型和基数。还需注意不可设置的属性:联接表达式和联接列。通常,在定义逻辑联接时,您将保留这些默认值。
|
| 7. | 不要更改默认值,单击 OK,验证您在 Logical Table Diagram 中的工作。您将看到事实表 Sales Facts 在联接的多的一端:
|
| 8. | 对其余的表重复以上步骤。您的最终结果将与下图类似。
|
| 9. | 单击右上角的 X 关闭 Logical Table Diagram。您将看到业务模型中维表的表图标颜色变为白色。在业务模型中,黄色图标表示事实表而白色图标表示维表。定义联接关系决定哪一个表是逻辑维表哪一个表是逻辑事实表。事实表始终在逻辑连接的多的一端。现在,您的逻辑星型模式包含一个逻辑事实表 Sales Facts 以及五个逻辑维表:Channels、Customers、Products、Promotions 以及 Times。
|
| 10. | 保存 SH 信息库。不要检查全局一致性。 |
要在业务模型中使用 Rename Wizard 重命名对象,执行以下步骤:
| 1. | 单击 Tools > Utilities。
|
| 2. | 在 Utilities 对话框,单击 Rename Wizard,然后单击 Execute。
|
| 3. | 在 Rename Wizard 中,单击 Business Model and Mapping 选项卡并选择 SH 业务模型。
|
| 4. | 单击 Add Hierarchy 按钮。
|
| 5. | 单击 Next。 |
| 6. | 单击 Select None。
|
| 7. | 选中 Logical Table 和 Logical Column。
|
| 8. | 单击 Next。 |
| 9. | 选择 All text lowercase。
|
| 10. | 单击 Add。
|
| 11. | 单击 Change specified text。在 Find 框中,键入一个下划线。在 Replace 框中,键入一个空格。
|
| 12. | 单击 Add。
|
| 13. | 单击 First letter of each word capital 并单击 Add。
|
| 14. | 单击 Change specified text。在 Find 框中,键入空格和字母 Id。在 Replace With 框中,键入一个空格和字母 ID。选中 Case sensitive。
|
| 15. | 单击 Add。
|
| 16. | 单击 Next 并查看更改。
|
| 17. | 单击 Finish 并验证 Business Model and Mapping 中的逻辑表和逻辑列已按预期进行了更改。
|
| 18. | 保存信息库。不要检查全局一致性。 |
要删除业务模型中不需要的逻辑列,执行以下步骤:
1. |
对于 Business Model and Mapping 层中的 Channels 逻辑表,使用 Ctrl + 单击来选择 Channel Class ID 和 Channel Total ID 逻辑列。
|
2. |
右键单击其中一个高亮列并选择 Delete 删除列。或者,您可以使用键盘上的 Delete 键。
|
| 3. | 单击 Yes 确认删除。
|
| 4. | 验证 Channels 逻辑表现在仅含有四个逻辑列。
|
| 5. | 重复这些步骤删除 Customers 表中的以下逻辑列: Cust City ID Cust State Province ID Country ID Cust Main Phone Number Cust Total ID Cust Src ID Cust Eff From Cust Eff To Cust Valid
|
| 6. | 将光标置于该图标上以显示屏幕截图,验证 Customers 逻辑表仅包含以下逻辑列:
|
| 7. | 将光标置于该图标上以显示屏幕截图,重复步骤删除 Products 表中高亮的逻辑列。
|
| 8. | 将光标置于该图标上以显示屏幕截图,验证 Products 逻辑表仅包含以下逻辑列:
|
| 9. | 将光标置于该图标上显示屏幕截图,重复步骤删除 Promotions 表中高亮的逻辑列。
|
| 10. | 将光标置于该图标上显示屏幕截图,验证 Promotions 逻辑表仅包含以下逻辑列:
|
| 11. | 不要删除 Times 表中的任何列。 |
| 12. | 保存信息库。不要检查全局一致性。 |
维层次将正式的层次引入业务模型中,使 Oracle BI Server 可以计算有用的量度并使用户可以进行下钻以获取更多详细信息。在业务模型中,维层次代表属于单一逻辑维表的逻辑列的分层结构形式。业务模型中使用的常规维层次有时间段、产品、客户、供应商等。
维层次在 Business Model and Mapping 层中创建并且最终用户不会在最终用户工具(Oracle BI Answers 或者 Interactive Dashboards)中看见这些维层次。在每个维层次中,您将维属性组织到层次级别。这些级别代表您业务所需的企业性规则和报表需求。他们提供 Oracle BI Server 使用的结构以对维度进行下钻,从而获取数据的更详细视图。维层次级别用于执行聚合导航、配置基于级别的度量计算并决定 Oracle BI 用户在数据请求中进行下钻时显示的属性。
要在 SH 业务模型中构建 Channels 维层次,执行以下步骤:
1. |
右键单击 Channels 逻辑表并选择 Create Dimension。
|
2. |
右键单击在之前步骤中创建的 ChannelsDim 对象并选择 Expand All。
|
| 3. | 将光标置于该图标上以显示屏幕截图,验证 ChannelsDim 维层次与下图匹配。
|
| 4. | 右键单击 Channels Detail 级别并选择 New Object > Parent Level。
|
| 5. | 在 Logical Level 对话框中,将逻辑级别命名为 Class 并将 Number of elements at this level 设置为 3。该数字并不需要精确。应以从一个级别到下一个级别的比率为准,而不是绝对数字。这些数字仅影响所使用的聚合源(优化,而不是更正查询)。
|
| 6. | 单击 OK 关闭 Logical Level 对话框。将新的 Class 级别添加到该层次。
|
| 7. | 右键单击 Class 级别并选择 Expand All。
|
| 8. | 从 Channel Detail 级别将 Channel Class 列拖到 Class 级别,从而将逻辑列与该层次级别相关联。
|
| 9. | 右键单击 Channel Class 并选择 New Logical Level Key。
|
| 10 | 在 Logical Level Key 对话框中,验证已选择 Channel Class 和 Use for drilldown。该级别键在每一个逻辑级别中定义唯一的元素。每个级别键可在本级别包含一个或多个列。
|
| 11. | 单击 OK 关闭 Logical Level Key 对话框。现在,Channel Class 列前出现一个钥匙图标。
|
| 12. | 右键单击 Class 级别并选择 New Object > Parent Level。
|
| 13. | 在 Logical Level 对话框中,将逻辑级别命名为 Channel Total Attribute 并将 Number of elements at this level 设置为 1。
|
| 14. | 单击 OK 关闭 Logical Level 对话框。将 Channel Total Attribute 级别添加到该层次。
|
| 15. | 右键单击 Channel Total Attribute 级别并选择 Expand All。
|
| 16.. | 将 Channel Total 列从 Channel Detail 级别拖到 Channel Total Attribute 级别。
|
| 17. | 右键单击 Channel Total 并选择 New Logical Level Key。
|
| 18. | 在 Logical Level Key 对话框中,验证已选择 Channel Total 和 Use for drilldown。
|
| 19. | 单击 OK 关闭 Logical Level Key 对话框。现在,Channel Total 列前出现一个钥匙图标。
|
| 20. | 右键单击 Channel Desc 列并选择 New Logical Level Key。
|
| 21. | 在 Logical Level Key 对话框中,您将看到已选择 Use for drilldown。
|
| 22. | 单击 OK 关闭 Logical Level Key 对话框。Channel Desc 和 Channel ID 前出现了钥匙图标。
|
| 23. | 双击 Channels Detail 级别打开 Logical Level 对话框。
|
| 24. | 单击 Keys 选项卡。
|
| 25. | 单击 Channels Detail_Key。
|
| 26. | 单击 Edit 按钮。
|
| 27. | 在 Logical Level Key 对话框中,取消选中 Use for drilldown。
|
| 28. | 单击 OK 关闭 Logical Level Key 对话框。您将看到钥匙图标是不一样的。Channel Desc 用于下钻,而 Channels Detail_Key 不是。稍后,当用户在 Answers 或信息板中进行下钻时,默认的下钻目标到是在下一最低级别选中了 Use for drilldown 的级别键。基于本例,当用户从 Channel Class 列(下一个最高级别)进行下钻时,默认情况下,将下钻到 Channel Desc 列,而不是 Channels Detail_Key 列。
|
| 29. | 单击 OK 关闭 Logical Level 对话框。 |
| 30. | 将光标置于该图标上以显示屏幕截图,验证完成的 ChannelsDim 层次与下图类似。
|
| 31. | 保存信息库。不要检查全局一致性。 |
| 32. | 可选:针对 Products 逻辑表构建一个维层次。使用之前的步骤,屏幕截图以及以下特性作为指南。如果您无法完成本步骤,也无需担心。在本 OBE 的第 2 部分中,您将使用一个预置了维层次的信息库。
ProductsDim 维层次应具备以下特性: 对于 Subcategory 级别,将 Number of elements at this level 设置为 21。 对于 Category 级别,将 Number of elements at this level 设置为 5。 对于 Product Total Attribute level,将 Number of elements at this level 设置为 1。 对于 Products Detail 级别,取消选中 Products Detail_Key (Prod ID) 的 Use for drill down。 针对 ProductsDim 层次中的所有其他键选中 Use for drill down。 如果您完成了本步骤,保存信息库。不要检查全局一致性。
|
在本主题中,您将使用 Oracle BI Administration Tool 构建信息库的表示层。
表示层在物理层和业务模型和映射层之后构建,并在业务模型和映射层上添加一个抽象级别。这是最终用户可以在客户端工具和应用程序(例如,Oracle BI Answers)中看见的视图。表示层为最终用户提供进一步简化或自定义业务模型和映射层的方法。例如,您可以将列组织为目录和文件夹。
为用户简化数据视图使基于用户业务需求的巧妙查询变得更加简单,因为您可以仅显示对用户有意义的数据,以符合用户思考数据方式的方法来组织数据,并将数据根据用户需求重命名。
通常情况下,您将通过从业务模型和映射层拖拽对象来创建表示层。对应的对象将在表示层中自动创建。然后,可以对表示层对象重命名和重新进行组织。
要构建表示层,执行以下步骤:
| 1. | 将 SH 业务模型从 Business Model and Mapping 层拖拽到 Presentation 层以在 Presentation 中创建 SH 目录。
|
| 2. | 在 Presentation 层中展开 SH 目录。您将看到 Presentation 层中的表和列与 Business Model and Mapping 层中的表和列精确匹配。您还将看到并未显示维层次。
|
| 3. | 保存信息库。不要检查全局一致性。 |
您已经完成了初始业务模型的构建,现在需要在继续开发前测试信息库。您可以先使用检查一致性选项来检查错误信息库。然后,您可以通过使用 Oracle BI Answers 运行查询来测试信息库。最后,您可以检查查询日志文件验证 Oracle BI Server 生成的 SQL。
要测试并验证数据库,执行以下步骤:
![]() |
运行一致性检查 | |
![]() |
启用查询日志记录 | |
![]() |
修改 NQSConfig.ini | |
![]() |
启动 Oracle BI Services | |
![]() |
使用 Oracle BI Answers 执行查询 | |
![]() |
使用查询日志验证查询 | |
一致性检查是 Administration Tool 的一个功能,用于检查信息库是否满足某些需求。在可使用业务模型进行查询前,其中的信息库和业务模型必须通过一致性检查。当信息库或业务模型不一致时,一条详细的消息将提醒您查看不一致的类型。
Consistency Check Manager 将显示三类消息:
Error 消息说明需要修复以使信息库一致的错误。
Warning 消息说明可能是或可能不是错误的条件,取决于 Oracle BI Server 管理员的目的。例如,如果 Administrator 用户的口令为空,将出现该消息,但这不是一致的信息库的需求。
Best Practice 消息提供关于条件的信息,但并不表示不一致。例如,如果存在未定义键的物理表,则将显示最佳实践消息。为物理表定义键是最佳实践,但是并不是信息库一致性的需求。
Consistency Check Manager 针对每一条消息验证消息类型、对象类型、对象并提供该消息的详细描述。可以使用选项来选择仅显示已选消息类型、显示使用限定名称的结果、检查信息库中所有对象以及将结果复制到另一个文件。
要检查一致性,执行以下步骤:
| 1. | 选择 File > Check Global Consistency。
|
| 2. | 您应该收到一条消息指明信息库是一致的并且询问您是否希望其可用于查询。
|
| 3. | 单击 Yes 使 SH 业务模型对查询可用。将显示 Consistency Check Manager。
|
| 4. | 如果 Consistency Check Manager 显示任何 Error 消息,则编辑信息库以更正不一致性并再次运行一致性检查。 如果您仅看到 Warning 和Best Practices 消息,您可以忽略该消息并单击 Close。
|
| 5. | 在 Business Model and Mapping 层,您将看到 SH 业务模型图标已更改为显示该业务模型已对查询可用(红色禁用符号已消失)。
|
| 6. | 双击 SH 业务模型对象打开 Business Model 属性对话框。您将看到已选中 Available for queries。
|
| 7. | 单击 OK 关闭 Business Model 属性对话框。 |
| 8. | 保存信息库。当被询问是否检查全局一致性时,单击 No(您刚刚已经进行了检查)。 |
要启用 Administrator 用户的查询日志记录,执行以下步骤:
| 1. | 选择 Manage > Security。
|
| 2. | 在 Security Manager 中,选择左侧窗格的 Users。在右侧窗格中将出现 Administrator 用户。
|
| 3. | 在右侧窗格中,双击 Administrator。打开 User 对话框。 |
| 4. | 验证已选择 User 选项卡。在 Password 域中,键入 Administrator,然后在 Confirm Password 域中确认。在 Logging level 域中,将值设置为 2。
要测试该信息库,您需要生成一些查询、检索结果并检验查询日志。您在个人用户级别记录查询活动。日志记录将用于测试、调试和技术支持。在生产模式中,日志记录通常是禁用的,因为查询日志记录可能会产生庞大的日志文件而影响性能。 |
| 5. | 单击 OK 关闭 User 对话框。 |
| 6. | 单击 Action > Close 关闭 Security Manager。 |
| 7. | 保存信息库。不要检查全局一致性。 |
| 8. | 选择 File > Close 关闭信息库。 |
| 9. | 选择 File > Exit 关闭 Administration Tool。 |
在本步骤中,您将更新初始化文件 NQSConfig.ini 的 Repository 和 Cache 部分。启动时,初始化文件的 Repository 部分中的一个条目将指示 Oracle BI Server 将一个特定的信息库加载到内存中。如果 Oracle BI Server 在加载信息库时检测到语法错误,则将该错误记录到服务器日志文件 (...\\OracleBI\server\Log\NQServer.log)。您还将禁用缓存。除对缓存进行测试外,开发期间通常不用缓存。
| 1. | 导航至 ...\OracleBI\server\Config\,用文本编辑器(例如,记事本)打开 NQSConfig.INI。 |
| 2. | 找到 [ REPOSITORY ] 部分并将条目更改为 Star = SH.rpd, DEFAULT;
|
| 3. | 在 [ CACHE ] 部分(位于 [ REPOSITORY ] 部分下面),将 ENABLE 参数从 YES 更改为 NO。
|
| 4. | 保存更改并关闭 NQSConfig.INI。 |
在本步骤中,您将启动 Oracle BI Server 服务以将 SH 信息库加载到内存中。
| 1. | 选择 Start > Programs > Administrative Tools > Services。 |
| 2. | 启动 Oracle BI Server 服务。验证 Oracle BI Presentation Server 和 Oracle BI Java Host 服务已启动。如果未启动,请启动这两个服务。并非必须启动 Oracle BI Scheduler 或 Oracle BI Cluster Controller 服务。可以任何顺序启动服务。
|
| 3. | 最小化 Services 窗口。 |
要启动 Oracle BI Answers 并执行查询,执行以下步骤:
| 1. | 选择 Start > Programs > Oracle Business Intelligence > Presentation Services。 |
| 2. | 以 Administrator 身份和 Administrator 口令登录到 Oracle Business Intelligence。
|
| 3. | 单击 Answers 链接。
|
| 4. | 单击 SH 主题区域。
|
| 5. | 在左侧窗格中,单击 Customers 文件夹将其展开。您将看到 Answers 中的文件夹和列与信息库 Presentation 层中的文件夹和列相匹配。
|
| 6. | 单击左侧窗格中的 Cust State Province 列将其添加到右侧的请求条件。
|
| 7. | 单击左侧的 Sales Facts 文件夹并将其展开。
|
| 8. | 单击 Amount Sold 列将其添加到请求条件。
|
| 9. | 单击 Results 选项卡。
|
| 10. | 默认情况下,结果将显示在混合布局中,含有一个标题和一个表视图。
|
| 1. | 单击 Settings > Administration 打开 Oracle BI Presentation Services Administration 窗口。
|
| 2. | 单击 Manage Sessions 链接打开 Session Management 窗口。
|
| 3. | 在 Session Management 窗口中,在 Cursor Cache 下,单击最后条目的 View Log 链接。
|
| 4. | 日志显示由 Administrator 执行的最后查询。您的日志文件将与下图类似。
找到 SQL Request 部分。此部分包含从 Answers 发出的逻辑 SQL。 找到 General Query Info 部分,就在 SQL Request 部分的下方。该部分从运行的查询中识别信息库、主题区和表示目录。 找到 Sending query to database named SH 部分,位于 General Query Info 部分的下方。该部分识别 Oracle BI Server 连接的物理数据源和生成的物理 SQL。 文件的余下部分包含查询状态、返回的行数等信息。
|
| 5. | 关闭查询日志。 |
| 6. | 单击 Finished 关闭 Session Management 窗口。 |
| 7. | 单击 Close Window 关闭 Oracle Bi Presentation Services Administration 窗口。 |
| 8. | 保留 Answers 打开状态。 恭喜!到目前为止,您已经成功构建了信息库的物理层、业务模型和映射层以及表示层,运行了一致性检查,并使用 Oracle BI Answers 测试了信息库。对于本 OBE 余下的部分,您将通过执行以下操作改进信息库,例如,构建计算量度、添加多逻辑表源、构建变量和初始化块、映射到聚合表等。 |
通常,业务希望对比度量的值并需要用计算来表示该对比。Oracle BI Server 拥有一个可执行多种计算的计算引擎。计算度量使最终用户可以询问类似“请显示 Q3 的应收账款余额”或“请显示订单数量和运抵数量的差值。”等问题。Expression Builder 使您能够创建与使用 SQL 创建的表达式类似的表达式。在本教程的示例中,您将使用 Expression Builder 创建将在 Answers 中对用户显示为列的计算度量。然后,用户可以使用熟悉的术语轻松构建查询。
在 Administration Tool 中创建计算度量的方法有很多。您可以使用现有逻辑列作为公式中的对象,使用物理列作为公式中的对象或使用 Calculation Wizard 自动化流程。本 OBE 对这三种方法均有介绍。您将使用物理列进行需要在计算后 应用聚合规则的计算。您将使用逻辑列进行需要在计算前 应用聚合规则的计算。您还可以在 Answers 中构建计算度量。在信息库中构建计算度量的优势是,只需构建度量一次即可使其对所有用户可用。基于现有逻辑列定义逻辑列公式的优势是,只需对其进行一次定义。在您基于物理列创建公式后,您必须映射可能衍生该公式的每一个物理源。
要创建计算度量,执行以下步骤:
![]() |
加载预置信息库 | |
![]() |
创建新度量 | |
![]() |
使用 Answers 创建计算度量 | |
![]() |
使用逻辑列创建计算度量 | |
![]() |
使用物理列创建计算度量 | |
![]() |
使用 Calculation Wizard 创建计算度量 | |
预置信息库将帮助您更快地完成本 OBE 中的其他练习。提供的信息库类似于您在本 OBE 第一部分中构建的信息库,但是存在以下差异:
针对物理层中的 COSTS 物理表构建物理联接。
有四个其他的维层次:CustomersDim、ProductsDim、PromotionsDim 和 TimesDim。
要加载预置信息库,执行以下步骤:
| 1. | 终止 Oracle BI Server 服务。 |
| 2. | 使用 Windows 资源管理器,导航至 <InstallDrive>\OracleBI\server\repository。 |
| 3. | 将 SH.rpd 文件的名称更改为 SH_PartOne.rpd。 |
| 4. | 使用 Windows 资源管理器,导航至 SetupFiles 文件夹并将 SH_PartTwo.rpd 文件复制到 <InstallDrive>\OracleBI\server\repository。 |
| 5. | 将 SH_PartTwo.rpd 重命名为 SH.rpd。无需更新 NQSConfig.ini 文件,因为在之前的步骤中,您已修改了初始化文件 Repository 部分的条目并指示 Oracle BI Server 在启动时将 SH 信息库加载到内存中。 |
| 6. | 启动 Oracle BI Server 服务。 |
| 7. | 单击 Start > Programs > Oracle Business Intelligence > Administration 打开 Administration Tool。
|
| 8. | 单击 File > Open > Online。 |
| 9. | 在 Open Online AnalyticsWeb 对话框,在 Password 域中键入 Administrator 并单击 Open。
|
| 10. | 以联机模式打开 SH 信息库。
目前为止,您在对信息库做的所有更改都是在脱机模式下进行的。现在您拥有一个一致的信息库,而且 Oracle BI Server 正在运行并使用该信息库,您可以在联机模式中更改元数据。 通常,您在脱机模式中开发信息库,而联机模式则用于更新和更改。 如果需要,在继续本 OBE 其他步骤前检查所提供信息库的结构。特别要检查以下差异:COSTS 物理表的物理联接以及四个其他的维层次:CustomersDim、ProductsDim、PromotionsDim 和 TimesDim。 |
| 11. | 要验证连接,单击 Tools > Update All Row Counts。这可能需要几分钟的时间。
|
| 12. | 当 Update Row Counts 完成后,展开 Physical 层并验证显示所有表和列的行数。
您将看到这些对象上都有一个红色对号。因为 Oracle BI Server 可能在您在联机模式中编辑信息库时处理查询,您必须在编辑前签出对象。当完成对该对象的编辑后,您再将其签入。这时,您所做的更改将生效。当您完成编辑后,您可以保存对信息库的更改。 在本例中,将 Administration Tool 配置为自动签出对象。因此,当您运行 Update Row Counts 时,对象将自动签出。如果您未看到红色对号,选择 Tools > Options > General Tab > Check out objects automatically。
|
要向 Sales Facts 表添加一个新的度量,执行以下步骤:
| 1. | 在 Physical 层中,导航至 COSTS > UNIT_COST。
|
| 2. | 将 UNIT_COST 从 Physical 层拖至 Sales Facts 逻辑表的 SALES 逻辑表源中。UNIT_COST 显示为 Sales Facts 逻辑表中的逻辑列。
|
| 3. | 右键单击 UNIT_COST 逻辑列并选择 Rename,将该列重命名为 Unit Cost。或者,慢速双击该列使其可编辑。
|
| 4. | 将 Unit Cost 列的聚合规则设置为 SUM。提示:双击该列打开 Logical Column 属性对话框,单击 Aggregation 选项卡。
|
| 5. | 将 Unit Cost 逻辑列拖至 Sales Facts 表示文件夹。
|
| 6. | 单击 File > Check In Changes 或单击工具栏上的 Check In Changes button 签入更改。
|
| 7. | 在收到提示时,单击 Yes 检查全局一致性。将打开 Consistency Check Manager 并显示 Warnings 和 Best Practices 消息。查看该消息。
|
| 8. | 考虑到本 OBE 的目的,您将禁用 Warnings 和 Best Practices 消息。单击 Options 标签。
|
| 9. | 展开 Warnings 文件夹,选择 Check Features Match Default,然后单击 Disable 按钮。
如果您需要,查看其他选中的 Warnings 项。
|
| 10. | 选择 Best Practices > Physical Table > Search for Tables With No Keys,然后单击 Disable 按钮。
如果您需要,查看其他选中的 Best Practices 项。
|
| 11. | 单击 Messages 选项卡。
|
| 12. | 单击 Check All Objects。Consistency Check Manager 不显示任何消息,表示这是一个一致的信息库。
|
| 13. | 单击 Close 关闭 Consistency Check Manager。 |
| 14. | 保存信息库。
|
| 15. | 返回 Answers 在 Answers 中测试新列。如果未开启 Answers,选择 Start > Programs > Oracle Business Intelligence > Presentation Server,以身份 Administrator 和口令 Administrator 登录,单击 Answers 链接,并单击 SH 主题区。 |
| 16. | 单击 Reload Server Metadata。 |
| 17. | 构建以下请求: Times.Calendar Year、Sales Facts.Amount Sold、Sales Facts.Unit Cost。
|
| 18. | 单击 Results。
|
| 19. | 单击 Settings > Administration > Manage Sessions > View Log 查看该查询日志并检查请求生成的 SQL。
|
在您使用 Administration Tool 在元数据中创建计算度量之前,将使用 Answers 创建一个计算度量。这样您可以稍后在信息库中创建相似的计算度量时对比结果。
要使用 Answers 创建计算度量,执行以下步骤:
| 1. | 单击 Criteria 选项卡。之前步骤集的请求应仍然开启。 |
| 2. | 向请求再添加一个 Amount Sold 列。
|
| 3. | 单击您刚刚添加的 Amount Sold 列的 Edit Formula 按钮。
|
| 4. | Edit Column Formula 对话框的 Column Formula 域中显示 "Sales Facts"."Amount Sold"。
|
| 5. | 在 Edit Column Formula 对话框中,单击 Column Formula 域中 "Sales Facts"."Amount Sold" 的右侧。 |
| 6. | 单击 Minus 运算符将其添加到公式中。
|
| 7. | 在左侧面板中,单击 Sales Facts > Unit Cost 将其添加到公式。
|
| 8. | 单击 Custom Headings 复选框。
|
| 9. | 在 Custom Heading 域中,键入 Gross Profit。
|
| 10. | 单击 OK 关闭 Edit Column Formula 对话框并验证对请求的更改。
|
| 11. | 单击 Results。
|
| 12. | 单击 Settings > Administration > Manage Sessions > View Log 查看查询日志。
|
| 13. | 为下一个主题保持 Answers 开启。
|
在本主题中,您将通过使用现有的逻辑列定义计算公式,在 Sales Facts 逻辑表中定义一个名为 Gross Profit 的新计算度量。
要使用逻辑列创建计算度量,执行以下步骤:
| 1. | 返回 SH 信息库,其在 Administration Tool 中仍在联机模式中开启。 |
| 2. | 右键单击 Sales Facts 逻辑表并选择 New Object > Logical Column。
|
| 3. | 在 Logical Column 对话框中,将逻辑列命名为 Gross Profit 并选中 Use existing logical columns as the source。
|
| 4. | 单击 Expression Builder 按钮(三个点)打开 Expression Builder。
|
| 5. | 在左侧窗格中,单击 Logical Tables。
|
| 6. | 在中间窗格中选择 Sales Facts,在右侧窗格中选择 Amount Sold,并单击 Insert。将 Amount Sold 列添加到公式中。
|
| 7. | 单击减号运算符将其添加到公式。
|
| 8. | 在右侧窗格双击 Unit Cost 将其添加到公式。
|
| 9. | 单击 OK 关闭 Expression Builder。您将看到 Logical Column 对话框中显示该公式。
|
| 10. | 单击 OK 关闭 Logical Column 对话框。业务模型中显示 Gross Profit 逻辑列。
|
| 11. | 将 Gross Profit 逻辑列拖到 Presentation 层的 Sales Facts 表。
|
| 12. | 签入更改。 |
| 13. | 在收到提示时,单击 Yes 检查全局一致性。如果信息库一致(无 Error 消息),关闭 Consistency Check Manager。如果出现 Error 消息,您必须先更正这些错误,然后才能继续。 |
| 14. | 保存信息库。
|
| 15. | 返回到 Answers,其在之前主题中已经开启。 |
| 16. | 单击 Reload Server Metadata。
|
| 17. | 展开 Sales Facts 并验证 Gross Profit 列在 Answers 中可见。
|
| 18. | 创建以下请求:(如果之前主题的请求仍然开启,删除您在 Answers 中创建的 Gross Profit,然后将您在信息库中创建的 Gross Profit 列添加到查询。) Times.Calendar Year、Sales Facts.Amount Sold、Sales Facts.Unit Cost、Sales Facts.Gross Profit
|
| 19. | 单击 Results。验证该结果和您使用在 Answers 中创建的 Gross Profit 列构建的查询相同。
|
| 20. | 单击 Settings > Administration > Manage Sessions > View Log 查看查询日志。结果应与下图类似。
您将看到 AMOUNT_SOLD 和 UNIT_COST 间的差值在外部查询块中进行计算。(本例图中为 SAWITH0.c2 - SAWITH0.c1 as c4)。因为您使用逻辑列定义了 Gross Profit 计算,将首先计算列的总和,然后计算差值。您将在下一个练习中将这些结果与查询的结果进行对比。 |
| 21. | 关闭查询日志。 |
| 22. | 单击 Finished 关闭 Session Management 窗口。 |
| 23. | 单击 Close Window 关闭 Oracle BI Presentation Services Administration。 |
| 24. | 为下一个主题保持 Answers 开启。 |
在本主题中,您将通过使用物理列定义计算公式,在 Sales Facts 逻辑表中定义一个名为 Gross Profit Physical 的计算度量。
要使用物理列创建计算度量,执行以下步骤:
| 1. | 返回 SH 信息库,其在 Administration Tool 中仍在联机模式中开启。 |
| 2. | 右键单击 Sales Facts 逻辑表并选择 New Object > Logical Column。
|
| 3. | 在 Logical Column 对话框中,将逻辑列命名为 Gross Profit Physical。
|
| 4. | 单击 Aggregation 选项卡。 |
| 5. | 将默认聚合规则设置为 SUM。
|
| 6. | 单击 OK 关闭 Logical Column 对话框。Gross Profit Physical 将添加到业务模型中。
|
| 7. | 展开 Sales Facts > Sources 并双击 SALES 逻辑表源。打开 Logical Table Source 对话框。
|
| 8. | 单击 Column Mapping 选项卡。
|
| 9. | 单击 Gross Profit Physical 逻辑列的 Expression Builder 按钮。
|
| 10. | 在 Expression Builder 中,选择 Physical Tables > SALES > AMOUNT_SOLD,然后单击 Insert 按钮将列添加到公式。
|
| 11. | 单击减号运算符将其添加到公式。 |
| 12. | 选择 Physical Tables > COSTS > UNIT_COST,然后单击 Insert 按钮将列添加到公式。
|
| 13. | 单击 OK 关闭 Expression Builder。您将看到表达式已添加到 Logical Table Source 对话框。
|
| 14. | 单击 OK 关闭 Logical Table Source 对话框。Gross Profit Physical 的图标会更改以表示已应用聚合规则。
|
| 15. | 将 Gross Profit Physical 拖拽到 Presentation 层的 Sales Facts。
|
| 16. | 签入更改。 |
| 17. | 在收到提示时,单击 Yes 检查全局一致性。如果信息库一致(无 Error 消息),关闭 Consistency Check Manager。如果出现 Error 消息,您必须先更正这些错误,然后才能继续。 |
| 18. | 保存信息库。
|
| 19. | 返回 Answers,其在之前主题中已经开启。 |
| 20. | 单击 Reload Server Metadata。
|
| 21. | 展开 Sales Facts 并验证 Gross Profit Physical 列在 Answers 中可见。
|
| 22. | 创建以下请求: Times.Calendar Year、Sales Facts.Amount Sold、Sales Facts.Unit Cost、Sales Facts.Gross Profit Physical
|
| 23. | 单击 Results。验证 Gross Profit Physical(使用物理列构建)的结果与 Gross Profit 列(使用逻辑列构建)的结果相同。
逻辑列的计算公式如下所示:sum(Amount Sold) – sum(Unit Cost),而物理列的计算公式应如下所示:sum(AMOUNT_SOLD – UNIT_COST)。由于算术法则,您知道可以对 ColumnA 和 ColumnB 求和,然后计算这两个和的差,这和您先计算差(每行的 ColumnA 的值 - ColumnB 的值),再对差求和的结果是一样的。所以本例中,逻辑列和物理列计算的结果是相同的。 |
| 24. | 单击 Settings > Administration > Manage Sessions > View Log 查看查询日志。结果应与下图类似。
您将看到先计算 Amount Sold 和 Unit Cost 的差,然后求和:sum(T245.AMOUNT_SOLD - T168.UNIT_COST) 如此处例图所示。 |
| 25. | 关闭查询日志。 |
| 26. | 单击 Finished 关闭 Session Management 窗口。 |
| 27. | 单击 Close Window 关闭 Oracle BI Presentation Services Administration。 |
| 28. | 为下一个主题保持 Answers 开启。 |
在本主题中,您将使用 Calculation Wizard 在 Sales Facts 逻辑表中定义一个名为 Share of Category 新计算度量。
要使用 Calculation Wizard 创建计算度量,执行以下步骤:
| 1. | 返回 SH 信息库,其在 Administration Tool 中仍在联机模式中开启。 |
| 2. | 右键单击 Amount Sold 逻辑列并选择 Duplicate。
|
| 3. | 将一个名为 Amount Sold#1 的新列添加到业务模型中。
|
| 4. | 将 Amount Sold#1 重命名为 Category Sales。
|
| 5. | 双击 Category Sales 打开 Logical Column 对话框。 |
| 6. | 单击 Levels 选项卡并选择 Category 作为 ProductsDim 的逻辑级别。
Category Sales 现在是基于级别的度量,当用于查询时,将在类别级别计算销售总额。基于级别的度量对创建共享度量非常有用。在接下来的步骤中,您将使用 Calculation Wizard 创建共享度量。
|
| 7. | 单击 OK 关闭 Logical Column 对话框。 |
| 8. | 右键单击 Amount Sold 并选择 Calculation Wizard。
将打开 Calculation Wizard。
|
| 9. | 单击 Next。 |
| 10. | 选中 Category Sales 作为与 Amount Sold 对比的列。
|
| 11. | 单击 Next。 |
| 12. | 取消选中 Change 和 Percent Change,选中 Percent。
|
| 13. | 将 Calculation Name 更改为 Share of Category。
|
| 14. | 单击 Next。
|
| 15. | 单击 Finish。Share of Category 已添加到业务模型中。
|
| 16. | 将 Category Sales 和 Share of Category 拖到 Presentation 层的 Sales Facts 中。
|
| 17. | 签入更改。 |
| 18. | 在收到提示时,单击 Yes 检查全局一致性。如果信息库一致(无 Error 消息),关闭 Consistency Check Manager。如果出现 Error 消息,您必须先更正这些错误,然后才能继续。 |
| 19. | 保存信息库。
|
| 20. | 返回 Answers,其在之前主题中已经开启。 |
| 21. | 单击 Reload Server Metadata。 |
| 22. | 展开 Sales Facts 并验证 Category Sales 和 Share of Category 在 Answers 中可见。
|
| 23. | 将光标置于该图标上以显示屏幕截图,并将其用作创建查询的参考。您将看到 Prod Category 和 Amount Sold 列的排序设置。
|
| 24. | 展开 Times 文件夹。 |
| 25. | 按住 Ctrl 键并单击 Calendar Year 列打开 Create/Edit Filter 对话框。
|
| 26. | 单击 All Choices 链接。
|
| 27. | 单击 2001 将其添加到 Value 域。
|
| 28. | 单击 OK 关闭 Create/Edit Filter 对话框。该筛选器已添加到请求。
|
| 29. | 单击 Results。在图片中仅显示了部分结果。
|
| 30. | 保留 Answers 开启。 |
表示层在物理层和业务模型和映射层之后构建并在业务模型和映射层上添加一个抽象级别。这是最终用户可以在客户端工具和应用程序(例如,Oracle BI Answers)中看见的数据视图。表示层为最终用户提供进一步简化或自定义业务模型和映射层的方法。例如,您可以将列组织为目录和文件夹。
为用户简化数据视图使基于用户业务需求的巧妙查询变得更加简单,因为您可以仅显示对用户有意义的数据,以符合用户思考数据方式的方法来组织数据,并将数据根据用户需求重命名。
通常情况下,您将通过从业务模型和映射层拖拽对象来创建表示层。对应的对象将在表示层中自动创建。您还可以根据用户的需求手动创建目录和文件夹。
表示目录使您能够向不同的用户集显示业务模型的不同视图。表示目录应由一个业务模型的内容来进行填充。不可跨业务模型。然而,多个表示目录可引用同一个业务模型。
表示目录含有表示表。您可以使用 Presentation Catalog 属性对话框中的 Presentation Tables 选项卡重新排列、排序或删除表示层表。您还可以使用该选项卡访问 Presentation Table 对话框,在其中您可以创建并编辑表。对表示层的更改不影响业务模型和映射层中的相应对象。
使用表示表将列组织到对用户团体有意义的目录。表示表在 Oracle BI 用户界面中显示为文件夹。表示表包含表示列。表示表可以包含来自一个或多个逻辑表的列。表示表的名称和对象属性独立于逻辑表属性。
表示表包含表示列。使用 Presentation Table 属性对话框中的 Columns 选项卡重新排列、排序或删除表示层列。您还可以使用该选项卡访问 Presentation Column 对话框,在其中您可以创建并编辑列。
表示列定义用于在 Oracle BI 用户界面(例如 Oracle BI Answers)中构建查询的列。默认情况下,表示列的名称与业务模型和映射层中的逻辑列名称相同。要为您的最终用户提供一个便捷的界面,您可以从业务模型和映射层中的一个逻辑表中将列拖到多个表示表上。
要组织表示层,执行以下步骤:
| 1. | 返回 SH 信息库,其在 Administration Tool 中仍在联机模式中开启。 |
| 2. | 在 Presentation 层中,双击 SH 表示目录打开 Presentation Catalog 对话框。
|
| 3. | 单击 Presentation Tables 选项卡。
|
| 4. | 要创建新的表示表,单击 Add 按钮打开 Presentation Table 对话框。 |
| 5. | 单击 General 选项卡并命名表示表 Calendar。
|
| 6. | 在 Description 域中,键入-> Calendar time attributes。在描述中添加 -> 将该表嵌套在其上的表下。该描述在 Answers 中作为工具提示显示。
|
| 7. | 单击 OK 关闭 Presentation Table 对话框。 |
| 8. | 重复步骤,在 Description 域中添加 ->Fiscal time attributes 创建另一个名为 Fiscal 的表示表。
|
| 9. | 拖动表或使用 Up 和 Down 按钮重新将表按以下顺序排列: Times Fiscal Calendar Products Customers Channels Promotions Sales Facts
|
| 10. | 单击 OK 关闭 Presentation Catalog 对话框。新表将添加到 Presentation 层并且表示表已重新排序。
|
| 11. | 双击 Channels 表示表打开 Presentation Table 对话框。
|
| 12. | 单击 Columns 选项卡。
|
| 13. | 拖动列或使用 Up 和 Down 箭头重新排序列。推荐的方法是按层次从上到下排序列。
|
| 14. | 单击 OK 关闭 Presentation Table 对话框。在 Presentation 层中更改列的顺序。
|
| 15. | 展开 Times 表示表。 |
| 16. | 使用剪切和粘贴从 Times 表示表将所有 Fiscal 列移动到 Fiscal 表示表,并将所有其余的列从 Times 表示表移动到 Calendar 表示表。使用 Shift+单击和 Ctrl+单击选择多个列。
|
| 17. | 签入更改。 |
| 18. | 在收到提示时,单击 Yes 检查全局一致性。如果信息库一致(无 Error 消息),关闭 Consistency Check Manager。如果出现 Error 消息,您必须先更正这些错误,然后才能继续。 |
| 19. | 保存信息库。
|
| 20. | 返回 Answers,其在之前主题中已经开启。 |
| 21. | 单击 Reload Server Metadata。 |
| 22. | 验证 Fiscal 和 Calendar 文件夹嵌套在 Times 文件夹下。
|
| 23. | 验证 Fiscal 和 Calendar 文件夹中的列正确显示。
|
| 24. | 验证 Channels 列正确显示。
|
| 25. | 保留 Answers 开启。 |
您可以使用信息库中的变量简化管理任务并动态修改元数据内容以适应不断变化的数据环境。变量在任何时间点上都有唯一的值。可以用来替代 Administration Tool 中 Expression Builder 的文本和常量。Oracle BI Server 在元数据中用变量的值代替了变量。
您将使用 Variable Manager 定义变量和初始化块。
这些变量可分为两类:信息库变量和会话变量。
信息库变量在任何时间点上都有唯一的值。有两种类型的信息库变量:静态和动态。静态信息库变量含有常量值并且在 Oracle BI Server 运行时不更改。动态信息库变量的值随着初始化块中从查询返回的数据而刷新。信息库变量在 Variable Manager 中的用问号图标表示。
在每一位用户登录时会创建会话变量并为其指定一个值。有两种类型的会话变量:系统和非系统。系统变量含有保留名称并在 Oracle BI Server 中用于特定目的,例如验证用户。非系统变量是由 Administrator 创建的特定于应用程序的变量。系统和非系统变量在 Variable Manager 中的用问号图标表示。
初始化块用于初始化动态信息库变量,系统会话变量和非系统会话变量。
要创建初始化块、会话变量和动态信息库变量,执行以下步骤:
![]() |
为会话变量创建初始化块 | |
![]() |
测试初始化块和会话变量 | |
![]() |
创建动态信息库变量 | |
会话变量像动态信息库变量一样,从初始化块中获取其值。然而,与动态信息库变量不同的是,会话变量的初始化并非按计划进行。
当用户启动一个会话,Oracle BI Server 就会创建会话变量的新实例并对其进行初始化。与信息库变量不同的是,在 Oracle BI Server 上有多少活动的会话就有多少会话变量实例。每一个会话变量实例都可以被初始化为不同的值。
会话是用户运行客户端应用程序的实例。会话随应用程序的启动而启动,随应用程序的退出而结束。
要为会话变量创建初始化块,执行以下步骤:
| 1. | 返回 SH 信息库,其在 Administration Tool 中仍在联机模式中开启。 |
| 2. | 单击 Manage > Variables 打开 Variable Manager。
|
| 3. | 单击 Session > Initialization Blocks。
|
| 4. | 右键单击右侧的空白处并选择 New Initialization Block。
|
| 5. | 在 Session Variable Initialization Block 对话框中的 Name 域中键入 setUser。
|
| 6. | 单击 Edit Data Source 按钮打开 Session Variable Initialization Block Data Source 对话框。
|
| 7. | 单击 Browse 按钮并在 Select Connection Pool 对话框中选择 SH > Connection Pool。
|
| 8. | 双击 Connection Pool 或单击 Select 按扭向 Session Variable Initialization Block Data Source 对话框添加连接池。
|
| 9. | 在 Default Initialization String 域中,键入以下初始化字符串: select ':USER', case when upper(':USER') = 'KURT' then 'Germany' when upper(':USER') = 'KEIKO' then 'Japan' when upper(':USER')= 'CHARLES' then 'United Kingdom' when upper(':USER') = 'KAREN' then 'United States of America' end, 'CountryManagers', 2 from Dual
|
| 10. | 单击 OK 关闭 Session Variable Initialization Block Data Source 对话框。初始化字符串在 Session Variable Initialization Block 对话框中可见。
|
| 11. | 单击 Edit Data Target 打开 Session Variable Initialization Block Variable Target 对话框。
|
| 12. | 单击 New 打开 Session Variable 对话框。
|
| 13. | 在 Name 域中,键入 USER。
|
| 14. | 单击 OK 关闭 Session Variable 对话框。 |
| 15. | 在收到 USER 会话变量拥有一个特定目的的提示时,单击 Yes。
|
| 16. | USER 变量将添加到 Session Variable Initialization Block Variable Target 对话框。
|
| 17. | 重复该步骤再添加三个变量:UserCountry、GROUP 和 LOGLEVEL。在收到 GROUP 和 LOGLEVEL 会话变量拥有一个特定目的的提示时,单击 Yes。顺序很重要。变量的顺序必须与初始化块中初始化字符串中的变量值顺序相同。
|
| 18. | 单击 OK 关闭 Session Variable Initialization Block Variable Target 对话框。变量将显示在 Session Variable Initialization Block 对话框的 Variable Target 部分。
|
| 19. | 单击 OK 关闭 Session Variable Initialization Block 对话框。setUser 初始化块在 Security Manager 中可见。
|
| 20. | 单击 Action > Close 关闭 Variable Manager。
|
| 21. | 签入更改。 |
| 22. | 保存信息库。
|
| 1. | 单击 Manage > Security 打开 Security Manager。
|
| 2. | 单击左侧窗格中的 Groups。
|
| 3. | 右键单击右侧的空白处并选择 New Security Group。
|
| 4. | 将该组命名为 CountryManagers。
|
| 5. | 单击 Permissions 按钮打开 User / Group Permissions 对话框。
|
| 6. | 单击 Filters 选项卡。 |
| 7. | 单击 Add 按钮。 |
| 8. | 单击 Customers 表示表。
|
| 9. | 单击 Select 将 Customers 添加到 User / Group Permissions 对话框。
|
| 10. | 单击 Expression Builder 右侧的 Expression Builder 按钮(三个点)(您可能需要滚动屏幕才能看见该按钮)。
|
| 11. | 选择 Logical Tables > Customers > Country,然后单击 Insert 按钮将 Country 添加到公式。
|
| 12. | 单击 = 运算符将其添加到公式中。
|
| 13. | 选择 Session Variables > UserCountry,单击 Insert 按钮将 UserCountry 作为 VALUEOF() 函数的一个参数添加到该公式。
|
| 14. | 单击 OK 关闭 Expression Builder。筛选器已添加到 User / Group Permissions 对话框。
|
| 15. | 单击 OK 关闭 User / Group Permissions 对话框。 |
| 16. | 单击 OK 关闭 Group 对话框。CountryManagers 将作为组添加到 Security Manager 中。
|
| 17. | 单击 Action > Close 关闭 Security Manager。 |
| 18. | 签入更改。 |
| 19. | 保存信息库。 |
| 20. | 返回 Answers。 |
| 21. | 退出 Answers。
|
| 22. | 通过以初始化块中的用户登录到 Answers 来测试初始化块:Kurt、Keiko、Charles 或 Karen。 |
| 23. | 创建以下查询: Customers.Country、Times.Calendar.Calendar Year、Sales Facts.Amount Sold。
|
| 24. | 单击 Results。该查询的结果应与用户的国家相关联(Kurt = Germany、Keiko = Japan、Charles = United Kingdom、Karen = United States of America)。下图显示了当 user = Kurt 时的结果。
|
| 25. | 保留 Answers 打开状态。
|
| 1. | 返回到以联机模式启动的 SH 信息库。 |
| 2. | 单击 Manage > Variables 打开 Variable Manager。 |
| 3. | 单击 Repository > Initialization Blocks。
|
| 4. | 右键单击空白处并选择 New Initialization Block 打开 Repository Variable Init Block 对话框。
|
| 5. | 将初始化块命名为 getMaxSalesDate。
|
| 6. | 单击 Edit Data Source 打开 Repository Variable Init Block Data Source 对话框。
|
| 7. | 单击 Browse 按钮打开 Select Connection Pool 对话框。
|
| 8. | 双击 SH > Connection Pool 对象将其添加到 Repository Variable Init Block Data Source 对话框的 Connection Pool 域中。
|
| 9. | 在 Default Initialization String 域中,键入以下 SQL: select TIME_ID, CALENDAR_YEAR, CALENDAR_MONTH_DESC, CALENDAR_MONTH_ID from TIMES
|
| 10. | 单击 OK 关闭 Repository Variable Init Block Data Source 对话框。连接池和初始化字符串已添加到 Repository Variable Init Block 对话框。
|
| 11. | 单击 Edit Data Target 打开 Repository Variable Init Block Variable Target 对话框。
|
| 12. | 使用 New 按钮创建四个变量:maxSalesDate、maxYear、maxMonthDesc 和 maxMonthID。顺序很重要。变量的顺序必须和初始化字符串中的列顺序一致。
|
| 13. | 单击 OK 关闭 Repository Variable Init Block Variable Target 对话框。变量将出现在 Repository Variable Init Block 对话框中的 Variable Target 域中。
|
| 14. | 单击 Edit Data Source 打开 Repository Variable Init Block Data Source 对话框。 |
| 15. | 单击 Test 并验证结果和下图一样。
|
| 16. | 关闭结果。 |
| 17. | 单击 OK 关闭 Repository Variable Init Block Data Source 对话框。 |
| 18. | 单击 OK 关闭 Repository Variable Init Block 对话框。getMaxSalesDate 初始化块显示在 Variable Manager 中。
|
| 19. | 选择 Repository > Initialization Blocks > Variables > Dynamic 查看 Variable Manager 中显示的变量。
|
| 20. | 单击 Action > Close 关闭 Variable Manager。 |
| 21. | 签入更改。 |
| 22. | 选择 File > Check Global Consistency。如果 Consistency Check Manager 显示了任何错误,请在继续前编辑信息库以更正错误。如果没有错误消息,关闭 Consistency Check Manager。
|
| 23. | 保存信息库。 |
| 24. | 返回 Answers。 |
| 25. | 构建以下查询: Calendar.Calendar Year、Sales Facts.Amount Sold。
|
| 26. | 单击 Calendar Year 列的 Add Filter 按钮。
|
| 27. | 在 Create/Edit Filter 对话框中,单击 Add > Variable > Repository。
|
| 28. | 在 Server Variable 域中,键入 maxYear。
|
| 29. | 单击 OK 关闭 Create/Edit Filter 对话框。该筛选器已添加到请求。
|
| 30. | 单击 Results 并验证 Calendar Year 返回了正确结果。
|
数据经常划分入业务模型中单一逻辑表的多个物理源中。当逻辑表源在给定级别未含有完整的数据集时,您需要指定该数据集所包含的部分。当个别源在给定级别含有该域的一部分或片段的信息时,Oracle BI Server 需要知道源中的内容以针对查询选择相应的源。目的是从用户的角度提供无缝且高效率的访问。当有多个源时候,将构建元数据以便 Oracle BI Server 导航至相应的源。Oracle BI Server 可以无缝访问且以有效的方式从多源中处理数据以满足用户的请求。
在本例中,销售配额数据存储在 Excel 工作簿中。工作簿 SHQuota.xls 存储在您的计算机上。您将配额数字并入业务模型并从配额和配额百分比创建业务度量以报告方差。
要向业务模型中添加配额信息,执行以下步骤。
![]() |
创建 ODBC DSN | |
![]() |
导入 Excel 源 | |
![]() |
映射逻辑维列 | |
![]() |
创建配额度量 | |
![]() |
测试 | |
| 1. | 使用 Windows Explorer,导航至 SetupFiles 文件夹并将 SHQuota.xls 文件复制至您的计算机。 |
| 2. | 单击 Start > Programs > Administrative Tools > Data Sources (ODBC) 打开 ODBC Data Source Administrator。
|
| 3. | 单击 System DSN 选项卡并单击 Add。
开启 Create New Data Source 对话框。 |
| 4. | 在 Create New Data Source 对话框中,选择 Microsoft Excel Driver。
|
| 5. | 单击 Finish 打开 ODBC Microsoft Excel Setup 对话框。
|
| 6. | 在 ODBC Microsoft Excel Setup 对话框中,输入 Data Source Name(可为任意名称)。
|
| 7. | 单击 Select Workbook 打开 Select Workbook 对话框并导航至您保存 SHQuota.xls 文件的位置。
|
| 8. | 单击 OK 关闭 Select Workbook 对话框。到工作簿的路径将显示在 ODBC Microsoft Excel Setup 对话框中。
|
| 9. | 单击 OK 关闭 ODBC Microsoft Excel Setup 对话框。 |
| 10. | 验证 Excel 系统数据源添加到 ODBC Data Source Administrator 并单击 OK 关闭 ODBC Data Source Administrator。
|
| 1. | 返回到以联机模式启动的 SH 信息库。 |
| 2. | 选择 File > Import > from Database。
|
| 3. | 在 Select Data Source 对话框中,选择您在之前步骤中创建的 ODBC DSN。保留 User Name 和 Password 为空。
|
| 4. | 单击 OK。将打开 Import 对话框。 |
| 5. | 在 Import 对话框中,选择 SHQuota 对象。
|
| 6. | 验证仅选中了 Tables 和 Keys 并单击 Import。 |
| 7. | 当导入完毕时,关闭 Import 对话框并验证所有四个范围表都已导入 Physical 层。
|
| 8. | 双击 Physical 层中的 Excel 数据库对象(本例中为 SHQuota)以打开 Database 对话框。
|
| 9. | 单击 Features 选项卡。 |
| 10. | 找到 COUNT_DISTINCT_SUPPORTED 并取消选中 Value 域。
|
| 11. | 单击 OK 关闭 Database 对话框。 |
| 12. | 双击 Excel 数据源的 Connection Pool 以打开 Connection Pool 对话框。
|
| 13. | 单击 General 选项卡并取消选择属性 Enable connection pooling。
|
| 14. | 单击 OK 关闭 Connection Pool 对话框。 |
| 15. | 签入更改。 |
| 16. | 保存信息库。 |
| 1. | 在 Business Model and Mapping 层中展开 Customers > Sources,您会看到有两个逻辑表源:CUSTOMERS 和 COUNTRIES。
|
| 2. | 将物理列 COUNTRY_REGION 从 Physical 层的 Geography拖至 Business Model and Mapping 层中的逻辑列 Customers.Country Region。注意,将自动生成一个新的逻辑表源 Geography。
|
| 3. | 将物理列 COUNTRY_SUBREGION、COUNTRY_NAME、COUNTRY_ID 和 COUNTRY_TOTAL ?从 Physical 层中的 Geography 拖至 Business Model and Mapping 层中 Customers 表的相应逻辑列(将 COUNTRY_NAME 拖至 Country)。 |
| 4. | 双击 Customers > Sources 文件夹中的 Geography 逻辑表源以打开 Logical Table Source 对话框。 |
| 5. | 单击 Column Mapping 选项卡。您将看到从逻辑列到物理列的映射。
|
| 6. | 单击 OK 关闭 Logical Table Source 对话框。 |
| 7. | 将物理列 CALENDAR_YEAR从 Physical 层中的 XLDates 拖到 Business Model and Mapping 层中的逻辑列 Times.Calendar Year。注意,将自动生成一个新的逻辑表源 XLDates。
|
| 8. | 将其余的物理列从 Physical 层中的 XLDates 拖至 Business Model and Mapping 层中 Times 表的相应逻辑列。 |
| 9. | 双击 Times > Sources 文件夹中的 XLDates 逻辑表源以打开 Logical Table Source 对话框,单击 Column Mapping 选项卡,并验证该映射。您会看到取消选中了“Show unmapped columns”。
|
| 10. | 单击 OK 关闭 Logical Table Source 对话框。 |
| 11. | 重复步骤并将 Products.Prod Category 映射到 ProdCategory.PROD_CATEGORY 并验证逻辑表源映射。
|
| 12. | 使用 Ctrl+单击选择 Physical 层中所有四个 SHQuota 表。 |
| 13. | 右键单击四个表中的任意一个并选择 Physical Diagram > Selected Object(s) Only 打开 Physical Diagram。
|
| 14. | 在 Physical Diagram 中,使用 New foreign key 按钮创建以下连接。提示:使用 CTRL+单击创建多列连接或在 Expression 域中键入连接表达式。在提示时创建新键。 XLDates.CALENDAR_QUARTER_NUMBER = Quotas."Calendar Quarter Number" AND XLDates.CALENDAR_YEAR = Quotas."Year" AND XLDates.CALENDAR_QUARTER_DESC = Quotas."Calendar Quarter Desc" Geography.COUNTRY_NAME = Quotas.Country AND Geography.COUNTRY_SUBREGION = Quotas."Country Subregion" AND Geography.COUNTRY_REGION = Quotas."Country Region" ProdCategory.PROD_CATEGORY = Quotas."Prod Category".
|
| 15. | 关闭 Physical Diagram。 |
| 1. | 将列 Quotas.Quota 从 Physical 层拖到 Sales Facts 逻辑表上。您将看到已创建一个新的逻辑表源 Quotas 和一个新的逻辑列 Quota。
|
| 2. | 双击 Sales Facts.Quota 打开 Logical Table 对话框。 |
| 3. | 单击 Aggregation 选项卡并设置聚合规则为 Sum。
|
| 4. | 关闭 Logical Table 对话框。 |
| 5. | Quota 逻辑列以千为单位显示配额,所以将 Quota 重命名为 Quota (000)。
|
| 6. | 右键单击 Sales Facts 并选择 New Object > Logical Column 打开 Logical Column 对话框。 |
| 7. | 单击 General 选项卡并命名逻辑列为 Quota。 |
| 8. | 选中 Use existing logical columns as the source。
|
| 9. | 单击 Expression Builder 按钮(三个点)打开 Expression Builder。 |
| 10. | 创建以下公式: 1000*"SH"."Sales Facts"."Quota (000)"
|
| 11. | 关闭 Expression Builder。公式在 Logical Column 对话框中显示。
|
| 12. | 关闭 Logical Column 对话框。Quota 列已添加到业务模型中。
|
| 13. | 右键单击 Sales Facts.Amount Sold 并选择 Calculation Wizard。 |
| 14. | 单击 Next。 |
| 15. | 选择 Quota 列。
|
| 16. | 单击 Next。 |
| 17. | 确认已选择 Change。在 Calculation Name 域,将计算命名为 Variance from Quota。
|
| 18. | 取消选择 Percent Change。 |
| 19. | 选中 Percent 并进行确认。在 Calculation Name 域中,将名字输入为:% of Quota。
|
| 20. | 单击 Next。 |
| 21. | 在 Finish 窗口中,验证将由 Calculation Wizard 创建的计算。
|
| 22. | 单击 Finish。将计算度量添加到业务模型。
|
| 23. | 将 Quota (000)、Quota、Variance From Quota 和 % of Quota 度量添加到 Sales Facts 表示表。
|
| 24. | 签入更改。 |
| 25. | 检查全局一致性。如果您收到了 Error 消息,请在继续操作前编辑信息库以更正该错误。 |
| 26. | 保存信息库。 |
| 1. | 返回 Answers。注销,然后用 Administrator 和口令 Administrator 再次登录。 |
| 2. | 重新加载服务器元数据。 |
| 3. | 创建以下请求: Calendar.Calendar Year、Sales Facts.Amount Sold、Sales Facts.Quota、Sales Facts.Variance From Quota 和 Sales Facts.% of Quota。
|
| 4. | 创建以下筛选器: Calendar Year is equal to / is in 1999, 2000, 2001。
|
| 5. | 单击 Results。(请注意 SHQuota 仅包含 2001 年的数据)。
|
| 6. | 下钻到 2001。
|
| 7. | 查看查询日志。 |
| 8. | 保留 Answers 处于打开状态。 |
具有相应权限的用户可以直接对物理后端数据库创建并执行一个直接数据库请求。请求的结果可以在 Oracle BI Answers 中显示和操作,并且最后将并入 Oracle BI Interactive Dashboards 和 Oracle BI Delivers 中。
Oracle BI Presentation Services Administration 的以下权限设置控制您是否可以创建并执行物理请求:
编辑直接数据库请求:如果为您设置了权限,您就可以创建直接数据库请求。默认情况下,仅对定义为 Presentation Server Administrators 的用户设置该权限。
执行直接数据库请求:如果为您设置了权限,您就可以执行物理请求。默认情况下,不对任何人设置该权限。可通过 Presentation Server Administrator 对其进行更改。
要执行直接数据库请求,执行以下步骤:
| 1. | 在 Answers 中,单击 Settings > Administration。
|
| 2. | 在 Oracle BI Presentation Service Administration 屏幕中,单击 Manage Privileges 打开 Privilege Administration 屏幕。
|
| 3. | 在 Privilege Administration 屏幕,向下滚动至 Answers。您将看到 Edit Direct Database Requests 权限授予了 Presentation Server Administrators。默认情况下,Administrator 用户为该组的一位成员。
|
| 4. | 您将看到 Execute Direct Database Requests 权限没有授予任何人。
|
| 5. | 单击 (not permitted) 打开 Change Privilege Permissions 屏幕。
|
| 6. | 单击 Presentation Server Administrators 旁边的 Add 按钮将赋予该组对此权限的显式访问权限。
|
| 7. | 单击 Finished 关闭 Change Privilege Permissions 屏幕。您将看到对 Execute Direct Database Requests 访问权限的更改。
|
| 8. | 单击 Finished 关闭 Privilege Administration 屏幕。 |
| 9. | 单击 Close Window 关闭 Oracle BI Presentation Services Administration 屏幕。 |
| 10. | 单击 Answers 链接返回 Answers 起始页面。 |
| 11. | 单击 Create Direct Request 链接。
|
| 12. | 在 Connection Pool 域中,为 SH 数据源键入带有双引号的连接池名称(本例中为 "SH"."Connection Pool")。 |
| 13. | 在 SQL Statement 域中,键入 SELECT * FROM Channels。
|
| 14. | 单击 Validate SQL and Retrieve Columns 从 Channels 表中显示这些列。
|
| 15. | 单击 Results。结果应与以下屏幕截图类似。
|
| 16. | 保留 Answers 处于打开状态。 |
聚合表存储预计算的结果,这些结果是一个维度属性集上聚合(通常为总和)的量度。在决策支持系统中使用聚合表降低查询响应时间是非常受欢迎的方法。这消除了运行时计算的需求,并且可以更快地向用户输出结果。计算提前进行并将结果存储在表中。聚合表应具有比非聚合表更少的行,因此处理应该更加快速。
Oracle BI Server 的聚合导航功能使查询可以自动使用存储在聚合表中的信息,无需查询执行者或执行工具在查询中指定聚合表。Oracle BI Server 使用户可以集中于询问正确的业务问题,因为服务器将挑选提供最快回答的表。对于拥有足够信息导航至聚合表的 Oracle BI Server,您需要在信息库中配置一定的元数据。
要构建并使用聚合表,执行以下步骤:
![]() |
使用直接数据库请求创建聚合表 |
![]() |
导入聚合表 |
![]() |
创建物理联接 |
![]() |
映射现有逻辑列并设置聚合内容 |
![]() |
在 Answers 中测试并查看查询日志 |
| 1. | 使用 Windows Explorer,导航至 SetupFiles 文件夹并打开聚合表 SQL 脚本文件:agg_table_sql.txt。
|
| 2. | 单击 Criteria 选项卡返回到直接数据库请求页面。 |
| 3. | 验证仍将 Connection Pool 域设置为 SH 数据源的带有双引号的连接池名称(本例中为 "SH"."Connection Pool")。 |
| 4. | 从 agg_table_sql.txt 复制第一个表 AGG_ST_CAT_DAY_SALES_F 中的 CREATE TABLE SQL,并将其粘贴到 SQL Statement 域中。
|
| 5. | 单击 Results。您应该会看到一条 No Results 消息。
|
| 6. | 单击 Criteria 选项卡。 |
| 7. | 从 SQL Statement 域中删除 CREATE TABLE SQL。 |
| 8. | 在 SQL Statement 域中键入以下 SQL: SELECT COUNT(*) FROM AGG_ST_CAT_DAY_SALES_F。
|
| 9. | 单击 Validate SQL and Retrieve Columns。
|
| 10. | 单击 Results。您应该看到 COUNT(*) = 158142。
|
| 11. | 单击 Criteria 选项卡。 |
| 12. | 从 SQL Statement 域中删除 SELECT COUNT(*) SQL 语句。 |
| 13. | 复制第二个表 AGG_CUSTOMER_STATE_D 的 CREATE TABLE SQL 并将其粘贴到 SQL Statement 域中。
|
| 14. | 单击 Results。您应该会看到一条 No Results 消息。 |
| 15. | 单击 Criteria 选项卡。 |
| 16. | 从 SQL Statement 域中删除 CREATE TABLE SQL。 |
| 17. | 在 SQL Statement 域中键入以下 SQL: SELECT COUNT(*) FROM AGG_CUSTOMER_STATE_D.
|
| 18. | 单击 Validate SQL and Retrieve Columns。 |
| 19. | 单击 Results。您应该看到 COUNT(*) = 145。
|
| 20. | 单击 Criteria 选项卡。 |
| 21. | 从 SQL Statement 域中删除 SELECT COUNT(*) SQL 语句。 |
| 22. | 复制第三个表 AGG_PRODUCTS_CATEGORY_D 的 CREATE TABLE SQL 并将其粘贴到 SQL Statement 域中。
|
| 23. | 单击 Results。您应该会看到一条 No Results 消息。 |
| 24. | 单击 Criteria 选项卡。 |
| 25. | 从 SQL Statement 域中删除 CREATE TABLE SQL。
|
| 26. | 在 SQL Statement 域中键入以下 SQL: SELECT COUNT(*) FROM AGG_PRODUCTS_CATEGORY_D.
|
| 27. | 单击 Validate SQL and Retrieve Columns。 |
| 28. | 单击 Results。您应该看到 COUNT(*) = 5。
|
| 1. | 返回到 SH 信息库,该信息库应仍在联机模式中开启。 |
| 2. | 选择 File > Import > from Database。 |
| 3. | 在 Select Data Source 对话框中,选择 SH 数据源,输入 SH 为 User Name 和 Password,并单击 OK。
|
| 4. | 在 Import 对话框中,展开 SH 模式并选择三个聚合表:AGG_ST_CAT_DAY_SALES_F、AGG_CUSTOMER_STATE_D 和 AGG_PRODUCTS_CATEGORY_D。
|
| 5. | 单击 Import。 |
| 6. | 导入过程完成后,关闭 Import 对话框。 |
| 7. | 展开 Physical 层中的 SH 文件夹并验证已添加聚合表。
|
| 8. | 签入更改。 |
| 9. | 在 Physical 层中选择三个聚合表,右键单击并选择 Update Row Count 验证连接。您将在每个表后看到正确的行数。
|
| 10. | 签入更改。
|
| 11. | 保存信息库。 |
| 1. | 在 Physical 层中,使用 Ctrl+单击选择三个新的聚合表和 Times 表。
|
| 2. | 单击工具栏上的 Physical Diagram 图标。
|
| 3. | 在 Physical Diagram 中,使用 New foreign key 按钮创建以下联接。在收到提示时,单击 Yes 创建匹配的表键: AGG_CUSTOMER_STATE_D.CUST_STATE_PROVINCE_ID = AGG_ST_CAT_DAY_SALES_F.CUST_STATE_PROVINCE_ID AGG_PRODUCTS_CATEGORY_D.PROD_CATEGORY_ID = AGG_ST_CAT_DAY_SALES_F.PROD_CATEGORY_ID TIMES.TIME_ID = AGG_ST_CAT_DAY_SALES_F.TIME_ID
|
| 4. | 关闭 Physical Diagram。
|
| 5. | 签入更改。 |
| 6. | 保存信息库。 |
| 1. | 通过从 Physical 层将列拖入 Business Model and Mapping 层的相应列中来将现有逻辑列映射到新源:
|
||||||||||||||||||
| 2. | 在 Business Model and Mapping 层中,展开 Sales Facts > Sources 并验证已创建一个新的逻辑表源 AGG_ST_CAT_DAY_SALES_F。
|
||||||||||||||||||
| 3. | 双击 AGG_ST_CAT_DAY_SALES_F 逻辑表源打开 Logical Table Source 对话框,单击 Column Mapping 选项卡并验证映射。
|
||||||||||||||||||
| 4. | 单击 Content 选项卡。 |
||||||||||||||||||
| 5. | 使用 Logical Level 域中的下拉菜单以设置以下逻辑级别: CustomersDim = State Province ProductsDim = Category TimesDim = Times Detail
您将事实表的聚合内容设置为维层次内的相应级别。在下面的步骤中,您将对维表聚合源设置类似的级别。稍后,当用户针对特定级别进行查询时,Oracle BI Server 将访问聚合表,而不是详细信息表。 例如,在设置聚合内容后,如果用户按照 Country Region 查询 Amount Sold,服务器将访问 AGG_ST_CAT_DAY_SALES_F 聚合事实表和相对应的聚合维表 AGG_CUSTOMER_STATE_D。 如果用户查询的级别低于此处指定的级别,例如,Subregion 或 Country,那么服务器将访问详细信息表。如果用户查询更高的级别,例如,Country Total,那么还将使用聚合表,因为当查询针对一个逻辑级别或更高的逻辑级别运行时,将使用聚合表。 |
||||||||||||||||||
| 6. | 单击 OK 关闭 Logical Table Source 对话框。
|
||||||||||||||||||
| 7. | 展开 Customers > Sources,验证已创建一个新的逻辑表源 AGG_CUSTOMER_STATE_D。
|
||||||||||||||||||
| 8. | 展开 Customers > Sources 并双击 AGG_CUSTOMER_STATE_D 逻辑表源,单击 Column Mapping 选项卡并验证该映射。
|
||||||||||||||||||
| 9. | 单击 Content 选项卡。 |
||||||||||||||||||
| 10. | 使用 Logical Level 域中的下拉菜单设置以下逻辑级别以指定聚合表中存储详细内容的级别: CustomersDim = State Province
|
||||||||||||||||||
| 11. | 单击 OK 关闭 Logical Table Source 对话框。 |
||||||||||||||||||
| 12. | 展开 Products > Sources 并验证已创建一个新的逻辑表源 AGG_PRODUCTS_CATEGORY_D。
|
||||||||||||||||||
| 13. | 双击 AGG_PRODUCTS_CATEGORY_D 逻辑表源,单击 Column Mapping 选项卡并验证该映射。
|
||||||||||||||||||
| 14. | 单击 Content 选项卡。 |
||||||||||||||||||
| 15. | 使用 Logical Level 域中的下拉菜单设置以下逻辑级别以指定聚合表中存储详细内容的级别: ProductsDim = Category
|
||||||||||||||||||
| 16. | 单击 OK 关闭 Logical Table Source 对话框。 |
||||||||||||||||||
| 17. | 签入更改。 |
||||||||||||||||||
| 18. | 检查一致性。更正所有错误,然后继续。 |
||||||||||||||||||
| 19. | 保存信息库。注意,您无需对 Presentation 层做任何更改。您在业务模型中做出更改,以影响查询进行的方式和需要访问的源。根据您指定聚合内容的方法,Oracle BI Server 将在合适的时候自动使用新源。 |
| 1. | 返回 Answers。 |
| 2. | 重新加载服务器元数据。
|
| 3. | 创建以下查询: Customers.Country Region、Sales Facts.Amount Sold。
|
| 4. | 按住 Ctrl 键并单击 Times > Calendar > Calendar Year。Create/Edit Filter 对话框打开。
|
| 5. | 创建筛选器 Calendar Year is equal to / is in 2001。
|
| 6. | 单击 OK 关闭 Create/Edit Filter 对话框。该筛选器已添加到查询。
|
| 7. | 单击 Results。
|
| 8. | 单击 Settings > Administration。 |
| 9. | 单击 Manage Sessions。 |
| 10. | 找到在 Cursor Cache 下运行的最新查询并单击 View Log。
|
| 11. | 查看日志并验证已访问聚合表 AGG_CUSTOMER_STATE_D 和 AGG_ST_CAT_DAY_SALES_F。
|
| 12. | 关闭查询日志。 |
| 13. | 单击 Finished 关闭 Session Management 屏幕。 |
| 14. | 单击 Close Window 关闭 Oracle BI Presentation Services 屏幕。
|
将当前业务性能和之前时间段的业务性能进行对比的功能是了解业务的根本。时间对比使业务可以在数据的上下文环境中分析跨多个时间段的数据。目前,根据 Ralph Kimball 所说的,SQL 的设计并没有考虑到直接进行时间上的对比:
“数据仓库最难的区域是将简单业务分析翻译成 SQL。SQL 的设计并没有考虑到业务报表。SQL 确实是一个临时性语言,其设计目的是使关系表语义可以以方便以及可访问的方式表述,并使研究人员和早期开发人员得以在 20 世纪 70 年代中期继续构建第一个关系型系统。对于 SQL 中没有对比今年和去年数据的直接方式,您还能如何解释?”— Ralph Kimball
解决方案是在 Oracle BI 信息库中建模时间序列数据。这使用户可以对所需结果进行请求。Oracle BI Server 并行运行多个查询以获取结果。在后台运行的查询支持对用户透明的时间度量。
Oracle BI Server 提供用于时间序列对比的 Ago 和 ToDate 功能。这两个功能都可以在度量上进行操作。Ago 函数计算从当前时间开始一段时间后的聚合值。例如,Ago 函数可以产生当前季度每个月的销售额,还有一个季度前的销售额。而 ToDate 函数用于从一个特定时间段的开始到当前显示时间聚合度量属性。例如,ToDate 函数可以计算给定年份的 Month to Date 销售额。您将使用 Expression Builder 应用这些函数。
要创建时间序列度量,执行以下步骤:
![]() |
验证维为时间维 | |
![]() |
创建一个 Month Ago 度量 | |
![]() |
创建一个 Change Month Ago 度量 | |
![]() |
创建一个 ToDate 度量 | |
![]() |
测试时间序列度量 | |
| 1. | 在 Business Model and Mapping 层中,双击 TimesDim 维层次打开 Dimension 对话框。 |
| 2. | 在 Dimension 对话框中,选中 Time Dimension。
|
| 3. | 单击 OK 关闭 Dimension 对话框。 |
| 4. | 展开 TimesDim 到 Times Detail 级别,双击 Times Detail 级别打开 Logical Level 对话框。 |
| 5. | 单击 Keys 选项卡。 |
| 6. | 选中 Times Detail_Key 的 Chronological Key 复选框。
|
| 7. | 单击 OK 关闭 Logical Level 对话框。 |
| 1. | 右键单击 Sales Facts 并选择 New Object > Logical Column 打开 Logical Column 对话框。 |
| 2. | 将逻辑列命名为 Month Ago Dollars。
|
| 3. | 选中 Use existing logical columns as the source。 |
| 4. | 单击 Expression Builder 按钮(三个点)打开 Expression Builder。 |
| 5. | 选择 Functions > Time Series Functions > Ago。 |
| 6. | 单击 Insert 将 Ago 函数添加到 Expression Builder。
|
| 7. | 单击表达式中的第一个 <<expr>>。 |
| 8. | 选择 Logical Tables > Sales Facts,然后双击 Amount Sold 将其添加到表达式。
|
| 9. | 单击表达式中的第二个 <<expr>>。 |
| 10. | 选择 Time Dimensions > TimesDim,然后双击 Month 将其添加到表达式。
|
| 11. | 单击表达式中的 <<integer>> 并键入 1。Ago 函数计算当前时间前一个月的 Amount Sold 值。
|
| 12. | 单击 OK 关闭 Expression Builder。公式在 Logical Column 对话框中显示。
|
| 13. | 单击 OK 关闭 Logical Column 对话框。 |
| 1. | 右键单击 Sales Facts 并选择 New Object > Logical Column 打开 Logical Column 对话框。 |
| 2. | 将逻辑列命名为 Change Month Ago Dollars。
|
| 3. | 选中 Use existing logical columns as the source。 |
| 4. | 单击 Expression Builder 按钮打开 Expression Builder。 |
| 5. | 选择 Logical Tables > Sales Facts,然后双击 Amount Sold 将其添加到表达式。 |
| 6. | 在表达式中插入减号。 |
| 7. | 选择 Logical Tables > Sales Facts,然后双击 Month Amount Sold 将其添加到表达式。
|
| 8. | 单击 OK 关闭 Expression Builder。公式在 Logical Column 对话框中显示。
|
| 9. | 单击 OK 关闭 Logical Column 对话框。 |
| 1. | 右键单击 Sales Facts 并选择 New Object > Logical Column。 |
| 2. | 将新逻辑列命名为 Month To Date Dollars。
|
| 3. | 选择 Use existing logical columns as the source。 |
| 4. | 打开 Expression Builder。 |
| 5. | 选择 Functions > Time Series Functions 并双击 ToDate 插入表达式。
|
| 6. | 单击第一个 <<expr>>。 |
| 7. | 选择 Logical Tables > Sales Facts,然后双击 Amount Sold。
|
| 8. | 单击第二个 <<expr>>。 |
| 9. | 选择 Time Dimensions > TimesDim 并双击 Year 将其添加到表达式。
|
| 10. | 单击 OK 关闭 Expression Builder。公式在 Logical Column 对话框中显示。
|
| 11. | 单击 OK 关闭 Logical Column 对话框。 |
| 1. | 在 Business Model and Mapping 层中,展开 Times 逻辑表。 |
| 2. | 双击 Calendar Month Name 打开逻辑列对话框。 |
| 3. | 单击 Set 按钮。 |
| 4. | 选择 Calendar Month Desc 并单击 OK。
|
| 5. | Sort order column 在 Logical Column 对话框中显示。
在 Answers 查询中使用时,Calendar Month Name 列现在已自动按 Calendar Month Desc 排序。 |
| 6. | 单击 OK 关闭 Logical Column 对话框。 |
| 7. | 从 Business Model and Mapping 层中将三个时间序列度量拖到 Sales Facts 表示表。
|
| 8. | 签入更改。 |
| 9. | 检查全局一致性。更正所有错误,然后继续。 |
| 10. | 保存信息库。 |
| 11. | 返回 Answers 并重新加载服务器元数据。
|
| 12. | 在 Answers 中创建以下查询和筛选器: Calendar.Calendar Month Name Sales Facts.Amount Sold Sales Facts.Month Ago Dollars Sales Facts.Change Month Ago Dollars Sales Facts.Month To Date Dollars Calendar Year is equal to / is in 2001
|
| 13. | 单击 Results。
|
在本课程中,您应该学会了如何:
![]() |
构建信息库的物理、业务模型和映射以及表示层 | |
![]() |
测试并验证信息库 | |
![]() |
创建计算量度 | |
![]() |
使用初始化块和变量 | |
![]() |
向业务模型中的逻辑表添加多个源 | |
![]() |
执行直接数据库请求 | |
![]() |
使用聚合表加速处理 | |
![]() |
创建时间序列度量 | |
要了解有关 Oracle 业务智能的更多信息,可以参考:
![]() |
OTN 网站上的其他 OBE。 | |
将鼠标置于该图标上可以隐藏所有的屏幕截图。