1 维度设计基础
1.1 维度的基本概念
维度是维度建模的基础和灵魂。在维度建模中,将度量称为“事实”,将环境描述称为“维度”,维度是用于分析事实所需要的多样环境。
维度使用主键标识其唯一性,主键也是确保与之相连的任何事实表之间存在引用完整性的基础。主键有代理键和自然键,它们都是用来表示某维度的具体值。但代理键是不具有业务含义的键,一般用于处理缓慢变化维;自然键是具有业务含义的键。比如商品,在ETL过程中会生成商品维表唯一标识的代理键,但没有业务含义。商品本身的自然键是商品ID。
1.2 维度的基本设计方法
维度设计过程就是确定维度属性(维度字段)的过程,如何生成维度属性,以及所生成的维度属性的优劣,决定了维度使用的方便性,成为数据仓库易用性的关键。正如Kimball所说的,数据仓库的能力直接与维度属性的质量和深度成正比。
下面以淘宝的商品维度为例对维度设计方法进行详细说明。
第一步:选择维度或新建维度。作为维度建模的核心,在企业级数据仓库中必须保证维度的唯一性。
第二步:确定主维表。此处的主为表一般是ODS表。以淘宝商品维度为例,商品表是与前台商品中心系统同步的,即是主维表。
第三步:确定相关维表。根据对业务的梳理,确定哪些表和主维表存在关联关系,并选择其中的某些表用于生成维度属性。
第四步:确定维度属性。本步骤主要包括两个阶段,其中第一个阶段是从主维表中选择维度属性或生成新的维度属性;第二个阶段是从相关维表中选择维度属性或生成新的维度属性。以淘宝为例,从主维表和类目、SPU、卖家、店铺等相关维表中选择维度属性或生成新的维度属性。
确定维度属性的几点提示:
(1)尽可能生成丰富的维度属性。
(2)尽可能多地给出包括一些富有意义的文字性描述。
(3)区分数值型属性和事实。
(4)尽量沉淀出通用的维度属性。
1.3 维度的层次结构
维度中的