课程 1:为 OLAP 11g 多维数据集创建 BI EE 元数据

目的

本教程介绍了如何创建用于访问 Oracle 数据库 11g OLAP 选件数据和计算的 Oracle 业务智能企业版元数据。

所需时间

大约 1 小时。

主题

本教程包括下列主题:

 概述
 前提条件
 定义物理层

定义标准业务模型元数据

 在逻辑表上指定复杂联接
 定义附加元数据以利用 OLAP 多维数据集聚合

定义表示层

 更多信息

查看屏幕截图

 将鼠标置于此图标上 可以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)

注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。

概述

什么是 Oracle OLAP?

Oracle OLAP 是 Oracle 数据库 11g 的一个集成组件,它使公司能够轻松洞悉业务性能。它提供:

异常查询、计算和数据准备性能

 丰富的分析功能

反映业务使用情况的简单用户模型

对所有 SQL 工具的开放访问

Oracle 数据库中的原生多维对象类型由 Oracle OLAP 多维数据集 提供。多维数据集由 量度 组成并按 进行组织。

 量度表示事实数据,如销售额、成本、利润和盈余。查询时可以存储或计算量度。存储的量度加载并存储在数据库中。查询时 OLAP 计算引擎动态计算计算的量度的值。常用计算包括诸如比率、差值、时序、延迟、指数、移动总数以及平均值之类的量度。计算不需要磁盘存储空间,并且不会延长数据维护所需的处理时间。
 标识您的量度数据并对其进行分类。通过形成量度边缘来塑造量度。例如,维度包括产品、地理位置、时间和分销渠道。维度 层次结构 是可选的,但在 OLAP 系统中是常用的。层次结构就是为了进行分析而将一个维度中相似的成员组合在一起的逻辑结构。维度的结构基于父子关系进行分层组织。这些关系能够在级别之间导航并且可以将子值聚合到父值。
 多维数据集提供一种收集相同维的类似量度的简便方式。很多量度通常具有相同的形状,因此,通过为多维数据集定义其形状(以及其他共享特性)可以在构建 OLAP 数据模型时节省时间。

为了访问 OLAP 多维数据集并利用 OLAP 计算引擎,SQL 工具(如 Oracle BI EE 10g)使用 OLAP 内置的 SQL 接口。通过一组关系视图,SQL 可以直接访问 Oracle OLAP 多维数据集数据。这些视图将 OLAP 多维数据集表示为一个具有以下特性的星型模式:

- 多维数据集视图扮演事实表的角色。

- 维视图或层次视图扮演维表的角色。

OLAP 多维数据集公开的星型设计与传统的基于表的星型模型非常类似。维视图围绕一个或多个多维数据集视图形成星群。然而,两者之间存在两个主要差别:

- 星型模式中的事实表存储详细数据(称为叶),而多维数据集视图显示 OLAP 多维数据集中定义的所有汇总级别。

- 多维数据集中的计算只显示为多维数据集视图中的列,等式的计算在 OLAP 引擎中进行。

了解 BI EE 元数据

为了使用依赖于自有的元数据层的任何 BI 最终用户工具(如 BI Answers 和 BI Dashboards),元数据信息库必须描述应该如何针对关系数据源构造查询。

要对 OLAP 数据使用相同的 BI 工具,请执行任何关系源所需的相同元数据管理任务,然后更新元数据以利用 OLAP 多维数据集视图的独特聚合属性。

在最高级别,创建 BI EE 元数据的过程可分为三个步骤。

1.

首先,定义一个 物理 层,该层标识源数据。

2. 其次,定义 业务模型与映射 层,该层将物理层组成多个逻辑类别,并记录适当的元数据以访问源数据。
3. 最后,定义 表示 层,该层公开业务模型实体以便最终用户访问。

在本课程中,您将定义所有三个元数据层以访问 SALESTRACK 分析工作区中的 SALES_CUBE。这个 AW 是 OLAPTRAIN 示例模式的一部分。

可以在 相关信息一节中下载该课程的完整信息库。

返回主题列表

前提条件

开始本教程之前,您应该:

1.

安装具有 OLAP 选件的 Oracle 数据库 11g(补丁级别 11.1.0.7 或更高)。

2.

按照 安装 Oracle OLAP 11g 示例模式中的说明,下载和安装示例模式的两个组件。

注:示例模式安装程序包包括两个部分:

1. 安装基本的 OLAPTRAIN 模式

2. 在 OLAPTRAIN 模式中安装 SALESTRACK 分析工作区

3.

可以访问或安装了 Oracle 业务智能套件企业版 10g 第 3 版(10.1.3.4 版)。

注:您需要大致了解 BI EE 管理。本教程仅致力于与设置对 OLAP 11g 数据的访问关联的管理任务。

返回主题列表

定义物理层

为 OLAP 数据定义 BI EE 的第一步是定义物理层。为此,您将创建一个信息库文件 (.RPD) 并将 OLAP 多维数据集视图导入物理层中。然后为视图创建联接。 完成后,这些步骤将 OLAP 多维数据集视图标识为通过其访问 OLAP 多维数据集的数据源。

在下列子主题中,您将导入视图、测试导入,然后在物理模型中创建所需的联接。

 创建 RPD 文件并导入 OLAP 多维数据集视图
 测试导入
 在物理模型中创建联接

返回主题列表

创建 RPD 文件并导入 OLAP 多维数据集视图

如前所述,Oracle OLAP 为数据模型中的每个多维数据集、维度和层次结构创建和维护视图。

例如,示例模式 (olaptrain) AW 中的 SALES_CUBE 分为 Channel、Time、Product 和 Geography 维度。每个维有一个为其定义的层次。

因此,以下视图是为 Sales 多维数据集维护的:

