页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

在选择集成到一个模型表中时,还可以定义一个层次结构,其中包含维度的最高和最低粒度。 冗余非规范化数据的存储可能会增加模型存储大小,尤其是在维度表很大的情况下。

渐变维度

角色扮演维度角色扮演维度

角色扮演维度是能以不同方式筛选相关事实的维度 。 例如,在Northwind中,订单维度表与订单销售明细事实之间有三种关系:可以使用同一维度表中按订单日期、发货日期或交货日期筛选事实。

数据仓库中接受的设计方法是定义单个日期维度表。 在查询时,日期维度的“角色”是通过用于联接表的事实列建立的。 例如,在按订单日期分析销售情况时,表联接与订单日期列相关。

在Smartbi数据模型中,我们用一种常见的建模方法解决,就是为每个角色扮演实例创建维度类型表。 该模型可以包含日期表、发货日期表和交货日期表,每个表与其对应的销售表列之间都存在单一且活动的关系 。

杂项维度

如果有多个维度,特别是包含几个属性(可能只有一种)并且这些属性的值很少时,则杂项维度非常有用 。

合适的候选项包括订单状态列或客户人口统计列(性别、年龄分组等)。

杂项维度的设计目标是将多个“小”维度合并为一个维度,以减少模型的存储大小,还可以通过呈现更少的模型表来缓解“字段”窗格的混乱情况 。

杂项维度表通常是所有维度属性成员的笛卡尔积,具有唯一标识列。 可以在数据仓库中构建维度,也可以通过使用Smartbi数据模型中的私有查询创建,并此查询作为维度类型表加载到模型中。

退化维度

退化维度指的是筛选所需的事实数据表的属性 。 我们的northwind中就有一个例子,就是销售订单号。 在这种情况下,创建仅包含这一列的独立表对模型设计并没有什么积极作用,因为这会增加模型的存储大小,并导致“字段”窗格混乱 。

在Smartbi模型中,可以将销售订单号列添加到事实类型表,以允许按销售订单号进行筛选或分组。 

无事实事实数据表

无事实事实数据表不包含任何度量值列 。 它仅包含维度键。

无事实事实数据表可以存储由维度键定义的观察值。 例如,在特定日期和时间,特定客户登录到你的网站。 你可以定义一个度量值以对无事实事实数据表中的行进行计数,从而对客户的登录时间和数量进行计数分析。

无事实事实数据表的更有力的用途是存储维度之间的关系,例如,假设销售人员可以分配到一个或多个销售区域 , 则需要设计为包含两列的无事实事实数据表:销售人员键和区域键, 这两列中可以存储重复的值。

模型表关系

模型设计过程中,模型表的关系也是很重要的一项内容。

...

  • 分割具有多列的表。
  • 由于安全原因而隔离表的一部分。
  • 保存临时的数据,并且可以毫不费力地通过删除该表而删除这些数据。
  • 保存只适用于主表的子集的信息。

多对多关系

多对多的关系,可以看成是两个多对一的关系,如下的课程表和学生表:

Image Modified

站在课程表的角度,一门课可以被多个学生选择,是多对一的关系;站在学生表的角度,一个学生可以选择多门课程,是多对一的关系。

这两个表的多对多关系,通过一张关联表来建立关联:

Image Modified

101课程被学号1、学号2的学生选择;学号1的学生同时选择了101、202、303的课程。

目前Smarbi数据模型构建仅支持一对多(多对一)和一对一关系。

...