数据仓库主题九-(事务事实表)

11 篇文章 13 订阅
10 篇文章 28 订阅

事务事实表

对于单事务事实表,一个业务过程建立一个事实表,只反映一个业务过程的事实 对于多事务事实表,在同一个事实表中反映多个业务过程。多个业务过程是否放到同一个事实表中。
订单作为交易行为的核心载体,直接反应了交易的状况。订单的流转回产生很多业务过程,而下单、支付和成功完结三个业务过程是整个订单的关键节点。。获取这三个业务过程的笔数、金额以及转化率是日常
数据统计分析的重点,事务事实表设计可以很好地满足这个需求。

一、单事务事实表
1、顾名思义,即针对每个业务过程设计 个事实表。这样设计的优点不言而喻,可以方便地对每个业务过程进行独立的分析。例如再交易流程中把下单和支付分别设计到不同事实表中。选定业务过程之后,将对每个业务过程确定粒度、维度和事实。
分别设计的表结果如下
以下单事实表数据实例
在这里插入图片描述
交易订单支付事务事实表数据实例如下
在这里插入图片描述

二、多事务事实表

多事务事实表,将不同事实放到同一个事实表中,即同一个事实表包含不同的业务过程。多事务事实表在设计时有两种方法进行事实的处理:1、不同 务过程的事实使用不同的事实字段进行存放:2、不同业务过程的事实使用同一个事实字段进行存放,但增加个业务过程标签。(下面有不同例子做了区分)
此处也用某宝的交易事实表为例子。取将不同业务过程的事实使用不同事实字段进行存放的设计模式。淘宝交易事务事实表 中同时包含了下单、支付和成功完结 个业务过程,这三个业务过程拥有相同的粒度,都是子订单粒度,也比较适合放到同一个事实表中。选择业务过程时没有把发货也加到此事务事实表中,原因是发货的粒度比子订单更细,属于不同粒度上的业务过程,因此没有放到同一个事实表中。
确定好粒度后, 下一步是确定维度和事实,对不同业务过程和粒度,维度并不是完全一致。但常用的维度可能一致。因此在维度层面可以保证这三个业务过程放到同一个事务事实表中。这里面馆维度中比较常见的,如包括买家、卖家、商品、类目、店铺、收发货地区等,无论在哪一个业务过程中,都需要按照这些维度进行统计分析。
某宝的交易事务事实表中包含下单度量、支付度量和成功完结度量信息,分别使用一个字段进行保存,如果不是但钱业务事实,则可以采取零值处理方式。
个事实表中包含了多个业务过程,为了对每个业务过程进行区分,采用每个业务打一个标签,标记当天是否是这个业务过程,比如针对下单,则打一个是否当天下单的标签;针对支付,打一个是否当天支付的标 针对成功完结,打一个是否当天成功完结的标签 ,标签之间互不相干。

同样以交易订单为例子,order在2016-01-01 下单并且在当天完成支付 order2和order3在2016-01-01 下单并且在 2016-01-02 完成支付,在2016-01-04成功完结。其具体具体设计为
在这里插入图片描述
具体多事务事实表数据实例为:
在这里插入图片描述
而对于收藏商品的表设计中,我们可以用一个字段来区分是收藏商品和删除商品这两个不同的业务过程,具体的业务实例为:
在这里插入图片描述
多事务事实表的设计方式选择:
当业务过程度量比较相似,差异不大时,可以采用第二种设计方式,使用同 个字段来表示 数据(问题同周期中出现多条记录)
当业务过程度量值差异较大,可以采用择第 事务事实表的设计方式,(问题度量字段零值较多)

三、单事务和多事务事实表的对比

前面介绍了单事务事实表和多事务事实表的设计过程,在不同应用场景中多有不同应用。但具体哪 种设计方式更优,我们接下来进行分析。

