数据仓库建模
一、建模方法论
数仓的建模或者分层,其实都是为了更好的去组织、管理、维护数据,所以当你在更高的维度去看的话,所有的划分都是为了更好的管理。
1.访问性能
能够快速查询所需的数据,减少数据I/O。
2.数据成本
减少不必要的数据冗余,实现计算结果数据复用,降低大数据系统中的存储成本和计算成本。
3.使用效率
改善用户应用体验,提高使用数据的效率。
4.数据质量
改善数据统计口径的不一致性,减少数据计算错误的可能性,提供高质量的,一致的访问平台。

二、数仓建模
1.维度建模
维度建模是数仓领域另一位大师ralph kimball所倡导,是数据仓库工程领域最流行的数仓建模经典。维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快完成分析需求,同时还有较好的大规模复杂查询的响应性能。维度建模是专门用于分析型数据库,数据仓库、数据集市建模的方法。
维度建模的主要构成是维度表和事实表。每一张维度表对应现实世界中的一个对象或者一个主题,例如:客户、产品、时间、地区等,通常是包含了多个属性的列,通常数据量不会太大;事实表则是描述业务的多条记录,包含了描述业务的度量值以及和维度表相关联的外键,外键和维度表通常是多对多的关系,数据量大而且经常发生变化。
维度分为:
① 退化维度(DegenerateDimension)
在维度类型中,有一种重要的维度称作为退化维度,亦维度退化一说。这种维度指的是直接把一些简单的维度放在事实表中。退化维度是维度建模领域中的一个非常重要的概念,它对理解维度建模有着非常重要的作用,退化维度一般在分析中可以用来做分组使用。
② 缓慢变化维(Slowly Changing Dimensions)
维度的属性并不是始终不变的,它会随着时间的流逝发生缓慢的变化,这种随时间发生变化的维度我们一般称之为缓慢变化维(SCD)。比如员工表中的部门维度,员工的所在部门有可能两年后调整一次。
维度建模一般包含三个,一般是根据业务需求和业务复杂性加以区分,有区分的方法但没有比较清晰地界限。
(1)星型模型
星型模式(star schema)是面向主题的常用模式,主要由一个事实表和多个维度表构成,不存在二级维度表。

(2)雪花模型
雪花模型(snowflake schema)是在星型模型基础上将维表再次扩展,每个维表可以继续向外连接多个子维表
雪花模型相当于将星型模型的大维表拆分成小维表,满足了规范化设计,因为很少会有事实表只关联一层维度的,往往维度还会细分,钻取。然而这种模式在实际应用中很少见,因为跨表查询时效率很慢,所以现在的做法是将部分维度表整合到事实表中,形成宽表,在查询汇总的时候只需要group by就可以了,不需要在进行join操作。

(3)星座模型
星座模型(fact constells schema)也是星型模型的扩展,存在多个事实表且可共用同一个维表。实际上数仓模型建设后期,大部分维度建模都是星座模型。