要创建物理层,导入多维数据集视图并且每个维一个层次视图。在本主题中,导入以下视图:

 SALES_CUBE_VIEW
 TIME_CALENDAR_VIEW
 PRODUCT_STANDARD_VIEW
 GEOGRAPHY_REGIONAL_VIEW
 CHANNEL_SALES_CHANNEL_VIEW

注:很多情况下,可以使用维度视图或层次视图来表示 OLAP 模型中的维。用于维的视图取决于您的业务需求。如果维级别跨层次共享,并且在各个层次上该级别中的成员都相同,则可以使用维视图,而不使用层次视图。

执行以下步骤。

1.

打开 Oracle BI Administration Tool。

提示:使用 Start 菜单,选择 Programs > Oracle Business Intelligence > Administration

2.

在 Administration Tool 中,选择 File > New。在 New Repository 窗口中,输入 olaptrain.rpd 作为文件名,并单击 Save

结果:出现一个名为 olaptrain.rpd 的新信息库。

3.

选择 File > Import > from Database

4.

在 Select Data Source 窗口中:

a. 从 Connection Type 列表中选择 OCI 10g/11g

b. 输入包含 olaptrain 模式的 Oracle 数据库的 TNS Name(在本例中为 orcl)。

c. 输入 olaptrain / oracle 作为 User Name / Password 组合。

d. 单击 OK

5.

在 Import 窗口中:

a. 选择 Views 选项。

b. 取消选择 Tables 选项。

c. 打开 OLAPTRAIN 节点。

结果:Import 窗口应如下所示:

6.

选择以下视图,然后单击 Import

结果:显示 Connection Pool 窗口。

7.

在 Connection Pool 窗口中:

a. 输入连接的名称。在本例中,该名称为 Oracle11g Cube Views

b. 确保选择 OCI 10g/11g 调用接口。

c. 确保在 Data source name 域中为您的 Oracle 数据库连接提供 TNS 服务名称。在本例中,TNS 服务名称为 orcl

d. 接受其他默认设置并单击 OK

e. 完成导入之后,关闭 Import 窗口。

返回主题

测试导入

完成导入之后,会在 Physical 层窗格中出现一个新节点。要测试对源数据的访问,执行以下步骤。

1.

在 Physical 层窗格中,展开 orcl > OLAPTRAIN

结果:出现多维数据集视图。

2.

展开 CHANNEL_SALES_CHANNEL_VIEW。然后,右键单击 LEVEL_NAME 列并从菜单中选择 View Data

结果:应出现以下窗口。

该列数据返回,这表明导入工作正常。


3. 关闭 View Data 窗口,然后折叠 CHANNEL_SALES_CHANNEL_VIEW 以便只显示五个多维数据集视图。

返回主题

在物理模型中创建联接

接下来,为每个维定义多维数据集视图中的外键列和层次视图中主键列之间的联接。

1.

在 Physical 窗格中:

a. 选择所有多维数据集视图。

b. 右键单击视图并从菜单中选择 Physical Diagram > Object(s) and All Joins,如下所示:

2.

在 Physical Diagram 窗口中,采用排列下面图像的类似方式排列这些视图:


3.

单击 New complex join 工具,如下所示:

4.

单击 SALES_CUBE_VIEW 并将鼠标拖动到 GEOGRAPHY_REGIONAL_VIEW,如下所示:

5.

单击 GEOGRAPHY_REGIONAL_VIEW

结果:出现 Physical Join 窗口,如下所示:

6.

通过从 SALES_CUBE_VIEW 中选择 GEOGRAPHY 列并从 GEOGRAPHY_REGIONAL_VIEW 中选择 DIM_KEY 列创建两个视图之间的联接,如下所示。

结果:自动在 Expression 框中创建了联接语法。

7.

单击 OK 保存联接。

结果:现在 Physical Diagram 窗口应如下所示:

8.

使用步骤 3 至 5 中所述的相同方法,在 SALES_CUBE_VIEWPRODUCT_STANDARD_VIEW 之间绘制一个联接。

然后,在 Physical Join 窗口中执行以下操作:

a. 从 SALES_CUBE_VIEW 中选择 PRODUCT 列并从 PRODUCT_STANDARD_VIEW 中选择 DIM_KEY 列,如下所示:

b. 单击 OK

结果:现在 Physical Diagram 窗口应如下所示:

9.

使用上述相同方法,为剩余的两个层次视图创建联接,针对每个联接使用以下列:

a. SALES_CUBE_VIEWTIME_CALENDAR_VIEW

b. SALES_CUBE_VIEWCHANNEL_SALES_CHANNEL_VIEW

结果:Physical Diagram 窗口显示已完成的复杂联接:

10. 关闭 Physical Diagram 窗口。

返回主题

定义标准业务模型元数据

为 OLAP 数据源创建业务模型元数据分为两个阶段。首先,采用适合任何关系源的经典方法定义业务模型。然后,定义利用 OLAP 嵌入式汇总视图的附加元数据。

在本主题中,您将定义标准业务模型元数据,包括以下步骤:

 创建星型逻辑表
 将物理层列映射到业务模型对象
 实现按维级别下钻

返回主题列表

创建星型逻辑表并定义联接

执行以下步骤为业务模型创建逻辑表和联接。

1.

首先,创建业务模型对象。选择 Business Model and Mapping 窗格,然后右键单击空白处。从菜单中选择 New Business Model

在 Business Model - olaptrain 窗口中,输入 olaptrain 作为名称,并单击 OK

2.

通过执行以下步骤为量度创建逻辑表:

A. 右键单击 olaptrain 业务模型,然后从菜单中选择 New Object > Logical Table
B. 在 Logical Table 窗口的 General 选项卡中,输入 Facts 作为名称。
C. 单击 OK

显示一个名为 Facts 的逻辑表:

3.

为 Channel 维创建一个逻辑表:

A. 右键单击 olaptrain 业务模型,然后从菜单中选择 New Object > Logical Table
B. 在 Logical Table 窗口的 General 选项卡中,输入 Channel 作为名称。
C. 单击 OK

