- OBIEE 教程
- OBIEE - 首页
- OBIEE - 数据仓库
- OBIEE - 维度建模
- OBIEE - 模式
- OBIEE - 基础知识
- OBIEE - 组件
- OBIEE - 架构
- OBIEE - 仓库
- OBIEE - 业务层
- OBIEE - 展示层
- OBIEE - 测试仓库
- OBIEE - 多个逻辑表
- OBIEE - 计算度量
- OBIEE - 维度层次
- OBIEE - 基于级别的度量
- OBIEE - 聚合
- OBIEE - 变量
- OBIEE - 仪表盘
- OBIEE - 过滤器
- OBIEE - 视图
- OBIEE - 提示
- OBIEE - 安全性
- OBIEE - 管理
- OBIEE 有用资源
- OBIEE - 问答
- OBIEE - 快速指南
- OBIEE - 有用资源
- OBIEE - 讨论
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’。此语句将返回所有职位等于“开发人员”的员工的平均工资。
聚合可以在数据库级别应用。您可以在数据库中创建聚合并将其保存在聚合表中,或者您可以在报表级别动态应用聚合。
注意 - 如果您在数据库级别保存聚合,则可以节省时间并提供性能优化。