维度建模是数据仓库大师Ralph Kimball提出的一种用于数据仓库的建模技术。用于设计数据仓库和BI系统。它以事实表(记录交易事实的表,比如订单明细表)和维度表(提供分析维度的表,比如门店表、商品表)为中心,用于分析和报告业务指标。
维度建模流程,在《数据模型(一):基础概念篇》一文中第三部分有做框架介绍。
本篇重点探讨建模技术:星型模型和雪花模型
星型模型的名称来源于它的物理结构形状,通常用一颗中心的事实表连接着多个辐射状的维度表,这种结构形状非常类似于一颗星星,因此就被称为星型模型。
在星型模型中,事实表是数据模型中最为关键和核心的表,存储了具体的业务事实数据,如订单明细表,含销售额、订购数量等。维度表则包含了与业务事实相关的属性信息,如商品、门店、客户等。事实表与维度表之间通过共享的主键进行连接,构成了一个类似于星星的模型结构,从而方便进行多维分析。
如下图:
订单表为事实表,会员、商品、门店、渠道等均为维度表,维度表与事实表1:N建立关系;
雪花模型的名称也来源于它的物理结构形状,可以认为是星型模型的扩展。它在星型模型的基础上进行了维度表的规范化拆分,从而使维度表也出现了层次化。在雪花模型中,维度表被拆分成更多的表,当有一个或多个维度表没有直接连接到事实表上,而是通过主维度表连接到事实表上时,就形成了类似于雪花的模型外观,因此得名为雪花模型。
如下图:
订单表为事实表,除第一层直接与事实表建立1:N关系的会员、商品、门店、渠道等主维度表外,还存在城市、付费会员、品牌、品类等第二层维度表,与第一层的主维度表存在1:N的关系;
结构简单,易于理解和使用,很容易组合出各种查询,对非计算机专业人员也比较友好,不用考虑很多正规化的因素(比如各种范式),设计与实现都比较简单
由于一些维度表已经预先进行了合并,因此不需要过多的join操作,那么关联查询效率就会更高
由于一些维度表已经预先进行了合并,就会造成数据的冗余存储,占用了更多的空间(如在门店维度表中,存在省份江苏 的城市 南京、苏州 两条记录,那么省份 的信息就存储了两次,即存在冗余)
指标分析
销售分析:假设公司想要进行销售数据的分析,包括按产品、地区、时间等维度进行销售额和销售数量的统计。使用星型模型,可以将事实表和维度表以星型结构组织,以快速查询和分析销售数据。
客户关系管理(CRM):在CRM系统中,需要跟踪和分析客户相关的信息,如客户信息、订单历史、服务记录等。通过使用星型模型,将事实表与客户、产品、订单等维度表连接,可以轻松地进行客户分析和个性化的客户关系管理。
库存管理:对于具有复杂库存结构的企业,星型模型可以帮助跟踪和分析库存数据。将事实表与产品、仓库、供应商等维度表连接,可以快速了解各个维度上的库存状况,以便进行库存优化和供应链管理。
规范化拆分&存储,减少了冗余数据,提高数据一致性和准确性,且节省存储空间
更大的灵活性和扩展性,可处理更复杂的层次结构和多级关系
需要更多的join来执行查询(join操作在数据量大的时候很耗时),性能较差
高度结构化的数据,建模时有一定的复杂度,可理解性差。正规化也是一种比较复杂的过程,相应的数据库结构设计、数据的ETL、以及后期模型的维护和管理相对复杂
维度分析
组织架构分析:在大型组织中,雇员的层次结构和关系可能非常复杂。通过使用雪花模型,可以将雇员信息按照部门、职位、层级等维度进行规范化拆分,以支持组织架构的深入分析和人力资源管理。
财务报表分析:财务报表通常涉及多个维度,如时间、地区、账目等。使用雪花模型,可以将维度表进行规范化拆分,以支持复杂的财务分析和报表生成,更好地了解公司的财务状况和趋势。
产品分类分析:在零售行业或其他需要对产品进行分类和分析的场景中,使用雪花模型可以将产品维度表进行规范化拆分,以支持更灵活的产品分类和分析需求,帮助企业进行市场细分和销售策略制定。
小结
以上列出的是一些典型的优劣势,实际应用中应根据具体情况进行评估和选择。根据业务需求和数据特点,可以综合考虑这些因素,选择最适合的模型进行数据建模。
无论选择星型模型还是雪花模型,最重要的是将模型与实际业务需求相匹配,并根据具体情况进行调整和优化。
模型的选择,没有最好,只有合适~
好了,今天就酱紫,回见~
|