OBIEE – 维度建模


维度建模提供了 DW 设计中使用的一组方法和概念。根据 DW 顾问 Ralph Kimball 的说法,维度建模是一种数据库设计技术,旨在支持数据仓库中的最终用户查询。它以可理解性和性能为导向。他表示,虽然面向事务的 ER 对于事务捕获非常有用,但对于最终用户交付应该避免使用。

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

尺寸表

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

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

例子

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

客户ID 姓名 性别 收入 教育 宗教
1 布赖恩·埃奇 中号 2 3 4
2 弗莱德·史密斯 中号 3 5 1
3 莎莉·琼斯 F 1 7 3

事实表

事实表包含称为测量的数值。事实表有两种类型的列 - 事实和维度表的外键。

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

  • 添加剂- 可以在任何维度上添加的措施。

  • 非相加- 无法在任何维度上相加的度量。

  • 半加法- 可以在某些维度上添加的度量。

例子

时间ID 产品编号 客户ID 已售单位
4 17 号 2 1
8 21 3 2
8 4 1 1

该事实表包含时间维度、产品维度、客户维度和销售测量值单位的外键。

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

常见的事实是 - 销售数量、利润、销售收入等。维度表列出了我们要分析数据的因素,如客户、时间、产品等。

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

维度和事实表之间的差异

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

汇总表

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

聚合函数是一种函数,其中多行的值按照特定标准分组在一起作为输入,以形成具有更重要意义或度量的单个值。

常见的聚合函数包括 -

  • 平均的()
  • 数数()
  • 最大限度()
  • 中位数()
  • 最低限度()
  • 模式()
  • 和()

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

例子

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

最小 返回给定列中的最小值
最大限度 返回给定列中的最大值
返回给定列中数值的总和
平均电压 返回给定列的平均值
数数 返回给定列中值的总数
数数 (*) 返回表中的行数

选择职位=“开发人员”的员工的平均(工资)。该语句将返回所有头衔等于“开发人员”的员工的平均工资。

聚合可以应用于数据库级别。您可以创建聚合并将它们保存在数据库的聚合表中,也可以在报表级别动态应用聚合。

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