(4)维度建模流程
1)选择业务过程:不如说理解清楚需求(事实表)。具体业务过程。
2)声明粒度:保证维度粒度为最小粒度,保证以后的可扩展性,以及向下钻去的灵活性特殊说明,除周期性快照表,其他类型的事实表的时间粒度都保持操作性系统中的时间,即明细到时分秒。
3)确定维度:即表中所需要包括的环境信息,如类型、地区、日期、时间等维度。
4)确定事实:表中需要度量的属性(字段),如订单事实表中的金额、数量等,事实与维度共同构成了表中的所有列。
5)冗余维度:完全把事实表和维度表拆开,这是不现实也不符合效率的,因此建设过程中需要把一些通用高频的维度冗余进事实表中,以空间换时间的方法提升效率。
三、数据模型设计术语名词解释
主题(域):主题(Subject)是在较高层次上将企业信息系统中的数据进行综合、归类和分析利用的一个抽象概念,每一个主题基本对应一个宏观的分析领域。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。例如“销售分析”就是一个分析领域,因此这个数据仓库应用的主题就是“销售分析”。主题域是对某个主题进行分析后确定的主题的边界。
数据域:指面向业务分析,将业务过程或者维度进行抽象的集合。其中, 业务过程可以概括为一个个不可拆分的行为事件, 在业务过程之下, 可以定义指标;维度是指度量的环境,如买家下单事件,买家是维度。为保障整个体系的生命力, 数据域是需要抽象提炼,并且长期维护和更新的, 但不轻易变动。在划分数据域时, 既能涵盖当前所有的业务需求,又能在新业务进入时无影响地被包含进已有的数据域中和扩展新的数据域。
业务板块:业务板块定义了数据仓库的多种命名空间,是一种系统级的概念对象。当数据的业务含义存在较大差异时,您可以创建不同的业务板块,让各成员独立管理不同的业务,后续数据仓库的建设将按照业务板块进行划分。
业务过程:指企业的业务活动事件,如下单、支付、退款都是业务过程。请注意,业务过程是一个不可拆分的行为事件, 通俗地讲,业务过程就是企业活动中的事件。
业务限定:统计的业务范围,用于筛选出符合业务规则的记录(类似于SQL中where后的条件,不包括时间区间)。原子指标是计算逻辑的标准化定义,业务限定则是条件限制的标准化定义。
时间周期:用来明确数据统计的时间范围或者时间点,如最近30 天、自然周、截至当日等。
修饰类型:是对修饰词的一种抽象划分。修饰类型从属于某个业务域,如日志域的访问终端类型涵盖无线端、PC 端等修饰词。
修饰词:指除了统计维度以外指标的业务场景限定抽象。修饰词隶属于一种修饰类型,如在日志域的访问终端类型下, 有修饰词PC 端、无线端等。
统计粒度:统计分析的对象或视角,定义数据需要汇总的程度,可以理解为聚合运算时的分组条件(类似于SQL中group by的对象)。粒度是维度的一个组合,指明您的统计范围。例如,某个指标是某个卖家在某个省份的成交额,则粒度就是卖家、省份这两个维度的组合。如果您需要统计全表的数据,则粒度为全表。在指定粒度时,您需要充分考虑到业务和维度的关系。统计粒度也被称为粒度,是维度或维度组合,一般用于派生指标构建,是汇总表的唯一性识别方式。
指标:指标分为原子指标和派生指标。派生指标是以原子指标为基准,组装统计粒度、统计周期及业务限定而生成的。原子指标是对指标统计口径、具体算法的一个抽象。根据计算逻辑复杂性,Dataphin将原子指标分为两种:原生的原子指标:例如支付金额。衍生原子指标:基于原子指标组合构建。例如,客单价通过支付金额除以买家数组合而来。派生指标是业务中常用的统计指标。为保证统计指标标准、规范、无二义性地生成,OneData方法论将派生指标抽象为四部分:派生指标=原子指标+业务限定+统计周期+统计粒度。
维度:维度是度量的环境,用来反映业务的一类属性, 这类属性的集合构成一个维度,维度也可以称为实体对象。维度属于一个数据域,如地理维度(其中包挤罔家、地区、省以及城市等级别的内容)、时间维度(其中包括年、季、月、周、日等级别的内容)。
维度属性:维度属性隶属于一个维度, 如地理维度里面的国家名称、同家ID 、省份名称等都属于维度属性。
派生指标:派生指标=一个原子指标+多个修饰词(可选)+时间周期。可以理解为对原子指派生指标标业务统计范罔的圈定。如原子指标:支付金额,最近l天海外买家支付金额则为派生指标(最近l 天为时间周期, 海外为修饰词, 买家作为维度,而不作为修饰词)。
注意:
这里有两个概念:主题域和数据域,两者概念一致,虽然都是从业务上划分,只是角度不同。主题从高层业务视角来划分,面向业务。数据域从系统数据打通的角度来划分,面向数据。数据域可能涉及到多主题域,主题域也可能涉及到多数据域。

浙公网安备 33010602011771号