Obiee 简明教程

OBIEE – Schema

架构是整个数据库的逻辑描述。它包括所有类型记录的名称和描述,包括所有关联数据项和聚合。与数据库非常相似,DW 也需要维护一个模式。数据库使用关系模型,而 DW 使用星型、雪花和事实星座模式(银河模式)。

Star Schema

在星型模式中,有多个非规范化形式的维度表,它们仅连接到一个事实表。这些表以逻辑方式连接,以满足分析目的的一些业务要求。这些架构是使用 BI 报告工具创建报告的多维结构。

星型架构中的维度包含一组属性,而事实表包含所有维度和度量值的外键。

star schema

在以上星型模式中,有一个位于中心的“销售事实”事实表,并使用主键连接到 4 个维度表。维度表没有进一步规范化,并且这些表的连接在 DW 中被称为星型模式。

事实表还包含度量值 - dollar_sold 和 units_sold。

Snowflakes Schema

在雪花模式中,有多个规范化形式的维度表,它们仅连接到一个事实表。这些表以逻辑方式连接,以满足分析目的的一些业务要求。

星型架构和雪花架构之间的唯一区别在于维度表进一步规范化。规范化将数据拆分为其他表。由于雪花架构中的规范化,数据冗余会减少而不会丢失任何信息,因此易于维护并节省存储空间。

snowflakes schema

在上面的雪花架构示例中,产品和客户表被进一步规范化以节省存储空间。有时,在您执行直接在规范化表中处理行的查询时,它还可以提供性能优化,因此它不会在主维度表中处理行,而是直接进入架构中的规范化表。

Granularity

表中的粒度表示表中存储的信息级别。数据的高粒度意味着数据处于事务级别或接近事务级别,这更加详细。低粒度意味着数据的信息级别较低。

事实表通常设计为低粒度。这意味着我们需要找到可以存储在事实表中的最低信息级别。在日期维度中,粒度级别可以是年、月、季度、期间、周和日。

定义粒度这一过程包含两步 −

  1. 确定要包含的维度。

  2. 确定信息中每个维度层级所在位置。

Slowly Changing Dimensions

缓慢变化维度指的是某个属性值随着时间的变化。这是数据仓库中的一个常见概念。

Example

Andy是XYZ公司的一名员工。他最早于2015年7月在纽约市工作。员工查找表中关于他的原始条目包含以下记录 −

Employee ID

10001

Name

Andy

Location

New York

在某个时间,他已搬迁至加州洛杉矶。XYZ公司现在该如何修改其员工表以反映这种改变?

这就是“缓慢变化维度”概念。

有三种解决方法可以解决此类问题 −

Solution 1

新记录替换原始记录。旧记录不可追溯。

缓慢变化维度,新信息直接覆盖原始信息。换言之,不会保留历史。

Employee ID

10001

Name

Andy

Location

LA, California

  1. Benefit − 这是处理缓慢变化维度问题最简单的方法,因为它无需对旧信息进行跟踪。

  2. Disadvantage − 所有历史信息都将丢失。

  3. Use − 当数据仓库不需要记录历史信息时,此方法应得到采用。

Solution 2

在新员工维度表中录入一条新记录。在这种方法中,员工Andy将被视为两人。

向表中添加一条新记录以表示新信息,原始记录和新记录将同时存在。新记录将获得自己的主键,如下所示 −

Employee ID

10001

10002

Name

Andy

Andy

Location

New York

LA, California

  1. Benefit − 此方法使我们能够存储所有历史信息。

  2. Disadvantage − 表的大小增加速度更快。当表中行数非常多时,表的空间和性能可能会引起担忧。

  3. Use − 当数据仓库需要保留历史数据时,此方法应得到采用。

Solution 3

修改员工维度表中的原始记录以反映变化。

将有两列表示特定属性,一列表示原始值,另一列表示新值。此外还将有一列指出当前值何时生效。

Employee ID

Name

Original Location

New Location

Date Moved

10001

Andy

New York

LA, California

July 2015

  1. Benefits − 这不会增加表的大小,因为信息在更新。这让我们得以保留历史信息。

  2. Disadvantage − 当某个属性值修改次数超过一次时,此方法不会保留所有历史记录。

  3. Use − 仅在需要数据仓库保留历史更改信息时才应使用解决方案 3。

Normalization

规范化是将表分解成冗余度较小的更小表的过程,而不会丢失任何信息。所以数据库规范化是组织数据库的属性和表的过程,以最大程度地减少数据冗余(重复数据)。

Purpose of Normalization

  1. 它用于消除某些类型的数据(冗余/复制),以提高一致性。

  2. 通过将与对象类型相对应表保留在简化形式中,它提供了最大的灵活性来满足未来的信息需求。

  3. 它生成更清晰且可读的数据模型。

Advantages

  1. Data integrity.

  2. Enhances data consistency.

  3. 减少数据冗余和所需空间。

  4. Reduces update cost.

  5. 对即席查询做出反应的最大灵活性。

  6. 减少每个块中的总行数。

Disadvantages

数据库中查询性能缓慢,因为必须执行联接才能从几个规范化表中检索相关数据。

必须了解数据模型才能在几个表之间执行适当的联接。

Example

purpose of normalization

在上述示例中,绿色块内部的表表示红色块内部表的规范化表。绿色块中的表冗余度较低,并且在不损失任何信息的情况下行数也较少。