系列文章目录
- 维度建模之数据接入经验分享
其一离线数据接入:Sqoop数据接入的经验分享和思考
其二实时数据接入:待更新 - 维度建模之事实表的设计经验分享
- 维度建模之维度表的设计经验分享
- 维度建模之汇总分析表的设计经验分享
- 维度建模之应用层报表的设计经验分享
前言
了解数据库的小伙伴应该都知道,数据库表的设计需要遵循范式,这主要是为了让表更加规范,减少冗余。而目前主流的数据仓库表设计方式是维度建模,为了让表使用起来更方便,通常情况下会主动引入冗余。这是数据库和数据仓库的不同之处。
本文主要分享我在数仓开发过程中维度表的设计经验,供大家参考,如有不正确之处,请评论指正,我们共同进步。
一、维度表的概念
维度是维度建模的基础和灵魂。在维度建模中,将度量称为“事实”,将环境描述为“维度”,维度是用于分析事实所需要的多样环境。例如,在分析交易过程中,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。
二、维度表的设计
(一)公司内部统一维度来源及口径
维度的口径必须保证唯一,如果公司不同部门对同一产品的分类有不同口径,最后统计的结果肯定无法统一。
(二)确认维度表的主数据源表
比如产品信息维度表,应该以数据库中产品表为主数据源表,再关联产品分类等。
(三)根据需要考虑设计成星型结构或雪花结构
如果该维度经常被使用,建议维度关联冗余,让事实表可以直接获取多个维度形成星型模型,如果维度只被少量模型使用,可以考虑雪花模型。
(四)保证维度表主键唯一
必须保证维度表每行数据的唯一性,避免关联时出现一对多。
三、参考书籍
- 《数据仓库工具箱(第3版)——维度建模权威指南》【美】Ralph Kimball & Margy Ross 著
- 《大数据之路——阿里巴巴大数据实践》阿里巴巴数据技术及产品部 著