数据仓库建模理论笔记

1、为什么需要数据建模

将数据有序、有结构地分类组织和存储是我们面临的一个挑战。从业务、数据存取和使用角度合理存储数据,以便在性能、成本、效率和质量之间取得最佳平衡。

2、OLTP系统主要是数据的随机读写,常用ER模型;OLAP系统主要关注的是数据的整合,因此一般使用维度模型

3、ER模型对三范式的要求比较严格,通常没有数据冗余,在做项目时需要分析出各个实体以及实体之间的联系,通常成本和代价比较高;维度模型分为事实模型和维度模型,基于业务,能更好的体现业务过程,深入业务,相比ER模型成本低,对数据冗余比较宽容

4、阿里巴巴数据模型综述:在构建ER模型时遇到了比较大的困难和挑战,互联网业务的快速发展、人员的快速变化、业务知识功底的不够全面,导致 ER 模型设计迟迟不能产出。至此,我们也得到了个经验,在不太成熟、快速变化的业务面前,构建ER模型的风险非常大,不太适合去构建 ER 模型。

5、数据公共层建设的目的是着力解决数据存储和计算的共享问题。,其包括一致性的指标定义体系 、模型设计方法体系以及配套工具。

6、数仓体系的定位和价值

如何建设高效的数据模型和体系,对这些数据进行有序和有结构地分类组织和存储,避免重复建设和数据不一致性,保证数据的规范性, 直是大数据系统建设不断追求的方向。

如何快速上手工作::从业务架构设计到模型设计,从数据研发到数据服务

发展方向是以数据服务为核心,比如数据治理和数据质量提升我们数据服务的准确度,数据产品提升我们数据可视化服务的体感

建设统一 的、规范化的数据接人层( ODS )和数据中间层( DWD DWS ),通过数据服务和数据产品,完成服务于阿里巴巴的大数据系统建设

7、维度建模体系架构

8、主题域划分:用户 渠道 营销 流量 财务 交易 商品

9、指标体系

(1)分为原子指标、派生指标、衍生指标。

(2)组成体系之间的关系:

派生指标由原子指标、时间周期修饰词、若干其他修饰词组合得到

派生指标唯一归属一个原子指标,继承原子指标的数据域,与修饰词的数据域无关。

一般而言,事务型指标和存量型指标(见下文定义)只会唯一定位到一个业务过程,如果遇到同时有两个行为发生、需要多个修饰词、生成一个派生指标的情况,则选择时间靠后的行为创建原子指标,选择时间靠前的行为创建修饰词。

(3)派生指标的种类:

事务型指标:是指对业务活动进行衡量的指标。

存量型指标:是指对实体对象(如商品、会员)某些状态的统计。

复合型指标:是在事务型指标和存量型指标的基础上复合而成的。例如浏览UV-下单买家数转化率。有些需要建新原子指标,有些则可以在事务型或存量型原子指标的基础上增加修饰词得到派生指标。

(4)复合型指标的规则

比率型:创建原子指标,如TR、浏览UV下单买家数转化率、满意率等。例如,“最近天店铺首页TR”,原子指标为“CTR”,时间周期为“最近1天”,修饰类型为“页面类型”,修饰词为“店铺首页”。

比例型:创建原子指标,如百分比、占比。例如“最近1天无线支付金额占比”,原子指标为“支付金额占比”,修饰类型为“终端类型”,修饰词为“无线”。

变化量型:不创建原子指标,增加修饰词,在此基础上创建派指标。例如,“最近1天订单支付金额上1天变化量”,原子指标为“订单支付金额”,时间周期为“最近1天”,修饰类型为“统计方法”,修饰词为“上1天变化量”。

变化率型:创建原子指标。例如,“最近7天海外买家支付金额7天变化率”,原子指标为“支付金额变化率”,修饰类型为“买家地域”,修饰词为“海外买家”。

统计型(均值、分位数等):不创建原子指标,增加修饰词,在此基础上创建派生指标;在修饰类型“统计方法”下增加修饰词,如人均、日均、行业平均、商品平均、90分位数、70分位数等。例如,“自然月日均UV”,原子指标为“UV”,修饰类型为“统计方法”,修饰词为“日均”。

