了解数据库的小伙伴应该都知道,数据库表的设计需要遵循范式,这主要是为了让表更加规范,减少冗余。而目前主流的数据仓库表设计方式是维度建模,为了让表使用起来更方便,通常情况下会主动引入冗余。这是数据库和数据仓库的不同之处。
本文主要分享我在数仓开发过程中维度表的设计经验,供大家参考,如有不正确之处,请评论指正,我们共同进步。
维度是维度建模的基础和灵魂。在维度建模中,将度量称为“事实”,将环境描述为“维度”,维度是用于分析事实所需要的多样环境。例如,在分析交易过程中,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。
维度的口径必须保证唯一,如果公司不同部门对同一产品的分类有不同口径,最后统计的结果肯定无法统一。
比如产品信息维度表,应该以数据库中产品表为主数据源表,再关联产品分类等。
如果该维度经常被使用,建议维度关联冗余,让事实表可以直接获取多个维度形成星型模型,如果维度只被少量模型使用,可以考虑雪花模型。
必须保证维度表每行数据的唯一性,避免关联时出现一对多。