OBIEE 维度建模
维度建模提供了一组用于 DW 设计的方法和概念。根据 DW 顾问 Ralph Kimball 的说法,维度建模是一种数据库设计技术,旨在支持数据仓库中的最终用户查询。它以可理解性和性能为导向。据他介绍,虽然面向事务的 ER 对于事务捕获非常有用,但对于最终用户交付应避免使用。
维度建模总是使用事实和维度表。事实是可以对事实值进行汇总和分析的数值。维度定义了事实值的层次结构和描述。
维度表
维度表在事实表中存储描述对象的属性。维度表具有唯一标识每个维度行的主键。该键用于将维度表与事实表相关联。
维度表通常是非规范化的,因为它们不是为执行事务而创建的,仅用于详细分析数据。
示例
在下面的维度表中,客户维度通常包括客户姓名、地址、客户ID、性别、收入群体、教育程度等。
客户 ID |
名称 |
性别 |
收入 |
教育 |
宗教 |
1 |
布莱恩·埃奇 |
M |
2 |
3 |
4 |
2 |
弗雷德·史密斯 |
M |
3 |
5 |
1 |
3 |
莎莉琼斯 |
F |
1 |
7 |
3 |
事实表
事实表包含称为测量值的数值。事实表有两种类型的列-事实和维度表的外键。
事实表中的度量分为三种类型-
Additive-可以跨任何维度添加的度量。
Non-Additive-不能跨任何维度添加的度量。
半加法-可以跨某些维度添加的度量。
示例
时间 ID |
产品 ID |
客户 ID |
已售单位 |
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 (*) |
返回表中的行数 |
选择 Avg (salary) from employee where title = ‘developer’。此语句将返回所有职称等于"开发人员"的员工的平均工资。
可以在数据库级别应用聚合。您可以创建聚合并将其保存在数据库的聚合表中,也可以在报告级别即时应用聚合。
注意-如果您在数据库级别保存聚合,则可以节省时间并提供性能优化。