维度建模提供了DW设计中使用的一组方法和概念.根据DW顾问Ralph Kimball的说法,维度建模是一种数据库设计技术,旨在支持数据仓库中的最终用户查询.它以可理解性和性能为导向.据他介绍,尽管面向事务的ER对于事务捕获非常有用,但应该避免最终用户交付.
维度建模总是使用事实和维度表.事实是数值,可以汇总和分析事实值.维度定义事实值的层次结构和描述.
维度表
维度表存储描述事件表中对象的属性. Dimension表具有唯一标识每个维度行的主键.此键用于将Dimension表与Fact表关联.
维度表通常是非规范化的,因为它们不是为执行事务而创建的,仅用于详细分析数据.
示例
在以下维度表中,客户维度通常包括客户名称,地址,客户ID,性别,收入组,教育级别等等.
弗雷德史密斯
客户ID | 名称 | 性别 | 收入 | 教育 | Religion |
---|---|---|---|---|---|
1 | Brian Edge | M | 2 | 3 | 4 |
2 | M | 3 | 5 | 1 | |
3 | Sally Jones | F | 1 | 7 | 3 |
事实表
事实表包含称为测量值的数值. Fact表有两种类型的列和减号;维度表的事实和外键.
Fact表中的度量有三种类型 :
添加剂 : 可以在任何维度上添加的度量.
非添加剂 : 无法在任何维度上添加的度量.
半添加剂 : 可以在某些维度上添加的度量.
示例
时间ID | 产品ID | 客户ID | 已销售单位 |
---|---|---|---|
4 | 17 | 2 | 1 |
8 | 21 | 3 | 2 |
8 | 4 | 1 | 1 |
此事实表包含外键时间尺寸,产品尺寸,客户尺寸和出售的测量值单位.
假设一家公司向客户销售产品.每次销售都是在公司内部发生的事实,事实表用于记录这些事实.
常见事实是 : 去;销售单位数,保证金,销售收入等.维度表列出了我们想要分析数据的客户,时间,产品等因素.
现在,如果我们考虑上面的事实表和客户维度也会有产品和时间维度.鉴于此事实表和这三个维度表,我们可以提出以下问题:2010年向男性客户销售了多少手表?
维度和事实表之间的差异
维度表和事实表之间的功能差异在于,事实表包含我们要分析的数据,维度表包含允许我们查询它所需的信息.
聚合表
聚合表包含可以使用不同聚合函数计算的聚合数据.
聚合函数是一个函数,其中多行的值被组合在一起作为某些标准的输入,以形成更重要的含义或度量的单个值.
常见的聚合函数包括 :
平均()
计数()
最大值()
中位数()
最低()
模式()
Sum()
这些聚合表用于性能优化,以在数据仓库中运行复杂查询.
示例
您使用聚合数据保存表格,例如每年(1行),每季度(4行),每月(12行),现在您必须对数据进行比较,例如每年仅处理1行.但是在未聚合的表中,将处理所有行.
MIN | 返回给定列中的最小值 |
MAX | 返回给定列中的最大值 |
SUM | 返回给定列中数值的总和 |
AVG | 返回给定列的平均值 |
COUNT | 返回总数给定列中的值的数量 |
COUNT(*) | 返回表中的行数 |
从员工中选择平均值(薪水)其中title ='开发者'.此声明将返回标题等于"开发人员"的所有员工的平均工资.
可以在数据库级别应用聚合.您可以创建聚合并将其保存在数据库中的聚合表中,也可以在报告级别动态应用聚合.
注意 : 如果在数据库级别保存聚合,则可以节省时间并提供性能优化.