数仓建模理论--维度建模

总线架构:
维度建模的数据仓库中,有一个概念叫Bus Architecture,中文一般翻译为“总线架构”。总线架构是Kimball的多维体系结构(MD)中的三个关键性概念之一,另两个是一致性维度(Conformed Dimension)和一致性事实(Conformed Fact)。
一致性维度和事实,企业数据仓库应该建立一个一致性维度和事实,而不是为每个部门建立维度和事实。
一致性维度: 具有一致的维度关键字,一致的属性列名称,一致的属性定义和一致的属性值。一致性维度要么是统一的,要么是维度表的一个子集。
一致性事实: 指每个度量在整个数据仓库中都是唯一的统计口径,为了避免歧义,一个度量只有唯一的业务术语。
在多维体系结构(MD) 的数据仓库架构中,主导思想是分步建立数据仓库,由数据集市组合成企业的数据仓库。但是,在建立第一个数据集市前,架构师首先要做的就是设计出在整个企业内具有统一解释的标准化的维度和事实,即一致性维度和一致性事实。而开发团队必须严格的按照这个体系结构来进行数据集市的迭代开发。
一致性维度就好比企业范围内的一组总线,不同数据集市的事实的就好比插在这组总线上的元件。这也是称之为总线架构的原因。
总线矩阵(Bus Matrix): 实际设计过程中,我们通常把总线架构列表成矩阵的形式,其中列为一致性维度,行为不同的业务处理过程,即事实,在交叉点上打上标记表示该业务处理过程与该维度相关。这个矩阵也称为总线矩阵(Bus Matrix)。
数仓建模理论--维度建模_第1张图片
总线架构和一致性维度、一致性事实共同组成了Kimball的多维体系结构的基础,也建立了一套可以逐步建立数据仓库的方法论。由于总线架构是多维体系结构的核心,所以我们有时就把多维体系结构直接称为总线架构。
数仓建模理论--维度建模_第2张图片
价值链的意义:
每家机构都有一个关键业务过程组成的潜在价值链,这个价值链确定机构主体活动的自然逻辑流程。数据仓库建设就是围绕着价值链建立一致化的维度和事实。
数仓建模理论--维度建模_第3张图片
维度建模的主要是4个主要过程:
① 选择业务过程

交易的过程分为:创建订单、买家付款、卖家发货、买家确认收货,即下单、支付、发
货和成功完结四个业务过程。
Kimball维度建模理论认为,为了便于进行独立的分析研究,应该为每一个业务过程建立一个事实表。
② 确定粒度
业务过程选定之后,就要对每个业务过程确定一个粒度,即确定事实表每一行所表达的细节层次。需要为四个业务过程确定粒度,其中下单、支付和成功完结选择交易子订单粒度,即每个子订单为事实表的一行,买家收货的粒度为物流单。
③ 确定维度
选定好业务过程并且确定粒度后,就可以确定维度信息了。在店铺交易事实表设计过程中,按照经常用于统计分析的场景,确定维度包含:买家、卖家、商品、商品类目、发货地区、收货地址、父订单维度以及杂项维度。
• a、 尽可能生成丰富的维度属性;
• b、 尽可能多的给出包括一些富有意义的文字描述;
• c、 区分数值型属性和事实;
• d、 尽可能沉淀出通用的维度属性。
④ 确定事实
作为过程度量的核心,事实表应该包含与其描述过程有关的所有事实。以店铺交易事实表为例,选定三个业务过程:下单、支付、成功完结,不同的业务过程有不同的事实。比如在下单业务过程中,需要包含下单金额、下单数量、下单分摊金额;
事实表的分类:
①在数据仓库领域有一个概念叫Transaction fact table,中文一般翻译为“事务事实表”

事务事实表记录的事务层面的事实,保存的是最原子的数据,也称“原子事实表”。事务事实表中的数据在事务事件发生后产生,数据的粒度通常是每个事务一条记录。一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新。
事务事实表的日期维度记录的是事务发生的日期,它记录的事实是事务活动的内容。用户可以通过事务事实表对事务行为进行特别详细的分析。
②在数据仓库领域有一个概念叫Periodicsnapshot fact table,中文一般翻译为“周期快照事实表”
周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,时间间隔如每天、每月、每年等等。典型的例子如销售日快照表、库存日快照表等。
周期快照事实表的粒度是每个时间段一条记录,通常比事务事实表的粒度要粗,是在事务事实表之上建立的聚集表。周期快照事实表的维度个数比事务事实表要少,但是记录的事实要比事务事实表多。
周期快照事实表的日期维度通常是记录时间段的终止日,记录的事实是这个时间段内一些聚集事实值。事实表的数据一旦插入即不能更改,其更新方式为增量更新。
③在数据仓库领域有一个概念叫Accumulatingsnapshot fact table,中文一般翻译为“累积快照事实表”
累积快照事实表代表的是完全覆盖一个事务或产品的生命周期的时间跨度,它通常具有多个日期字段,用来记录整个生命周期中的关键时间点。另外,它还会有一个用于指示最后更新日期的附加日期字段。由于事实表中许多日期在首次加载时是不知道的,所以必须使用代理关键字来处理未定义的日期,而且这类事实表在数据加载完后,是可以对它进行更新的,来补充随后知道的日期信息。
举例来说,
订货日期、预定交货日期、实际发货日期、实际交货日期、数量、金额、运费
数仓建模理论--维度建模_第4张图片
维度建模3种模式:
星型模型、雪花模型、星座模型

星型模型: 星形模式的维度建模由一个事实表和一组维表成,且具有以下特点:
a. 维表只和事实表关联,维表之间没有关联;
b. 每个维表的主码为单列,且该主码放置在事实表中,作为两边连接的外码;
c. 以事实表为核心,维表围绕核心呈星形分布
雪花模型: 雪花模式(Snowflake Schema)是对星形模式的扩展,每个维表可继续向外连接多个子维表
星座模型: 多事实表,且事实表公用维度表
模型的选择:
首先就是星座不星座这个只跟数据和需求有关系,跟设计没关系,不用选择。
星型还是雪花,取决于性能优先,还是避免冗余、灵活更优先。
目前实际企业开发中,不会绝对选择一种,根据情况灵活组合,甚至并存(一层维度和多层维度都保存)。但是整体来看,更倾向于维度更少的星型模型。尤其是hadoop体系,减少join就是减少shuffle,性能差距很大
采用雪花模式,用户在统计分析的过程中需要大量的关联操作,是用复杂度高,同时查询性能很差;因此需要将维度的属性层次合并到单个维度中,该操作称之为反规范化,采用反规范化处理,方便,易用且性能好。

你可能感兴趣的:(数据仓库,数仓建模,数据仓库)