排名型:创建原子指标,一般为top_xxxxxx,有时会同时选择rank和top_xxx_xxx组合使用。创建派生指标时选择对应的修饰词如下:

统计方法(如降序、升序)。

排名名次(如TOP10)。

排名范围(如行业、省份、一级来源等)。

根据什么排序(如搜索次数、PV)。

(5)其他规则

(1)上下层级派生指标同时存在时

如最近1天支付金额和最近1天PC端支付金额,建议使用前者,PC端作为维度属性存放在物理表中体现。

(2))父子关系原子指标存在时

当父子关系原子指标存在时,派生指标使用子原子指标创建派生指标。如PV、IPV(商品详情页PV),当统计商品详情页PV时,优先选择子原子指标。

10、数仓分层

(1)模型层次

操作数据层(ODS)、公共维度模型层(CDM)和应用数据层(ADS),其中公共维度模型层包括明细数据层(DWD)和汇总数据层(DWS)

公共维度模型层(CDM):存放明细事实数据、维表数据及公共指标汇总数据,其中明细事实数据、维表数一般根据ODS层数据加工生成;公共指标汇总数据一般根据维表数据和明细事实数据加工生成。

应用数据层(ADS):存放数据产品个性化的统计指标数据,根据CDM层与ODS层加工生

(2)基本原则(评价一个数仓模型的好坏)

1、高内聚和低辑合

一个逻辑或者物理模型由哪些记录和字段组成,应该遵循最基本的软件设计方法论的高内聚和低藕合原则。主要从数据业务特性和访问特性两个角度来考虑:将业务相近或者相关、粒度相同的数据设计为一个逻辑或者物理模型;将高概率同时访问的数据放一起,将低概率同时访问的数据分开存储。

2、核心模型与扩展模型分离

建立核心模型与扩展模型体系,核心模型包括的宇段支持常用的核心业务,扩展模型包括的字段支持个性化或少量应用的需要,不能让扩展模型的宇段过度侵人核心模型,以免破坏核心模型的架构简洁性与可维护性。

3.公共处理逻辑下沉及单一(比如ADS层永远见不到ODS层原始数据)

越是底层公用的处理逻辑越应该在数据调度依赖的底层进行封装与实现,不要让公用的处理逻辑暴露给应用层实现,不要让公共逻辑多处同时存在。

4.成本与性能平衡

适当的数据冗余可换取查询和刷新性能,不宜过度冗余与数据复制。

5、数据可回滚

处理逻辑不变,在不同时间多次运行数据结果确定不变。

6.一致性

具有相同含义的字段在不同表中的命名必须相同,必须使用规范定义中的名称。

7.命名清晰、可理解

表命名需清晰、一致,表名需易于消费者理解和使用。

11、模型实施

1、在建设大数据数据仓库时,要进行充分的业务调研(自下而上)和需求分析(自上而下)

2、数据域划分:数据域是指面向业务分析,将业务过程或者维度进行抽象的集合。业务过程可以概括为一个个不可拆分的行为事件,如下单、支付、退款。为保障整个体系的生命力,数据域需要抽象提炼,并且长期维护和更新,但不轻易变动。在划分数据域时,既能涵盖当前所有的业务需求,又能在新业务进入时无影响地被包含进已有的数据域中或者扩展新的数据域。

3、构建总线矩阵:明确每个数据域下有哪些业务过程;业务过程与哪些维度相关,并定义每个数据域下的业务过程和维度。

12、维度设计

1、维度的基本概念

维度是维度建模的基础和灵魂。在维度建模中,将度量称为“事实”,将环境描述为“维度”,维度是用于分析事实所需要的多样环境。例如,在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。

维度所包含的表示维度的列,称为维度属性。维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。

维度的作用一般是查询约束、分类汇总以及排序等。

