OBIEE – 维度建模
维度建模提供了用于 DW 设计的一组方法和概念。据 DW 顾问 Ralph Kimball 称,维度建模是一种数据库设计技术,旨在支持数据仓库中的最终用户查询。它以可理解性和性能为导向。据他介绍,尽管面向事务的 ER 对于事务捕获非常有用,但对于最终用户交付,应避免使用它。
维度建模始终使用事实和维度表。事实是可以对事实值进行聚合和分析的数值。维度定义事实值的层次结构和描述。
维度表
维度表存储描述事实表中对象的属性。维度表具有唯一标识每个维度行的主键。此键用于将维度表与事实表关联。
维度表通常是非规范化的,因为它们不是为执行事务而创建的,仅用于详细分析数据。
示例
在下面的维度表中,客户维度通常包括客户姓名、地址、客户 ID、性别、收入组、教育水平等。
Customer ID | Name | Gender | Income | Education | Religion |
---|---|---|---|---|---|
1 | Brian Edge | M | 2 | 3 | 4 |
2 | Fred Smith | M | 3 | 5 | 1 |
3 | Sally Jones | F | 1 | 7 | 3 |
事实表
事实表包含称为测量的数值。事实表有两种类型的列:事实和维度表的外键。
事实表中的度量有三种类型:
加法 可跨任何维度添加的度量。
非加法 不能跨任何维度添加的度量。
半加法 可跨某些维度添加的度量。
示例
Time ID | Product ID | Customer ID | Unit Sold |
---|---|---|---|
4 | 17 | 2 | 1 |
8 | 21 | 3 | 2 |
8 | 4 | 1 | 1 |
此事实表包含时间维度、产品维度、客户维度和销售测量值单位的外键。
假设一家公司向客户销售产品。每笔销售都是公司内部发生的事实,事实表用于记录这些事实。
常见的事实有销售单位数、利润、销售收入等。维度表列出了客户、时间、产品等我们想要分析数据的因素。
现在,如果我们考虑上述事实表和客户维度,那么也会有产品和时间维度。有了此事实表和这三个维度表,我们可以提出以下问题:2010 年向男性客户销售了多少块手表?
维度表和事实表之间的区别
维度表和事实表之间的功能区别在于,事实表保存我们要分析的数据,而维度表保存允许我们查询所需的信息。
聚合表
聚合表包含聚合数据,可以使用不同的聚合函数进行计算。
聚合函数是一种函数,其中多行的值根据某些条件分组作为输入,以形成具有更重要含义或测量值的单个值。
常见的聚合函数包括 −
- Average()
- Count()
- Maximum()
- Median()
- Minimum()
- Mode()
- Sum()
这些聚合表用于性能优化,以便在数据仓库中运行复杂查询。
示例
您保存了包含聚合数据的表,例如年度(1 行)、季度(4 行)、每月(12 行),现在您必须进行数据比较,例如每年仅处理 1 行。然而,在未聚合的表中,所有行都将被处理。
MIN | 返回给定列中的最小值 |
MAX | 返回给定列中的最大值 |
SUM | 返回给定列中数值的总和 |
AVG | 返回给定列的平均值 |
COUNT | 返回给定列中的值总数 |
COUNT (*) | 返回表中的行数 |
从 title = 'developer' 的员工中选择 Avg (salary)。此语句将返回所有职称等于"Developer"的员工的平均工资。
可以在数据库级别应用聚合。您可以创建聚合并将其保存在数据库的聚合表中,也可以在报告级别动态应用聚合。
注意 − 如果在数据库级别保存聚合,则可以节省时间并提供性能优化。