4.

为 Geography 维创建一个逻辑表:

A. 右键单击 olaptrain 业务模型,然后从菜单中选择 New Object > Logical Table
B. 在 Logical Table 窗口的 General 选项卡中,输入 Geography 作为名称。
C. 单击 OK

5.

为 Product 维创建一个逻辑表:

A. 右键单击 olaptrain 业务模型,然后从菜单中选择 New Object > Logical Table
B. 在 Logical Table 窗口的 General 选项卡中,输入 Product 作为名称。
C. 单击 OK

6.

为 Time 维创建一个逻辑表:

A. 右键单击 olaptrain 业务模型,然后从菜单中选择 New Object > Logical Table
B. 在 Logical Table 窗口的 General 选项卡中,输入 Time 作为名称。
C. 单击 OK

现在,以下逻辑表应该包含在业务模型中:

返回主题

将物理层列映射到业务模型对象

在本主题中,您将使用以下规则将物理层中的列映射到业务模型层:

 对于 Facts 逻辑表,先从多维数据集视图中映射维列,然后是所需的量度列。
 对于每个逻辑维表,您将为 每个 层次级别映射相应的描述列以及 DIM_KEY 列。对于 Time 维,您还需要映射用于排序的 END_DATE 列。

执行以下步骤:

1.

首先,单击每个逻辑表旁边的折叠 ( -) 符号,以便显示如下内容:

2.

在 Physical 层中,展开 SALES_CUBE_VIEW,然后将 CHANNEL 列从 Physical 层窗格拖动到 Business Model 窗格并将其放到 Facts 逻辑表上,如下所示:

结果:在 Facts 逻辑表下出现一个名为 CHANNEL 的列。

3.

和以前一样,从 Physical 层窗格中,将 GEOGRAPHY 列拖动到 Facts 逻辑表(而 不是放在 Sources 文件夹上)。

结果:Facts 逻辑表下出现 GEOGRAPHY 列。

4.

从 Physical 层窗格,将 PRODUCTTIME 列拖动到 Facts 逻辑表。

结果:Facts 逻辑表下出现四个维列。

5.

在 Physical 层窗格中,选择 QUANTITY 列以及以“ SALES”开头的所有列,如下所示:

将所选择的量度拖放到 Facts 逻辑表上,就像以前对维列的操作一样。

6.

使用与上述相同的方法,从 Physical 层中选择剩余的量度列,如下所示,然后将它们拖动到 Facts 逻辑表。

现在,Facts 逻辑表应该包含以下列:

Facts 逻辑表的映射已经完成。

7.

通过执行以下操作,为量度列提供更多用户友好的描述:

a. 双击 Facts 逻辑表下的量度列。

b. 在 Logical Column 窗口中选择 General 选项卡

c. 在 Name 域中提供新描述,然后单击 OK

例如,对于 QUANTITY 量度,输入 Quantity 作为名称,如下所示

单击 OK 后,新的列名称出现在 Facts 逻辑表下:

8.

使用与上一步中所述相同的方法,重命名剩余的量度列以便它们如下所示:

接下来,将某些列映射到每个逻辑维表。

9.

对于每个逻辑维表,从关联的 OLAP 层次视图中映射以下列:

 层次中 每个 级别的描述列(长或短)
 DIM_KEY 列
 要查询的任何属性列
 仅针对 Time 逻辑表 — END_DATE 列 — 用于排序

要映射 Logical Channel 表,执行以下操作:

a. 展开 CHANNEL_SALES_CHANNEL_VIEW

b. 将 ALL_CHANNELS_LONG_DESCRI(“All Channels”级别的长描述列)从层次视图拖动到 Channel 逻辑表,如下所示:

注:OLAP 将多维数据集视图列名称截断为 24 个字符

结果:长描述列被添加到 Channel 逻辑表:

c. 采用相同方法,将 CLASS_LONG_DESCRIPTION 从层次视图拖动到 Channel 逻辑表(而 不是放在 Sources 文件夹上)。

d. 将 CHANNEL_LONG_DESCRIPTION 从层次视图拖动到 Channel 逻辑表。

e. 最后,将 DIM_KEY 从层次视图拖动到 Channel 逻辑表。

结果:Channel 逻辑表应该如下所示:

10.

使用以下方法重命名 Channel 逻辑表中的每个长描述列:

a. 双击列。

b. 选择 Logical Column 窗口的 General 选项卡。

c. 更改名称。

d. 单击 OK

例如:

使用以下新列名称重命名:

物理层列 新逻辑列名称
ALL_CHANNELS_LONG_DESCRI All Channels
CLASS_LONG_DESCRICRIPTION Class
CHANNEL_LONG_DESCRICRIPTION Channel

完成后,Channel 逻辑表应该如下所示:

11.

接下来,映射 Geography 维的列。

使用以下方法,将以下列从 Physical 窗格中的 GEOGRAPHY_REGIONAL_VIEW 拖动到 Business Model and Mapping 窗格中的 Geography 逻辑表:

a. 按照所示的顺序逐个映射每个列。这种方法简化了将来的元数据定义任务。

b. 确保将列放到 Geography 逻辑表上,而不是 Sources 文件夹上。

c. 映射之后,如下所示,重命名 Geography 逻辑表中的每个长描述列(不要重命名 DIM_KEY 列)。

物理层列 新逻辑列名称
ALL_REGIONS_LONG_DESCRIP All Regions
REGION_LONG_DESCRIPTION Region
COUNTRY_LONG_DESCRIPTION Country
STATE_PROVINCE_LONG_DESC State-Province
DIM_KEY

完成后,Geography 逻辑表应该如下所示:

12.

接下来,映射 Product 维的列。