主键有两种:代理键和自然键,它们都是用于标识某维度的具体值。但代理键是不具有业务含义的键,一般用于处理缓慢变化维;自然键是具有业务含义的键。比如商品,在ETL程中,对于商品维表的每一行,可以生成一个唯一的代理键与之对应;商品本身的自然键可能是商品ID等。

2、维度的基本设计方法

数据仓库的能力直接与维度属性的质量和深度成正比。

第一步:选择维度或新建维度。有且只允许有一个维度定义。

第二步:确定主维表。

第三步:哪些表和主维表存在关联关系。

第四步:确定维度属性。

(1)尽可能生成丰富的维度属性

(2)尽可能多地给出包括一些富有意义的文字性描述

(3))区分数值型属性和事实

如果通常用于查询约束条件或分组统计,则是作为维度属性;如果通常用于参与度量的计算,则是作为事实。

(4)尽量沉淀出通用的维度属性

有些维度属性获取需要进行比较复杂的逻辑处理,有些需要通过多表关联得到,或者通过单表的不同宇段混合处理得到,或者通过对单表的某个字段进行解析得到。此时,需要将尽可能多的通用的维度属性进行沉淀。

3、规范化和反规范化

将维度的属性层次合并到单个维度中的操作称为反规范化。

从用户角度来看简化了模型,并且使数据库查询优化器的连接路径比完全规范化的模型简化许多。反规范化的维度仍包含与规范化模型同样的信息和关系,从分析角度来看,没有丢失任何信息,但复杂性降低了。

4、一致性维度和交叉探查

构建企业级数据仓库不可能蹦而就,一般采用迭代式的构建过程。

问题:存在很多需求是对于不同数据域的业过程或者同数据域的不同业务过程合并在起观察。

当存在重复的维度,但维度属性或维度属性值不致时,会导致交叉探查无法进行或交叉探查结果错误。

维度一致性的几种表现形式:

共享维表。比如在阿里巴巴的数据仓库中,商品、卖家、买家、类目等维度有且只有一个。所以基于这些公共维度进行的交叉探查不会存在任何问题。

一致性上卷,其中一个维度的维度属性是另一个维度的维度属性的子集,且两个维度的公共维度属性结构和内容相同。比如在阿里巴巴的商品体系中,有商品维度和类目维度,其中类目维度的维度属性是商品维度的维度属性的子集,且有相同的维度属性和维度属性值。这样基于类目维度进行不同业务过程的交叉探查也不会存在任何问题

交叉属性,两个维度具有部分相同的维度属性。

维度表设计的三个方向:1、数据结构  2、横向扩展  3、纵向扩展

13、事实表设计

1、事实表的特性

通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量

事实表中一条记录所表达的业务细节程度被称为粒度。通常粒度可以通过两种方式来表述:一种是维度属性组合所表示的细节程度;一种是所表示的具体业务含义。

事实表有三种类型:1、可加性事实表,指可以按照与事实表关联的任意维度进行汇总。2、半可加事实表。只能按照特定维度汇总。3、不可加事实表。完全不具备可加性,比如比率型事实。

事实表要细长得多,行的增加速度也比维表快

维度属性也可以存储到事实表中,这种存储到事实表中的维度列被称为“退化维度

事实表有三种类型:事务事实表、周期快照事实表和累积快照事实表。事务事实表用来描述业务过程,眼踪空间或时间上某点的度量事件,保存的是最原子的数据,也称为“原子事实表。周期快照事实表以具有规律性的、可预见的时间间隔记录事实 ,时间间隔如每天、每月、每年等。累积快照事实表用来表述过程开始和结束之间关键步骤事件 ,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点, 当过程随着生命周期不断变化时,记录也会随着过程的变化而被修改

2、事实表设计原则

原则1 :尽可能包含所有与业务过程相关的事实

原则2 :只选择与业务过程相关的事实

原则3:分解不可加性事实为可加的组件

对于不具备可加性条件的事实,需要分解为可加的组件。比如订单 的优惠率,应该分解为订单原价金额与订单优惠金额两个事实存储在事实表中。

原则4 :在选择维度和事实之前必须先声明粒度

