在维度建模中,通常将指标的度量称之为“事实”,将产生度量的环境称之为“维度”。将描述同一个业务实体的的多个维度列组合在一起,就是常说的“维度表”。
维度表的构成 维度表通常表示的是参与到业务过程中的一个业务实体(如,商品、卖家、买家、优惠券、时间等等),其每一行数据表示的是一个业务实体的实例(如,商品维度表中的一行表示的就是一个商品)。
维度表的结构 维度表一般由【代理键、自然键、维度属性】三部分构成。如果有保留维度变化历史或大型维度表的拆分需求,可能还会加入其它部分以做技术实现上的补充。
代理键:不具有任何业务含义,仅做维度表数据唯一性区分的属性,通常以主键形式出现。自然键:具有业务含义,是业务实体一个实例的唯一性区分(如,商品ID),在维度表中不一定做表的主键。维度属性:描述同一业务实体各种特征的维度列(如,商品维度表中的商品名称、商品价格等)。维度表中的代理键,会根据分析的需求决定是否存在,如果没有需要保留追溯业务实体历史变化的需求,一般情况会用自然键直接做为维度表的主键,这样通常简单、高校、且易于理解。代理键的存在主要是应对处理变化维度的需求。
维度表代理键 不具有任何业务含义,仅做维度表数据唯一性区分的属性,通常以主键形式出现。
维度表自然键 具有业务含义,是业务实体一个实例的唯一性区分(如,商品ID),在维度表中不一定做表的主键。
下钻 钻取可以改变维的层次,变换分析的粒度。它包括向下钻zhi取(Drill-down)和向上dao钻取(Drill-up)/上卷zhuan(Roll-up)。
**上卷(roll-up):**上卷是沿着维shu的层次向上聚集汇总数据。例如,对产品销售数据,沿着时间维上卷,可以求出所有产品在所有地区每月(或季度或年或全部)的销售额。
**下探(drill-down):**下探是上卷的逆操作,它是沿着维的层次向下,查看更详细的数据。
当一个维度没有数据仓库需要的任何数据时就可以退化此维度。需要把退化维度的相关数据迁移到事实表中,然后删除退化的维度。
非规范化扁平维度 一般说来,维度表应该被非规范化和扁平化,并根据需要使用大量列。
多层次维度 统一维度中可以存在不同的层次,如:日历日期维度可以按照财务周期层次从天到周进行划分,也可能存在从天到月再到年的层次。
文档属性的标识与指示器 字段值所包含的含义应该可以分解成不同的描述性维度属性的部分,如:code=0,code_desc=关闭
维度表中的空值属性 推荐使用描述性字符串代替空值,如:unknown,应该避免再维度属性中使用空值。
日历日期维度 能够非常方便的对事实表按照属性的日期、月份名称、周期等属性进行划分。
扮演角色的维度 单个物理维度可以被事实表多次引用,每个引用连接逻辑上存在差异的角色维度。
杂项维度 一些混杂的、低粒度的表示和指示器,可以单独将这些维度合并形成杂项维度
雪花维度 当事实表有多个维度但不是所有维度都直接与事实表进行关联时,我们称之为雪花维度。比如,产品维度直接关联事实表,但是产品维度又关联分类维度,此时我们称之为雪花维度。
支架维度 维度表中包含对其他维度表的引用,被引用的维度称为支架维度。多数情况下,事实表和维度之间的关联应该由事实表来实现。