将以下每列从 Physical 窗格中的 PRODUCT_STANDARD_VIEW 拖动到 Business Model and Mapping 窗格中的 Product 逻辑表。然后使用与前面维相同的方法,重命名逻辑列描述(不要重命名 DIM_KEY 列):

物理层列 新逻辑列名称
ALL_PRODUCTS_LONG_DESCRI All Products
DEPARTMENT_LONG_DESCRIPT Department
CATEGORY_LONG_DESCRIPTIO Category
TYPE_LONG_DESCRIPTION Type
SUBTYPE_LONG_DESCRIPTION Subtype
ITEM_LONG_DESCRIPTION Item
DIM_KEY

完成后,Product 逻辑表应该如下所示:

13.

接下来,映射 Time 维的列。

将以下每列从 Physical 窗格中的 TIME_CALENDAR_VIEW 拖动到 Business Model and Mapping 窗格中的 Time 逻辑表。然后使用与之前的维相同的方法,重命名逻辑列描述(不要重命名 END_DATE 或 DIM_KEY 列):

物理层列 新逻辑列名称
ALL_YEARS_LONG_DESCRIPTI All Years
CALENDAR_YEAR_LONG_DESCR Calendar Year
CALENDAR_QUARTER_LONG_DE Calendar Quarter
MONTH_LONG_DESCRIPTION Month
END_DATE
DIM_KEY

完成后,Time 逻辑表应该如下所示:

14.

对于 Time 逻辑维,将使用 END_DATE 列指定默认排序顺序。否则,在报告中显示 Month 列时,将使用 BI EE 的默认字母排序规则对其进行排序,如下所示:

Q1 > Feb、Jan、Mar;Q2 > Apr、Jun、May;依此类推。

要指定 Month 的排序顺序,执行以下操作:

a. 首先双击 Time 逻辑表下的 Month 列。

b. 然后,在 Logical Column 窗口中,单击 Sort order column 框旁边的 Set 按钮。

c. 在 Browse 窗口中,选择 END_DATE 列并单击 OK

d. 最后,单击 OK 关闭 Logical Column 窗口。

15.

就像在步骤 14 中对 Month 逻辑列所做的一样,将 Calendar QuarterCalendar Year 逻辑列的 END_DATE 设置为 Sort Order column。

但是,不为 All Years 逻辑列设置 Sort Order column。

16.

接下来,通过执行以下操作,为每个逻辑维表指定主键:

a.

双击 Channel 逻辑表。在 Keys 选项卡中,单击 New。然后,选择 Channel 列,如下所示:

b.

单击 OK 将 Channel 指定为主键。然后,单击 OK 关闭 Logical Table 窗口。

现在,Channel 逻辑表应该如下所示:

c. 使用 16a - b 中的相同方法,将 State-Province 指定为 Geography 逻辑表的主键。
d. Item 指定为 Product 逻辑表的主键。
e. Month 指定为 Time 逻辑表的主键。

现在,逻辑维表应该如下所示:

返回主题

实现按维级别下钻

在本主题中,通过执行以下操作在维层次中定义支持按级别下钻的元数据:

 首先,定义维对象及其关联的级别对象,这些对象与逻辑维表中建模的维和级别相对应。
 其次,映射列 — 在 Business Model and Mapping 窗格中 — 从逻辑维表映射到关联的维对象级别。

执行以下步骤:

1.

在 Business Model and Mapping 窗格中,为每个逻辑维表创建一个维对象。

a. 右键单击 olaptrain 业务模型图标,然后从菜单中选择 New Object > Dimension
b 在 Dimension 窗口的 General 选项卡中,输入 Channel Dim 作为名称。
c.

单击 OK。该维对象出现在业务模型中。

d.

使用 1a 至 1c 中所述的相同方法,创建三个维对象并分别命名为: Geography DimProduct DimTime Dim

完成后,olaptrain 业务模型应该如下所示:

2.

针对每个维对象,创建表示该维层次结构的级别对象。

a. 右键单击 Channel Dim,然后从菜单中选择 New Object > Logical Level
b.

在 Logical Level 窗口的 General 选项卡中,输入 All Channels 作为名称并单击 OK。在 Channel Dim 下出现了一个新的级别。

c.

右键单击您刚刚创建的 All Channels 级别对象,然后从菜单中选择 New Object > Child Level。然后,在 Logical Level 窗口的 General 选项卡中,输入 Class 作为名称并单击 OK

结果:Class Level 出现在 All Channels 下面。

d.

右键单击您刚刚创建的 Class 级别对象并从菜单中选择 New Object > Child Level 。然后,在 Logical Level 窗口的 General 选项卡中,输入 Channel 作为名称并单击 OK

结果:Channel Dim 对象包含以下级别:

注:

使用在 2a 至 2b 中所述的方法为每个维层次创建最高级别。

使用在 2c 至 2d 中所述的方法为所有层次创建随后的子级别。

e.

使用 2a 至 2d 中所述的方法,在 Geography Dim 对象下创建层次级别,如下所示:

All Regions > Region > Country > State-Province

完成后,Geography Dim 应该如下所示:

f.

使用相同方法,在 Product Dim 对象下创建以下级别:

All Products > Department > Category > Type > Subtype > Item

完成后,Product Dim 对象应该如下所示:

g.

使用相同方法,在 Time Dim 对象下创建以下级别:

All Years > Year > Quarter > Month

完成后,Time Dim 对象应该如下所示:

3.

接下来,在 Business Model and Mapping 窗格中映射列:

 首先,将适当的列从逻辑表拖动到关联的维对象级别。这为下钻提供了所需的映射信息。
 其次,将每个维级别列指定为“逻辑键”。

对于 Channel 维,执行以下操作:

a. 展开 Channel Dim 中的所有级别节点,然后展开 Channel 逻辑表节点。
b.

All Channels 列从 Channel 逻辑表拖放到 Channel Dim 对象中的 All Channels 级别。