粒度用于确定事实表中一行所表示业务的细节层次,决定了维度模型的扩展性。维度和事实必须与所定义的粒度保持一致。在设计事实表的过程中,粒度定义得越细越好,建议从最低级别的原子粒度开始,因为原子粒度提供了最大限度的灵活性,可以支持无法预期的各种细节层次的用户需求。

粒度的理解:业务和维度

原则5: 在同一个事实表中不能有多种不同粒度的事实

原则6 :事实的单位要保持一致

原则7: 对事实的 null 值要处理

原则8 :使用退化维度提高事实表的易用性

3、多事务事实表

(1)不同业务过程的事实使用不同的事实字段进行存放(2)不同业务过程的事实使用同一个事实字段进行存放

不同的事实使用不同 的字段进行存放;如果不是当前业务过程的度量,则采取零值处理方式。

多事务事实表的选择

周期快照事实表

需要聚集与之相关的事务才能进行识别计算;或者聚集事务无法识别 ,快照事实表在确定的问隔内对实体的度量进行抽样,这样可以很容易地研究实体的度量值,而不需要聚集长期的事务历史。

特性:(1)事务事实表的粒度能以多种方式表达,但快照事实表的粒度通常以维度形式声明(2)事务事实表是稀疏的,但快照事实表是稠密的 (3)事务事实表中的事实是完全可加的,但快照模型将至少包含一个用来展示半可加性质的事实。

单维度的每天快照事实表和混合维度的每天快照事实表都可以从事务事实表进行汇总产出,这是周期快照事实表常见的一种产出模式。还有一种产出模式,即直接使用操作型系统的数据作为周期快照事实表的数据源进行加工,比如淘宝卖家星级、卖家 DSR 事实表等。

事务与快照成对设计

数据仓库维度建模时,对于事务事实表和快照事实表往往都是成对设计的 ,互相补充,以满足更 的下游统计分析需求,特别是在事务事 实表的基础上可以加工快照事实表,丰富了星形模型, 又降低了下游分析的成本。

累积快照事实表

对于类似于研究事件之间时间间隔的需求,采用累积快照事实表可以很好地解决

累积快照事实表解决的最重要的问题是统计不同业务过程之间的时间间隔,建议将每个过程的时间间隔作为事实放在事实表中

通常用于数据探查、统计分析、数据挖掘等。

三种事实表的比较(背诵)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IBM数据仓库建模方法论(IBM Data Warehouse Modeling Methodology)是IBM为构建高质量的数据仓库而制定的一套建模方法与指导原则。其目标是帮助组织实现数据驱动决策和分析,从而提高业务效率和竞争力。 该方法论主要包括以下几个方面: 1. 需求分析:在开始建模之前,首先要深入了解业务需求和数据源。通过与利益相关者合作,明确数据需求、目标与范围,以及数据的重要性和可用性。 2. 数据模型设计:根据需求分析结果,设计合适的数据模型来存储和组织数据。这包括确定实体、属性、关系和约束等概念,并选择合适的建模工具和技术来解决特定问题。 3. 数据抽取与装载:将源系统中的数据抽取到数据仓库中。这涉及到数据清洗、转换和加载等步骤,以确保数据的准确性和一致性。 4. 数据仓库更新:持续监控和更新数据仓库中的数据,包括定期的数据抽取和转换过程,以保持数据的实时性和准确性。 5. 数据仓库查询与分析:提供灵活的查询和分析功能,以支持决策和业务需求。这包括使用各种BI工具和技术来提取、分析和可视化数据。 6. 数据质量管理:确保数据仓库中的数据质量高且可信。通过建立数据验证和监控机制,及时发现和纠正数据质量问题。 7. 数据安全与隐私保护:采取必要的安全措施,保护数据仓库中的数据不受未经授权的访问和泄漏。 通过遵循IBM数据仓库建模方法论,组织可以更好地管理和利用数据,提高数据仓库的效率和价值。同时,该方法论还提供了一套通用的指导原则和最佳实践,适用于各种规模和复杂度的数据仓库项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值