1 维度表的定义
在维度建模中,通常将指标的度量称之为“事实”,将产生度量的环境称之为“维度”。将描述同一个业务实体的的多个维度列组合在一起,就是常说的“维度表”。维度表是用户分析数据的窗口,其提供了事件发生过程中的环境描述信息,能够做数据查询的过滤条件和数据分析的分组。维度设计既是维度建模的基础,也是其关键所在,可以说,维度表设计的质量,将决定了整个维度模型分析能力的上限。
2 维度表的构成
维度表通常表示的是参与到业务过程中的一个业务实体(如,商品、卖家、买家、优惠券、时间等等),其每一行数据表示的是一个业务实体的实例(如,商品维度表中的一行表示的就是一个商品)。
2.1 维度表的结构
维度表一般由【代理键、自然键、维度属性】三部分构成。如果有保留维度变化历史或大型维度表的拆分需求,可能还会加入其它部分以做技术实现上的补充。代理键:不具有任何业务含义,仅做维度表数据唯一性区分的属性,通常以主键形式出现。
自然键:具有业务含义,是业务实体一个实例的唯一性区分(如,商品ID),在维度表中不一定做表的主键。
维度属性:描述同一业务实体各种特征的维度列(如,商品维度表中的商品名称、商品价格等)。
维度表中的代理键,会根据分析的需求决定是否存在,如果没有需要保留追溯业务实体历史变化的需求,一般情况会用自然键直接做为维度表的主键,这样通常简单、高校、且易于理解。代理键的存在主要是应对处理变化维度的需求。
2.2 维度表的内容
3 设计方法
维度表的设计就是确定维度属性的过程,如何识别维度属性、如何生成维度属性,将是设计过程中需要着重考虑的地方。
3.1 维度表设计流程
3.1.1 选择实体
维度表设计首先要选择实体,也就是维度表所要描述的抽象对象。如,互联网电商在交易过程中涉及到的实体有:买家、卖家、订单、广告等等,当然还有一些在不同业务场景下衍生出来的一些业务抽象实体,如优惠券、活动、商圈等都可以作为维度实体。 实体的选择主要是结合业务流程,在需要建模的业务流程环节涉及到了哪些参与者,这些不同的参与者便是维度表描述的实体对象,维度表中的属性,就是用来区分不同实体的特性。下面用电商平台的注册环节举例说明,电商网站的注册,自然需要买家进行注册账号和个人信息,其中涉及买家(即消费者)实体。
3.1.2 确定主维表
确定主维表,主要是识别出维度表的主要数据来源。通常,业务系统中也会将相同类型业务实体进行统一存储(即一张表),亦或是在大型企业有建设业务中台会提前做同类业务实体的数据融合(如,商品中心、用户中心等)。但在没有类似业务中台可以直接获取全量维度实体数据的情况下