结果:一个列直接出现在 All Channels 级别下面。

c.

通过执行以下操作将级别对象列指定为键:

- 右键单击 All Channels 列,然后从菜单中选择 New Logical Level Key

- 在 Logical Level Key 窗口中,接受默认设置并单击 OK

结果:该级别对象列被指定为键。

d.

ClassChannel 级别重复步骤 3b 至 3c。

完成后,完成的 Channel Dim 对象应该如下所示:

4.

使用在步骤 3 中所述的相同映射方法将 Geography 逻辑表中的所有列映射到 Geography Dim 维对象中的关联级别。然后,为每个级别列指定逻辑键状态。

完成映射并指定逻辑键指定后,显示应该如下所示:

5.

使用在步骤 3 中所述的相同映射方法将 Product 逻辑表中的所有列映射到 Product Dim 维对象中的关联级别。然后,为每个级别列指定逻辑键状态。

完成映射并指定逻辑键指定后,显示应该如下所示:

6.

使用在步骤 3 中所述的相同映射方法将 Time 逻辑表中的所有列映射到 Time Dim 维对象中的关联级别。然后,为每个级别列指定逻辑键状态。

完成映射并为 Time 表指定逻辑键指定后,显示应该如下所示:

7. 折叠所有维对象和逻辑表节点。

返回主题

在逻辑表上指定复杂联接

接下来,使用 Logical Table Diagram 窗口,在逻辑表上创建一个复杂联接以创建一个逻辑星型。

1.

在 Business Model and Mapping 窗格中,右键单击任一逻辑表。然后,从菜单中选择 Business Model Diagram > Whole Diagram

在 Logical Table Diagram 窗口中,将逻辑表排列成“星型”,如下所示:

2.

通过执行以下操作创建维表和 Facts 表之间的逻辑联接:

a.

单击工具栏中的 New Complex Join 图标。

b.

单击其中一个逻辑维表,如 Channel。然后单击 Facts 表。结果:显示 Logical Join 窗口。

只需单击 OK 即可创建联接。第一个逻辑联接已建立。

c. 针对每个逻辑维表重复步骤 2.A 和 2.B。

完成后,Logical Table Diagram 窗口应该如下所示:


3.

关闭 Logical Table Diagram 窗口。

结果:现在,olaptrain 业务模型应该如下所示:

返回主题列表

定义附加元数据以利用 OLAP 多维数据集聚合

接下来,在 Business Model and Mapping 层中定义两个附加元数据元素:

1. 为每个维级别定义逻辑表源。

2. 使用 BI EE 安全筛选器自动向每个查询中添加级别条件。

通过定义附加元数据使查询对级别敏感,从而利用 OLAP 多维数据集视图中的聚合。因此,以下理想的 OLAP 查询特性将适用于生成的 SQL:

级别条件应用于 WHERE 子句中的每一维。

 级别条件应用于为维选择的最低级别。例如,如果查询中同时有“Year”和“Quarter”,则应用条件 time_level=‘QUARTER’。

“All/Total Level”条件应用于 SELECT 语句中不包含的维。这对于利用多维数据集聚合是必需的。

采用这种方式对查询进行调整以利用 OLAP 聚合将优化性能。此外,所有 OLAP 计算是在 Oracle OLAP 计算引擎中进行的。

级别敏感的查询和报告示例

以下来自 Oracle BI Answers 的报告表明了利用 OLAP 聚合的最佳 SQL。

BI Answers 报表

对该报表的 SQL 查询

在 SQL 查询中:

 只是选择计算的量度作为列。在 OLAP 计算引擎中计算数据并通过多维数据集视图传递。
 级别条件应用于所有四个维,即使 SELECT 语句中只有三个维(Geography、Product 和 Time)也是如此。
 级别条件应用于为查询中的每一维所选择的最低级别:REGION、DEPARTMENT 和 QUARTER。

由于 SELECT 语句中不包含 Channel 维,所以“ALL_CHANNELS”级别条件自动应用于该维的查询。该功能确保利用 OLAP 多维数据集聚合。

注:有关如何针对 OLAP 11g 数据手动创建 SQL 查询的信息,请参阅 查询 OLAP 11g 多维数据集

要获得所需的 OLAP 多维数据集查询结果,请执行以下管理任务:

 为每个维级别定义表源
 使用安全筛选器自动添加级别条件

返回主题列表

为每个维级别定义表源

目前每个逻辑维都包含一个源。现在,您将为逻辑维中的每个级别创建多个逻辑表源。

每个级别表源应该包含描述它的源以及该维层次中在该级别以上的父级别的源的映射信息。但是,不应该映射该粒度级别下面的列。此外,每个级别表源将指定在该层次中描述其级别的一个文本值。

重要通告:如以下步骤所示,每个维的逻辑表源应该按照从最高聚合级别到最详细级别进行排序(例如,从 All Years 到 Month)。

按照以下步骤为每个维中的所有级别创建逻辑表源:

1.

首先,为 Channel 逻辑表中的所有级别创建逻辑表源。然后,修改下面指定的表源。

a.

首先,在 Channel 逻辑表下展开 Sources 文件夹。然后,右键单击 CHANNEL_SALES_CHANNEL_VIEW 表源,并从菜单中选择 Duplicate

结果:出现第二个名为 CHANNEL_SALES_CHANNEL_VIEW#1 的表源。

b.

由于 Channel 维包含三个级别,因此您需要创建该表源的另一个副本。执行与步骤 1a 中指定的完全相同的操作。

结果:出现了第三个表源。

按照如下方式修改表源:

c. 双击 CHANNEL_SALES_CHANNEL_VIEW 表源。出现 Logical Table Source 窗口。
d.

在 General 选项卡的 Name 域中输入 CHANNEL_VIEW (All Channels)

e.

