简介
数据仓库建模是指将数据仓库中的数据进行组织和结构化,以便支持分析、报告和查询。数据仓库建模需要考虑多个方面的因素,包括业务需求、数据源、查询性能等。
一般地,数据仓库建模可以分为以下几个步骤:
确定业务需求:首先需要明确数据仓库的业务目标和需求,了解需要对哪些业务指标进行跟踪和分析,以及需要从哪些数据源中获取数据。
设计维度模型:在确定业务需求后,需要设计维度模型。维度模型是一种基于事实表和维度表的建模方法。事实表包含了数值型数据,如销售额、订单数量等,而维度表则包含了描述性数据,如时间、地理位置、产品等。
设计物理模型:在确定维度模型后,需要设计物理模型。物理模型是将逻辑模型转化为物理存储结构的过程,包括确定表之间的关系、表的列和数据类型、索引等。
实施ETL流程:在设计好物理模型后,需要实施ETL(抽取、转换、加载)流程。该流程包括从源数据中提取数据、将数据转换为目标格式、以及将数据加载到目标数据仓库中。
实施查询:最后,需要实施查询来分析和报告数据。查询通常基于多维度的视图和聚合函数进行,以提供基于多个业务指标的分析结果。
在数据仓库建模过程中,需要充分考虑业务需求和数据特点,并采用适当的建模方法和工具来支持数据分析和报告。同时,需要定期对数据仓库进行维护和优化,以确保查询性能和数据准确性。
常见的建模方案有:维度建模、范式建模、Data Vault模型、Anchor模型。
数据仓库主要采用维度建模是因为维度建模具有以下优势:
简单易懂:维度建模使用直观的维度和事实表的结构,易于理解和解释。它将业务数据组织成易于查询和分析的形式,使用户能够快速了解和获取所需信息。
灵活性:维度建模可以根据业务需求进行灵活扩展和调整。新的维度和度量可以很容易地添加到模型中,而不需要对现有模型进行大规模改变。这种灵活性使得数据仓库能够适应不断变化的业务需求。
查询性能优化:维度建模通过预聚合和冗余数据的方式来提高查询性能。通过在维度表中存储预计算的指标数据,可以减少复杂的连接和计算操作,加快查询速度。此外,维度表的冗余数据也可以减少多表连接的次数,进一步提高查询性能。
支持分析需求:维度建模适用于多维度分析和OLAP(联机分析处理)操作。通过将数据按照多个维度进行切片和切块,可以支持复杂的查询和分析需求,如数据切片、钻取、滚动等操作。
易于集成:维度建模与业务用户的需求更贴合,易于与BI工具和报表系统集成。这使得数据仓库能够为用户提供直观、灵活且易于操作的分析环境。
维度建模,是数据仓库大师Ralph Kimball提出的,是数据仓库工程领域最流行的数仓建模经典。
维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。维度建模是面向分析的,为了提高查询性能可以增加数据冗余,反规范化的设计技术。
Ralph Kimball提出对数据仓库维度建模,并且将数据仓库中的表划分为事实表、维度表两种类型。
事实表
在ER模型中抽象出了有实体、关系、属性三种类别,在现实世界中,每一个操作型事件,基本都是发生在实体之间的,伴随着这种操作事件的发生,会产生可度量的值,而这个过程就产生了一个事实表,存储了每一个可度量的事件。以电商行业为例:电商场景:一次购买事件,涉及主体包括客户、商品、商家,产生的可度量值 包括商品数量、金额、件数等:
累积快照事实表,用来记录具有时间跨度的业务处理过程的整个过程的信息,每个生命周期一行,通常这类事实表比较少见。
维度表
维度,顾名思义,业务过程的发生或分析角度。比如从颜色、尺寸的角度来比较手机的外观,从cpu、内存等较比比较手机性能维。维度表一般为单一主键,在ER模型中,实体为客观存在的事物,会带有自己的 描述性属性,属性一般为文本性、描述性的,这些描述被称为维度。
比如商品,单一主键:商品ID,属性包括产地、颜色、材质、尺寸、单价等, 但并非属性一定是文本,比如单价、尺寸,均为数值型描述性的,日常主要的维度抽象包括:时间维度表、地理区域维度表等。
案例:某电商平台,经常需要对订单进行分析,以某宝的购物订单为例,以维度建模的方式设计该模型。
涉及到事实表为订单表、订单明细表,维度包括商品维度、用户维度、商家维度、区域维度、时间维度 :
维度分为:
(1)退化维度(DegenerateDimension)
在维度类型中,有一种重要的维度称作为退化维度,亦维度退化一说。这种维度指的是直接把一些简单的维度放在事实表中。退化维度是维度建模领域中的一个非常重要的概念,它对理解维度建模有着非常重要的作用,退化维度一般在分析中可以用来做分组使用。
(2)缓慢变化维(Slowly Changing Dimensions)
维度的属性并不是始终不变的,它会随着时间的流逝发生缓慢的变化,这种随时间发生变化的维度我们一般称之为缓慢变化维(SCD)。比如员工表中的部门维度,员工的所在部门有可能两年后调整一次。
维度建模模型的分类
?维度建模按数据组织类型划分可分为星型模型、雪花模型、星座模型。
(1)星型模型
星型模型主要是维表和事实表,以事实表为中心,所有维度直接关联在事实表上,呈星型分布。
雪花模型
雪花模型,在星型模型的基础上,维度表上又关联了其他维度表。这种模型维护成本高,性能方面也较差,所以一般不建议使用。尤其是基于hadoop体系构建数仓,减少join就是减少shuffle,性能差距会很大。
提示:由上可以看出
星型模型和雪花模型主要区别就是对维度表的拆分。
对于雪花模型,维度表的涉及更加规范,一般符合3NF,有效降低数据冗余,维度表之间不会相互关联。
而星型模型,一般采用降维的操作,反规范化,不符合3NF,利用冗余来避免模型过于复杂,提高易用性和分析效率,效率相对较高。
星座模型
星座模型,是对星型模型的扩展延伸,多张事实表共享维度表。数仓模型建设后期,大部分维度建模都是星座模型。
维度建模步骤
维度建模步骤:选择业务过程->声明粒度->确定维度->确定事实。旨在重点解决数据粒度、维度设计和事实表设计问题。
声明粒度,为业务最小活动单元或不同维度组合。以共同粒度从多个组织业务过程合并度量的事实表称为合并事实表,需要注意的是,来自多个业务过程的事实合并到合并事实表时,它们必须具有同样等级的粒度。?