维度建模方法 数据仓库 大话数仓 二
前文曾经繁难引见了什么是数据仓库,数据仓库理想表、维表等相关概念。在了解这些概念之后,咱们要树立合乎企业要求,能允许业务经常使用、运营剖析的数据仓库。但是在对数据建模之前,咱们要对整个业务系统有深入的了解,只要深度了解了公司内的业务,在数仓树立环节中才会形象出公共维度的理想宽表,缩小数据重复建模、优化数据品质。
一、维度建模方法论
数据仓库建模方法论有多种:区分是维度建模、范式建模、Data Vault模型、Anchor模型。而在企业中最盛行,最罕用的数仓建模方式便是维度建模。
1、维度模型
按数据组织建模类型划分可分为星型模型、雪花模型、星座模型。前文中曾经引见了相关概念,这里不再做过多赘述。
1.1、星型模型
星型模型是维表和理想表,以理想表为中心,一切维度间接关联无理想表上,呈星型散布,即是 星型模型。
1.2、雪花模型
在星型模型的基础上,维度表上又关联了其余维度表,这种叫雪花模型。
雪花模型保养老本高,性能较差,普通很少经常使用。尤其在基于Hadoop体系构建数据仓库时,尽或许的要缩小join的操作。
1.3、星座模型
星座模型,是对星型模型的裁减加长,多张理想表共享维度表。
2、范式模型
即实体相关(ER)模型,从全企业的高度设计一个3NF模型,用实体加相关形容的数据模型形容企业业务架构,在范式通常上合乎3NF。
3、Data Vault模型
DataVault由Hub(关键外围业务虚体)、Link(相关)、Satellite(实体属性) 三局部组成 ,它是在ER相关模型上的衍生,同时设计的登程点也是为了成功数据的整合,并非为数据决策剖析间接经常使用。
4、Anchor模型
高度可裁减的模型,一切的裁减只是增加而不是修正,因此它将模型规范到6NF,基本变成了K-V结构模型,基本很少经常使用。
二、维度建模流程
上方经过一个业务场景来繁难论述维度建模的环节,咱们以微商城下单为例:一个会员购置一件商品,会生成一条记载数据。这条记载蕴含了会员的ID、商品的ID、期间,支付金额,支付方式等等诸多业务消息,咱们对这条记载启动拆分。
维度建模的步骤:
2.1、搜集业务需求与数据成功
在启动数据建模之前,咱们要跟业务方启动充沛沟通,了解整个链路的业务,对底层数据要充沛意识。 经过沟通交换、检查数据库数据或现有报表数据,了解他们须要的关键性目的,运营目的。同时数据实践状况要跟多开发组启动重复核验,确保数据的 原子性(原生业务数据,未启动任何加工处置的数据)。
2.2、选用业务环节
业务环节是业务优惠事情,如下单,支付,退款都是业务环节,把这些环节转换为理想表中的理想,少数理想表只记载某一业务环节的结果。业务环节的选用十分关键,由于业务环节定义了特定的设计目的以及对粒度、维度、理想的定义。
2.3、申明粒度
申明粒度是维度设计的关键步骤,粒度用于确定某一理想表中的行示意什么。在选用维度或理想前必定申明粒度,由于每个维度或理想必定与定义的粒度坚持分歧。在从给定的业务环节失掉数据时,原子粒度是最低级别的粒度。
2.4、确认维度
维度是度量的环境,用来反映业务的一类属性。这类属性的汇合构成一个维度,也可以称为实体对象。维度属于一个数据域,如天文维度(其中包括国度、地域、省以及市区等级别的内容)、期间维度(其中包括年、季、月、周、日等级别的内容)。
2.5、确认理想
理想 触及来自业务环节事情的度量,基本上都是以数据值示意。理想表作为数据仓库维度建模的外围,紧紧围绕着业务环节来设计,经差错掉形容业务环节的度量来表白业务环节,蕴含了援用的维度和与业务环节无关的度量。在设计环节中,可以选用不同类型的理想表,它们有各自的实用场景
2.6、数据建模
选用一种维度模型启动数据建模,经常使用星型建模对业务数据启动建模。
三、数仓建模规范
3.1、数仓层级划分
ODS原始数据层
ODS层保管一切操作数据,不对原始数据做任何处置。在业务系统和数据仓库之间构成一个隔离,源系统数据结构的变动不影响其余数据分层。减轻业务系统被重复抽取的压力,由ODS一致启动抽取和散发。记住ODS层数据要保管数据的原始性。
DWD数据明细层
处置准则:
DWS数据汇总层
DWS层数据按主题对数据启动形象、归类,提供业务系统细节数据的常年积淀。这 一层是一些汇总后的宽表,是依据DWD层数据依照各种维度或多种维度组合,把须要查问的一些理想字段启动汇总统计。可以满足一些特定查问、数据开掘运行,面向业务层面,依据需求启动汇总。
ADS数据明细层
ADS运行层是依据业务须要,由DWD、DWS数据统计而出的结果,可以间接提供查问展现,或导入至Oracle等相关型数据库中经常使用。这一层的数据会面向特定的业务部门,不同的业务部门经常使用不同的数据,允许数据开掘。
数据仓库分层形式作用
3.1.1、数据结构化更明晰: 关于不同层级的数据,他们作用域不相反,每一个数据分层都有它的作用域,这样咱们在经常使用表的时刻能更繁难地定位和了解。
3.1.2、数据血统追踪: 提供应外界经常使用的是一张业务表,但是这张业务表或许起源很多张表。假设有一张起源表出疑问了,咱们可以极速准确的定位到疑问,并分明每张表的作用范围。
3.1.3、缩小重复开发: 数据分层规范化,开发一些通用的两边层数据,能够缩小重复计算,提高单张业务表的经常使用率。
3.1.4、简化复杂的疑问: 把一个复杂的业务分红多个步骤成功,每一层只处置繁多的步骤,比拟繁难和容易了解。而且便于保养数据的准确性,当数据出现疑问之后,可以不用修复一切的数据,只要要从有疑问的步骤开局修复。有点相似Spark RDD的容错机制。
3.1.5、缩小业务的影响: 业务或许会经常变动,这样做就不用改一次性业务就须要从新接入数据。
3.2、数据域划分和命名
数据域的划分至关关键,在数据建模环节中,往往须要咱们依据业务划分数据并商定命名。倡导经常使用业务称号联合数据档次商定相关命名的英文缩写,这样划分档次更明晰,见名即可知意。
3.2.1、数据域划分
按业务划分:
命名时按关键的业务划分,以指点物理模型的划分准则、命名准则及经常使用。如公司有多条业务线,可以依照不同业务线启动划分。
按数据域划分:
命名时依照数据域启动划分,以便有效地对数据启动控制。例如,买卖 数据的英文缩写可定义为“trd”,会员数据的英文缩写可以定义为 mbr。
按业务环节划分:
当一个数据域由多个业务环节组成时,命名时可以按业务流程划分。业务环节是从数据剖析角度看主观存在的或许形象的业务行为举措。例如,买卖数据域中的“退款”这个业务环节的英文缩写可商定命名为“rfd_ent”。
3.2.2、义务命名
针对数据域义务命名必定要依照规范口头,这里以作者上班中经常常使用的命名方式为例,当然每团体习气不同,命名或许有所不同。
如:ods_jnxx_mbr_intgl_diods:代表ods层jnxx:公司称号英文缩写mbr:会员 的缩写 mbr,示意会员业务intgl:会员积分 英文的缩写,会员积分相关义务di:代表天增量。d:代表日全量同步ri:代表小时增量同步m:代表月等等,这里就不逐一举例了。