对于所有维级别,使用 Column Mapping 选项卡为当前级别以及该层次中在该级别以上的所有级别指定映射。因此,必须删除 低于该级别的所有级别的映射。但是,必须保持 DIM_KEY 列映射不变。

最初,Column Mapping 选项卡显示映射的所有级别,如下所示:

删除低于当前级别的逻辑列的映射。要删除相应的映射,请单击 Expression 列右侧的“ X”图标,如下所示:

在本例中,删除 ChannelClass 逻辑列的映射,因为它们的级别低于 All Channels。

删除 Channel 和 Class 的映射之后,Column Mapping 选项卡应该如下所示:

f.

接下来,单击 Content 选项卡。

在 Content 选项卡中:

选择与 Logical Source 关联的 Dimension 对象的 Logical Level。

创建一个从 OLAP 维或层次视图中选择正确级别的 WHERE 子句。

回顾本主题开始部分的 BI Answers 报表和查询示例。在该 WHERE 子句(如下所示)中,多维数据集和维层次被联接在一起。然后,使用层次视图中的 LEVEL_NAME 列将条件应用于每个维。

这些级别条件有助于确保在 SQL 查询中利用正确的 OLAP 多维数据集聚合。

准备元数据的下一步是告诉 Oracle BI 如何为任一 OLAP 多维数据集查询创建相应的级别条件。

在 Content 选项卡中:

首先,为 Dimension 对象选择正确的 Logical Level。在本例中,为 Channel Dim 选择 All Channels

其次,创建将为使用该级别的任一查询生成正确级别条件的 WHERE 子句。按照以下说明进行操作:

-

单击 WHERE 子句框旁边的省略号按钮,如下所示:

-

在 Expression Builder 窗口底部的框中选择 Physical Tables > CHANNEL_SALES_CHANNEL_VIEW > LEVEL_NAME

双击 LEVEL_NAME 列以创建该 where 子句的第一部分,该部分出现在 Expression 框中:

然后,添加一个等号 ( =) 和 OLAP 层次视图中标识该级别的文本值,如下所示:

= 'ALL_CHANNELS'

-

最后,单击 Expression Builder 中的 OK 以将该 WHERE 子句保存在 Logical Table Source - Content 选项卡中。

注:要为每个层次级别的 LEVEL_NAME 列确定正确的值,只需使用 Physical 层窗格。右键单击每个层次视图中的 LEVEL_NAME 列,然后从弹出的菜单中选择 View Data

下面的示例显示了如何查看 CHANNEL_SALES_CHANNEL_VIEW 的 LEVEL_NAME 值:

g.

单击 OK 关闭 Logical Table Source 窗口。Channel 维中的 All Channels 级别的逻辑源已完成。

h.

现在,双击第二个逻辑表源 — CHANNEL_SALES_CHANNEL_VIEW#1 — 并应用与步骤 1a 至 1g 中所示的相同方法,如下所示:

General 选项卡:将 Name 更改为 CHANNEL_VIEW (Class)

Column Mapping 选项卡:删除 Channel Logical Column 的条目。结果:仍然映射以下 Logical Column:

Content 选项卡:对于 Channel Dim,在 Logical Level 框中选择 Class。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

i.

最后,双击第三个表源 — CHANNEL_SALES_CHANNEL_VIEW#2 — 并应用与 1a - 1g 中所示的相同方法,如下所示:

General 选项卡:将 Name 更改为 CHANNEL_VIEW (Channel)

Column Mapping 选项卡:保留每个 Logical Column 的所有条目,如下所示:

Content 选项卡:对于 Channel Dim,在 Logical Level 框中选择 Channel。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

现在,Channel 逻辑表应该如下所示:

2.

接下来,为 Geography 逻辑表中的级别创建逻辑表源。然后,修改下面指定的表源。

与前面一样,在 Geography 逻辑表下展开 Sources 文件夹。然后,使用与步骤 1 相同的方法创建 GEOGRAPHY_REGIONAL_VIEW 表源的三个副本。完成后,应该出现以下表源:

使用步骤 1a.- 1i. 中所示的方法完成对 Geography 逻辑表源的以下修改:

a.

对于 GEOGRAPHY_REGIONAL_VIEW:

General 选项卡:将 Name 更改为 GEOGRAPHY_VIEW (All Regions)

Column Mapping 选项卡:删除以下 Logical Column 列的条目: RegionCountryState-Province。完成后,Column Mapping 选项卡应该如下所示:

Content 选项卡:对于 Geography Dim,在 Logical Level 框中选择 All Regions。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

注: GEOGRAPHY_REGIONAL_VIEW 中 LEVEL_NAME 列的文本值如下所示:

b.

对于 GEOGRAPHY_REGIONAL_VIEW#1:

General 选项卡:将 Name 更改为 GEOGRAPHY_VIEW (Region)

Column Mapping 选项卡:删除 CountryState-Province Logical Column 的条目。完成后,Column Mapping 选项卡应该如下所示:

Content 选项卡:对于 Geography Dim,在 Logical Level 框中选择 Region。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

c.

对于 GEOGRAPHY_REGIONAL_VIEW#2:

General 选项卡:将 Name 更改为 GEOGRAPHY_VIEW (Country)

Column Mapping 选项卡:删除 State-Province Logical Column 的条目。完成后,Column Mapping 选项卡应该如下所示:

Content 选项卡:对于 Geography Dim,在 Logical Level 框中选择 Country。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

d.

对于 GEOGRAPHY_REGIONAL_VIEW#3:

General 选项卡:将 Name 更改为 GEOGRAPHY_VIEW (State-Province)

Column Mapping 选项卡:保留每个 Logical Column 的所有条目,如下所示:

Content 选项卡:对于 Geography Dim,在 Logical Level 框中选择 State-Province。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

现在,Geography 逻辑表应该如下所示:

3.

