OBIEE – 维度建模



维度建模提供了一套用于数据仓库设计的方法和概念。根据数据仓库顾问Ralph Kimball的说法,维度建模是一种用于数据库的设计技术,旨在支持数据仓库中的最终用户查询。它面向易理解性和性能。他认为,虽然面向事务的实体关系模型(ER)对于事务捕获非常有用,但应避免将其用于最终用户交付。

维度建模总是使用事实表和维度表。事实是数值,可以根据事实值进行聚合和分析。维度定义事实值的层次结构和描述。

维度表

维度表存储描述事实表中对象的属性。维度表有一个主键,唯一标识每个维度行。此键用于将维度表与事实表关联。

维度表通常是反规范化的,因为它们不是为了执行事务而创建的,而只是用于详细分析数据。

示例

在下面的维度表中,客户维度通常包括客户姓名、地址、客户 ID、性别、收入群体、教育水平等。

客户ID 姓名 性别 收入 教育 宗教
1 Brian Edge 2 3 4
2 Fred Smith 3 5 1
3 Sally Jones 1 7 3

事实表

事实表包含称为度量的数值。事实表包含两种类型的列——事实和指向维度表的外部键。

事实表中的度量分为三种类型:

  • 可加性 - 可以跨任何维度相加的度量。

  • 不可加性 - 无法跨任何维度相加的度量。

  • 半可加性 - 可以跨某些维度相加的度量。

示例

时间ID 产品ID 客户ID 销售数量
4 17 2 1
8 21 3 2
8 4 1 1

此事实表包含时间维度、产品维度、客户维度的外键和度量值销售数量。

假设一家公司向客户销售产品。每次销售都是公司发生的事实,事实表用于记录这些事实。

常见的事实包括:销售数量、利润率、销售收入等。维度表列出诸如客户、时间、产品等因素,我们希望通过这些因素来分析数据。

现在,如果我们考虑上述事实表和客户维度,那么还会有产品和时间维度。有了这个事实表和这三个维度表,我们可以提出诸如以下问题:2010 年卖给男性客户多少手表?

维度表和事实表之间的区别

维度表和事实表之间的功能区别在于,事实表保存我们想要分析的数据,而维度表保存允许我们查询数据所需的信息。

聚合表

聚合表包含可以使用不同的聚合函数计算的聚合数据。

聚合函数是一种函数,其中多个行的值根据某些条件分组在一起作为输入,以形成具有更重要意义或度量的单个值。

常见的聚合函数包括:

  • 平均值()
  • 计数()
  • 最大值()
  • 中位数()
  • 最小值()
  • 众数()
  • 总和()

这些聚合表用于性能优化,以便在数据仓库中运行复杂的查询。

示例

您可以保存具有聚合数据的表,例如按年(1 行)、季度(4 行)、月(12 行),现在您必须进行数据比较,例如,每年只需要处理 1 行。但是,在非聚合表中,将处理所有行。

MIN 返回给定列中的最小值
MAX 返回给定列中的最大值
SUM 返回给定列中数值的总和
AVG 返回给定列的平均值
COUNT 返回给定列中值的总数
COUNT (*) 返回表中的行数

Select Avg (salary) from employee where title = ‘developer’。此语句将返回所有职位等于“开发人员”的员工的平均工资。

聚合可以在数据库级别应用。您可以在数据库中创建聚合并将其保存在聚合表中,或者您可以在报表级别动态应用聚合。

注意 - 如果您在数据库级别保存聚合,则可以节省时间并提供性能优化。

广告
© . All rights reserved.