1、业务过程分析
多业务事实表和单业务事实表选择,首先需要分析不同业务过程之间的相似性和业务源系统。比如某宝的宝交易的下单、支付和成功完结这三个业务过程是存在相似性的,都属于订单处理中的 环,并且都来
自于交易系统 ,因此适合放到同一个事务事实表。
2、粒度和维度分析
确定好业务过程之后,分析器不同业务过程的粒度和维度,当其有相同的粒度和较多的通用维度时候可以设计为多业务事实表,反之。例如交易中支付和发货有不同的粒度,则无法将发货业务过程放到淘宝
交易事务事实表中。
3、事实分析
如果单务过程的事实较多,同时不同业务过程的事实又不相同,则可以考虑使用单事务事实表,处理更加清晰 若使用多事务事实表, 会导致事实表零值或空值字段较多。
4、下游使用分析
单事务事实表对于下游用户而言更容易理解 关注哪个 务过程就使用相应的事务事实表;而多事务事实表包含多个 务过程,用户使用时往往较为困惑。有一定学习成本。
5计算成本等。
当业务过程数据来源于同 个业务系统,具有相同的粒度和维度,且维度较多而事实相对不多时,此时可以考虑使用多事务事实表,不仅其加工计算成本较低,同时在存储上也相对节省。

四、父子事实的处理

下单过程中经常出现父子订单的问题。而在设计表中我们一般选用最细粒度,以增加分析灵活性。
下单和支付都是在父订单粒度上完成的,比如拍下时的订单总额、支付总额、支付邮费,淘宝交易事务事实表在粒度选择上,按照粒度最细原则,确定为子订单,因此需要将下单总额或者支付总额分摊到每个子订单上,当然只有一个子订单时是不需要进行分摊的。

五、事实表的设计准则