为 Product 逻辑表中的所有级别创建逻辑表源。然后,修改下面指定的表源。由于 Product 层次中有六个级别,因此要创建原始表源的五个副本。

与前面一样,在 Product 逻辑表下展开 Sources 文件夹。然后,右键单击 PRODUCT_STANDARD_VIEW 表源并从弹出的菜单中选择 Duplicate。完成后,应该出现以下表源。

接下来,使用上述方法完成对 Product 逻辑表源的以下修改:

a.

对于 PRODUCT_STANDARD_VIEW:

General 选项卡:将 Name 更改为 PRODUCT_VIEW (All Products)

Column Mapping 选项卡:删除以下 Logical Column 列的条目: DepartmentCategoryTypeSubtypeItem。完成后,Column Mapping 选项卡应该如下所示:

Content 选项卡:对于 Product Dim,在 Logical Level 框中选择 All Products。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

注: PRODUCT_STANDARD_VIEW 中 LEVEL_NAME 列的文本值如下所示:

b.

对于 PRODUCT_STANDARD_VIEW#1:

General 选项卡:将 Name 更改为 PRODUCT_VIEW (Department)

Column Mapping 选项卡:删除以下 Logical Column 列的条目: CategoryTypeSubtypeItem。完成后,Column Mapping 选项卡应该如下所示:

Content 选项卡:对于 Product Dim,在 Logical Level 框中选择 Department。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

c.

对于 PRODUCT_STANDARD_VIEW#2:

General 选项卡:将 Name 更改为 PRODUCT_VIEW (Category)

Column Mapping 选项卡:删除以下 Logical Column 列的条目: TypeSubtypeItem。完成后,Column Mapping 选项卡应该如下所示:

Content 选项卡:对于 Product Dim,在 Logical Level 框中选择 Category。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

d.

对于 PRODUCT_STANDARD_VIEW#3:

General 选项卡:将 Name 更改为 PRODUCT_VIEW (Type)

Column Mapping 选项卡:删除 SubtypeItem Logical Column 条目。完成后,Column Mapping 选项卡应该如下所示:

Content 选项卡:对于 Product Dim,在 Logical Level 框中选择 Type。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

e.

对于 PRODUCT_STANDARD_VIEW#4:

General 选项卡:将 Name 更改为 PRODUCT_VIEW (Subtype)

Column Mapping 选项卡:删除 Logical Column Item 条目。完成后,Column Mapping 选项卡应该如下所示:

Content 选项卡:对于 Product Dim,在 Logical Level 框中选择 Subtype。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

f.

对于 PRODUCT_STANDARD_VIEW#5:

General 选项卡:将 Name 更改为 PRODUCT_VIEW (Item)

Column Mapping 选项卡:保留每个 Logical Column 的所有条目,如下所示:

Content 选项卡:对于 Product Dim,在 Logical Level 框中选择 Item。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

现在,Product 逻辑表应该如下所示:

4.

为 Time 逻辑表中的所有行创建逻辑表源。然后,修改下面指定的表源。由于 Time 层次中有四个级别,因此要创建原始表源的三个副本。

和以前一样,在 Time 逻辑表下展开 Sources 文件夹。然后,右键单击 TIME_CALENDAR_VIEW 表源并从弹出的菜单中选择 Duplicate。完成后,应该出现以下表源。

接下来,使用上述方法完成对 Time 逻辑表源的以下修改:

a.

对于 TIME_CALENDAR_VIEW:

General 选项卡:将 Name 更改为 TIME_VIEW (All Years)

Column Mapping 选项卡:删除以下 Logical Column 列的条目: YearQuarterMonth。完成后,Column Mapping 选项卡应该如下所示:

Content 选项卡:对于 Time Dim,在 Logical Level 框中选择 All Years。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

注: TIME_CALENDAR_VIEW 中 LEVEL_NAME 列的文本值如下所示:

b.

对于 TIME_CALENDAR_VIEW#1:

General 选项卡:将 Name 更改为 TIME_VIEW (Year)

Column Mapping 选项卡:删除 QuarterMonth Logical Column 的条目。完成后,Column Mapping 选项卡应该如下所示:

Content 选项卡:对于 Time Dim,在 Logical Level 框中选择 Year。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

c.

对于 TIME_CALENDAR_VIEW#2:

General 选项卡:将 Name 更改为 TIME_VIEW (Quarter)

Column Mapping 选项卡:删除 Month Logical Column 条目。完成后,Column Mapping 选项卡应该如下所示:

Content 选项卡:对于 Time Dim,在 Logical Level 框中选择 Quarter。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

d.

对于 TIME_CALENDAR_VIEW#3:

General 选项卡:将 Name 更改为 TIME_VIEW (Month)

Column Mapping 选项卡:保留每个 Logical Column 的所有条目,如下所示:

Content 选项卡:对于 Time Dim,在 Logical Level 框中选择 Month。然后,在 WHERE 子句筛选器框中,使用 Expression Builder 来创建所显示的 WHERE 子句:

单击 OK 关闭 Logical Table Source 窗口。

现在,Time 逻辑表应该如下所示:

返回主题

使用安全筛选器自动添加级别条件

请记住,必须将条件应用于 OLAP 多维数据集查询的 WHERE 子句中的所有维。要实现这个目的,需向事实表中添加一个强制事实表和维表之间联接的 安全筛选器

使用 BI EE 安全筛选器

使用 BI EE 安全筛选器功能自动生成所需的级别条件。

 BI EE 安全筛选器会自动应用于查询。这些安全筛选器类似于 Oracle 数据库 VPD;这些筛选器会自动应用于针对“安全”表的任何查询。
 每个逻辑事实表上的筛选条件确保逻辑维表基于维键联接到事实表。因此,强制进行星型联接,从而对每个查询应用级别筛选器。

可以将安全筛选器应用于某个用户或组。在本例中,创建一个新组,并且必须将信息库的用户分配给该组。

