Obiee 简明教程
OBIEE – Schema
架构是整个数据库的逻辑描述。它包括所有类型记录的名称和描述,包括所有关联数据项和聚合。与数据库非常相似,DW 也需要维护一个模式。数据库使用关系模型,而 DW 使用星型、雪花和事实星座模式(银河模式)。
Star Schema
在星型模式中,有多个非规范化形式的维度表,它们仅连接到一个事实表。这些表以逻辑方式连接,以满足分析目的的一些业务要求。这些架构是使用 BI 报告工具创建报告的多维结构。
星型架构中的维度包含一组属性,而事实表包含所有维度和度量值的外键。
在以上星型模式中,有一个位于中心的“销售事实”事实表,并使用主键连接到 4 个维度表。维度表没有进一步规范化,并且这些表的连接在 DW 中被称为星型模式。
事实表还包含度量值 - dollar_sold 和 units_sold。
Snowflakes Schema
在雪花模式中,有多个规范化形式的维度表,它们仅连接到一个事实表。这些表以逻辑方式连接,以满足分析目的的一些业务要求。
星型架构和雪花架构之间的唯一区别在于维度表进一步规范化。规范化将数据拆分为其他表。由于雪花架构中的规范化,数据冗余会减少而不会丢失任何信息,因此易于维护并节省存储空间。
在上面的雪花架构示例中,产品和客户表被进一步规范化以节省存储空间。有时,在您执行直接在规范化表中处理行的查询时,它还可以提供性能优化,因此它不会在主维度表中处理行,而是直接进入架构中的规范化表。
Granularity
表中的粒度表示表中存储的信息级别。数据的高粒度意味着数据处于事务级别或接近事务级别,这更加详细。低粒度意味着数据的信息级别较低。
事实表通常设计为低粒度。这意味着我们需要找到可以存储在事实表中的最低信息级别。在日期维度中,粒度级别可以是年、月、季度、期间、周和日。
定义粒度这一过程包含两步 −
-
确定要包含的维度。
-
确定信息中每个维度层级所在位置。
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 |
-
Benefit − 这是处理缓慢变化维度问题最简单的方法,因为它无需对旧信息进行跟踪。
-
Disadvantage − 所有历史信息都将丢失。
-
Use − 当数据仓库不需要记录历史信息时,此方法应得到采用。
Solution 2
在新员工维度表中录入一条新记录。在这种方法中,员工Andy将被视为两人。
向表中添加一条新记录以表示新信息,原始记录和新记录将同时存在。新记录将获得自己的主键,如下所示 −
Employee ID |
10001 |
10002 |
Name |
Andy |
Andy |
Location |
New York |
LA, California |
-
Benefit − 此方法使我们能够存储所有历史信息。
-
Disadvantage − 表的大小增加速度更快。当表中行数非常多时,表的空间和性能可能会引起担忧。
-
Use − 当数据仓库需要保留历史数据时,此方法应得到采用。
Solution 3
修改员工维度表中的原始记录以反映变化。
将有两列表示特定属性,一列表示原始值,另一列表示新值。此外还将有一列指出当前值何时生效。
Employee ID |
Name |
Original Location |
New Location |
Date Moved |
10001 |
Andy |
New York |
LA, California |
July 2015 |
-
Benefits − 这不会增加表的大小,因为信息在更新。这让我们得以保留历史信息。
-
Disadvantage − 当某个属性值修改次数超过一次时,此方法不会保留所有历史记录。
-
Use − 仅在需要数据仓库保留历史更改信息时才应使用解决方案 3。
Normalization
规范化是将表分解成冗余度较小的更小表的过程,而不会丢失任何信息。所以数据库规范化是组织数据库的属性和表的过程,以最大程度地减少数据冗余(重复数据)。
Purpose of Normalization
-
它用于消除某些类型的数据(冗余/复制),以提高一致性。
-
通过将与对象类型相对应表保留在简化形式中,它提供了最大的灵活性来满足未来的信息需求。
-
它生成更清晰且可读的数据模型。