1、事实完整性
事实表包含与其描述的过程有关的所有事实,即尽可能多地获取所有的度量。在淘宝交易事务事实表中,比如支付业务过程,在子订单粒度上的支付金额、支付邮费、支付红包、支付积分、支付折扣都有所包,覆盖全面。
2、事实一致性
在确定事务事实表的事实时,明确存储每一个事实以确保度量一致性。以交易事务事实表为例 ,在下单业务过程中,有下单商品数量和商品价格两个事实,但在事实表中计算了 下单金额和下单有效金它们可以通过商品数量乘以商品价格进行计算。
3、事实可加性
比如分摊 比例、润率等,虽然它们也是下游分析的关键点,但往往在事务事实表中 关注更多的是可加性事实,下游用户在聚合统计时更加方便。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
基于⼤数据的数据仓库-数据仓库建模基本理论 (内容整理⾃⽹络学习视频) ⼀、数仓建模的⽬标 访问性能:能够快速查询所需的数据,减少数据I/O。 数据成本:减少不必要的数据冗余,实现计算结果数据复⽤,降低⼤数据系统中的存储成本和计算成本。 使⽤效率:改善⽤户应⽤体验,提⾼使⽤数据的效率。 数据质量:改善数据统计⼝径的不⼀致性,减少数据计算错误的可能性,提供⾼质量的、⼀致的数据访问平台。 所以,⼤数据的数仓建模需要通过建模的⽅法更好的组织、存储数据,以便在性能、成本、效率和数据质量之间找到最佳平衡点。 ⼆、关系模式范式 关系型数据库设计时,遵照⼀定的规范要求,⽬的在于降低数据的冗余性和数据的⼀致性,⽬前业界范式有: 第⼀范式(1NF) 第⼆范式(2NF) 第三范式(3NF) 巴斯-科德范式(BCNF) 第四范式(4NF) 第五范式(5NF) 第⼀范式(1NF): 域都是原⼦性的,即数据库表的每⼀列都是不可分割的原⼦数据项。 例如下⾯这张表: ID ID 商品 商品 商家ID 商家ID ⽤户ID ⽤户ID 1 4件⽑⾐ B0001 U00001 "商品"字段就不是原⼦性的,可以分割成"4件"和"⽑⾐"。 第⼆范式(2NF): 在1NF的基础上,实体的属性完全依赖于主关键字,不能存在仅依赖主关键字⼀部分的属性,也就是不存在局部依赖。 例如下⾯这张表: 学⽣ID 学⽣ID 所属系 所属系 系主任 系主任 所修课程 所修课程 分数 分数 S001 物理系 张三 C001 90 S001 物理系 张三 C002 100 主键ID为"学⽣ID,所修课程",但是字段"所属系"只依赖于"学⽣ID",不符合2NF。 第三范式(3NF): 在2NF的基础上,任何⾮主属性不依赖于其它⾮主属性,也就是不存在传递依赖。 例如下⾯这张表: 订单ID 订单ID 商品ID 商品ID 商品颜⾊ 商品颜⾊ 商家ID 商家ID ⽤户ID ⽤户ID O00001 G0001 ⽩⾊ B0001 U00001 主键为"订单ID",但是字段"商品颜⾊"依赖于"商品ID",不符合3NF。 三、四种建模⽅法 1、ER实体模型 在信息系统中,将事务抽象为"实体"(Entity)、"属性"(Property)、"关系"(Relationship)来表⽰数据关联和事物描述,这种 对数据的抽象建模通常被称为ER实体关系模型。 实体:通常为参与到过程中的主体,客观存在的,⽐如商品、仓库、货位、汽车,此实体⾮数据库表的实体表。 属性:对主体的描述、修饰即为属性,⽐如商品的属性有商品名称、颜⾊、尺⼨、重量、产地等。 关系:现实的物理事件是依附于实体的,⽐如商品⼊库事件,依附实体商品、货位,就会有"库存"的属性产⽣;⽤户购买商品,依附实体 ⽤户、商品,就会有"购买数量"、"⾦额"的属性产品。 实体之间建⽴关系时,存在对照关系: 1:1:即1对1的关系 1:n:即1对多的关系 n:m:即多对多的关系 在⽇常建模中,"实体"⽤矩形表⽰,"关系"⽤菱形,"属性"⽤椭圆形。ER实体关系模型也称为E-R关系图。 应⽤场景: 1、ER模型是数据库设计的理论基础,当前⼏乎所有的OLTP系统设计都采⽤ER模型建模的⽅式。 2、Bill Inom提出的数仓理论,推荐采⽤ER关系模型进⾏建模。 3、BI架构提出分层架构,数仓底层ods、dwd也多采⽤ER关系模型进⾏设计。 2、维度建模 维度建模源⾃数据集市,主要⾯向分析场景。Ralph Kimball推崇数据集市的集合为数据仓库,同时也提出了对数据集市的维度建模,将数 据仓库中的表划分为事实表、维度表两种类型。 事实表: 在ER模型中抽象出了有实体、关系、属性三种类别,在现实世界中,每⼀个操作型事件,基本都是发⽣在实体之间的,伴随着这种操作事 件的发⽣,会产⽣可度量的值,⽽这个过程就产⽣了⼀个事实表,存储了每⼀个可度量的事件。 维度表: 维度,顾名思义,看待事物的⾓度。⽐如从颜⾊、尺⼨的⾓度来⽐较⼿机的外观,从cpu、内存等⾓度⽐较⼿机性能。 维度表⼀般为单⼀主键,在ER模型中,实体为客观存在的事务,会带有⾃⼰的描述性属性,属性⼀般为⽂本性、描述性的,这些描述被称 为维度。 ⽐如商品,单⼀主键:商品ID,属性包括产地、颜⾊、材质、尺⼨、单价等,但并⾮属性⼀定是⽂本,⽐如单价、尺⼨,均为数值型描述性 的,⽇常主要的维度抽象包括:时间维度表、地理区域维度表等。 维度建模通常⼜分为星型模型和雪花模型。 星型模型: 雪花模型: 星型模型和雪花模型的主要区别在于对维度表的拆分,对于雪花模型,维度表的设计更加规范,⼀般符合3NF;⽽星型模型,⼀般采⽤降维 的操作,利⽤冗余来避免模型过于复杂,提⾼易⽤性和分析效率。 雪花、星型模型对⽐: 1、冗余:雪花模型符合业务逻辑设计,采⽤

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值