03.维度表设计

维度表

维度表可以看成是用户用来分析一个事实的窗口,它里面的数据应该是对事实的各个方面描述,比如时间维度表,它里面的数据就是一些日,周,月,季,年,日期等数据,维度表只能是事实表的一个分析角度。

维度表的设计步骤

  1. 完成维度的初步定义,并保证维度的一致性。
  2. 确定主维表(中心事实表)。此处的主维表通常是数据引入层(ODS)表,直接与业务系统同步。例如,s_auction 是与前台商品中心系统同步的商品表,此表即是主维表。
  3. 确定相关维表。数据仓库是业务源系统的数据整合,不同业务系统或者同一业务系统中的表之间存在关联性。根据对业务的梳理,确定哪些表和主维表存在关联关系,并选择其中的某些表用于生成维度属性。以商品维度为例,根据对业务逻辑的梳理,可以得到商品与类目、卖家、店铺等维度存在关联关系。
  4. 确定维度属性,主要包括两个阶段。第一个阶段是从主维表中选择维度属性或生成新的维度属性;第二个阶段是从相关维表中选择维度属性或生成新的维度属性。以商品维度为例,从主维表(s_auction)和类目 、卖家、店铺等相关维表中选择维度属性或生成新的维度属性。

维度表常涉及到两种概念:退化维度缓慢变化维度

  1. 退化维度

退化维度不是维度,它表示一种针对维度展现的方法。在实际开发中,经常遇到在一些事实表频繁使用的维度,比如订单表中的用户信息、商品信息。为了使用方便,这些维度信息便可以直接放到事实表中,毕竟对于目前大数据来讲,存储成本还是很低的,这种设计就称为退化维度。

  1. 缓慢变化维

维度并不是保持不变,它会随着业务的发展而发生改动。这种随着时间发生变化的维度称为缓慢变化维。