使用以下步骤创建安全组,定义所需的安全筛选器并定义将自动使用该筛选器的用户。

1.

从主菜单中选择 Manage > Security。出现 Security Manager 窗口。

2.

在 Security Manager 窗口中,选择 Action > New > Group。在 Group 窗口中,输入 OLAP Users 作为名称,然后单击 Permissions


3.

在 Permissions 窗口中,选择 Filters 选项卡,然后单击 Add 按钮。

4.

在 Browse 窗口中,选择 Business Model 选项卡。然后,展开 olaptrain 节点并选择 Facts 逻辑表,如下所示。最后单击 Select 按钮。

结果:出现 User/Group Permissions 窗口。

5.

在 User/Group Permissions 窗口中,单击 Business Model Filter 框旁边的省略号按钮 (...)。

结果:出现 Expression Builder - Security Filter 窗口。

6.

在 Expression Builder 窗口中,对于每个要创建筛选器的维使用以下表达式格式:

dimension table .DIM_KEY = fact table. key (通过“ AND ”连接)

注:构造筛选器时,可以使用 Expression Buider 窗口底部的窗格和运算符选择和插入相应的逻辑列和运算符。

7.

然后,单击 OK

结果:现在,User/Group Permissions 窗口如下所示:

8.

单击 OK 关闭 Permissions 窗口。然后单击 OK 关闭 Group 窗口。

结果:添加了 OLAP Users 组。

9.

现在,您将向 OLAP Users 组中添加用户。真正实施应该根据需要将验证和授权过程整合到一起。但是,为了方便起见,您将使用 BI 管理工具向 OLAP Users 组中添加用户。

- 在 Security Manager 窗口中,选择 Action > New > User

- 在 User 窗口中,输入 olaptrain 作为用户名,输入 oracle 作为口令(包括确认)并选择 OLAP Users 组。

- 然后单击 OK

10.

最后,关闭 Security Manager 窗口。

返回主题

定义表示层

为了使用户能够在某个工具(如 BI Answers)中查询数据,您必须定义一个表示层,该层采用用户友好的格式将业务模型层中的对象组织在一起。

在表示层中,应该采用便于最终用户浏览他们希望访问的数据的方式组织列。此外,还应该只显示用户需要的逻辑列以便查看数据。例如,对于最终用户来说,DIM_KEY 和 END_DATE 列没有值。Facts 逻辑表中的键列也没有值。

用户看见的列的表示可能会很复杂。但是,这里您将创建一个简单的表示目录。

要为 olaptrain 业务模型定义表示层,请执行以下步骤:

1.

在 Presentation 窗格中:

a. 右键单击 Presentation 窗格,然后从菜单中选择 New Presentation Catalog

b. 在 Presentation Catalog 窗口中,输入 Oracle 11g Cubes 作为名称。默认情况下,选择 olaptrain 业务模型,因为它是该信息库中的唯一业务模型。

c. 单击 OK 创建新的 Presentation 目录对象。


2.

将以下逻辑表拖动到 Presentation 窗格中的 OLAP 11g Cubes 节点上: ChannelGeographyProductTime

3.

对表示表执行以下修改:

展开每个维节点,并删除以下每个表示表中的以下列:

表示层表 要删除的列
Channel DIM_KEY
Geography DIM_KEY
Product DIM_KEY
Time DIM_KEY、END_DATE

现在,Presentation 窗格应该如下所示:

4.

接下来,将 Facts 逻辑表从 Business Model 窗格拖动到 Presentation 窗格中的 OLAP 11g Cubes 节点。然后,将该表的名称从 Facts 更改为 Sales

5.

从 Sales 表中删除维键,如下所示:

6.

要为最终用户组织 OLAP 量度,请创建 Sales 表示表的两个副本。

a. 首先,折叠所有 Presentation 表示。

b. 然后,右键单击 Sales 并从菜单中选择 Duplicate

c. 使用相同的方法创建 Sales 表的另一个副本。

现在,Presentation 窗格应该如下所示:

7.

从最初的 Sales 表示表中删除以下量度列: To GoCross Over Best Fit ForecastCross Over Best Fit Fcst% of 2006 Sales

8.

将 Sales#1 表示表重命名为 Forecasts。然后删除 Forecasts 表中除了以下列之外的所有列: Cross Over Best Fit ForecastCross Over Best Fit Fcst,如下所示:

9.

将 Sales#2 表示表重命名为 Targets。然后删除 Forecasts 表中除了以下列之外的所有列: SalesSales for 2006Sales YTDTo Go% of 2006 Sales,如下所示:

10.

要确保没有错误,请单击 Save 按钮,并且在提示“Check for global consistency”时,选择 Yes

如果元数据模型正确,则显示以下消息:

单击 Yes。您已可以进入下一个课程。

注:

- 如果返回的任何错误涉及了 Object Type 列中的 Business Model 或 Presenation Table 请更正这些错误,然后再次检查全局一致性。

- 可以忽略一致性检查警告。

返回主题列表

更多信息

下载 OLAP11g_OBE.zip 文件,该文件包含一个完整且预定义的该课程的信息库。将此信息库文件 (.rpd) 解压缩到以下位置:C:\ <OracleBI_Installation_Location>\server\repository

 要查看针对此 OLAP 数据模型的 BI Answers 演示,请单击 使用简单 SQL 的疑难问题快速解答
 要针对 OLAP 数据模型实际操作 BI Answers,请单击 使用 Oracle BI Answers 查询 OLAP 11g 数据

要了解有关 Oracle 业务智能套件企业版的详细信息,请参阅 OTN 网站上的其他 OBE。在此页面中,选择“业务智能入门”>“Oracle BI 企业版”

返回主题列表

 将鼠标置于该图标上可以隐藏所有的屏幕截图。

Left Curve
热门下载
Right Curve
Left Curve
更多融合中间件下载
Right Curve