数据聚合是什么意思(数仓建模——事实表干货教程)

Posted

篇首语:著论准过秦,作赋拟子虚。本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据聚合是什么意思(数仓建模——事实表干货教程)相关的知识,希望对你有一定的参考价值。

数据聚合是什么意思(数仓建模——事实表干货教程)

事实在字典里指事情的真实情形,在维度建模中,通常表示某个业务的度量,如商品的数量、金额等。本文作者针对维度建模事实表进行了分析,一起来看一下吧。

上周在一文中,给大家简单介绍了数仓建模的常见模型:ER模型和维度建模的一些基本知识,本周我们针对维度建模事实表进行更详细的讲解。

一、什么是事实

事实在字典里指事情的真实情形,在维度建模中,通常表示某个业务的度量。如订单中商品的数量、金额等。

1. 事实类型

此处的事实类型是指度量值的类型,而非事实表的类型。事实(度量值)共分为三类,分别是可加事实,半可加事实和不可加事实。

1)可加事实

可加事实是指可以按照与事实表相关的所有维度进行累加,事务型事实表中的事实,例如上篇文章讲述的订单事实表。

2)半可加事实

半可加事实是指只能按照与事实表相关的一部分维度进行累加,例如周期型快照事实表中的事实。以上述各仓库中各商品的库存每天快照事实表为例,这张表中的库存事实可以按照仓库或者商品维度进行累加,但是不能按照时间维度进行累加,因为将每天的库存累加起来是没有任何意义的。

3)不可加事实

不可加事实是指完全不具备可加性,例如比率型事实。不可加事实通常需要转化为可加事实,例如比率可转化为分子和分母。

二、什么是事实表

事实表是指存储有事实记录的表,如用户登录记录表、下单记录、优惠券领取记录表等,事实表作为数据仓库维度建模的核心,其紧紧围绕着业务过程来设计。一般包含与该业务过程有关的维度引用(维度表外键)以及该业务过程的度量(通常是可累加的数字类型字段)。

引用上篇文章我们讲过的下单业务过程为例,如图所示:订单明细表作为订单业务的事实表,订单明细表中含有买家、卖家、时间、地域、商品、物流等维度,订单价格作为订单过程的度量。

事实表有三种类型:分别是事务事实表、周期快照事实表和累积快照事实表,每种事实表都具有不同的特点和适用场景,我们依次介绍一下:

1. 事务型事实表

事务型事实表用来记录各业务过程,它保存的是各业务过程的原子操作事件,即最细粒度的操作事件。粒度是指事实表中一行数据所表达的业务细节程度。事务型事实表可用于分析与各业务过程相关的各项统计指标,由于其保存了最细粒度的记录,可以提供最大限度的灵活性,可以支持无法预期的各种细节层次的统计需求。

1)事务型事实表设计流程

设计事务事实表时一般可遵循以下四个步骤:

选择业务过程→声明粒度→确认维度→确认事实。

①选择业务过程

在业务系统中,挑选我们要分析的业务过程,业务过程可以概括为一个个不可拆分的行为事件,例如电商交易中的下单,取消订单,付款,退单等,都是业务过程。通常情况下,一个业务过程对应一张事务型事实表。

②声明粒度

业务过程确定后,需要为每个业务过程声明粒度。即精确定义每张事务型事实表的每行数据表示什么,应该尽可能选择最细粒度,以此来应各种细节程度的需求。

典型的粒度声明如下:

订单事实表中一行数据表示的是一个订单中的一个商品项。

③确定维度

确定维度具体是指,确定与每张事务型事实表相关的维度有哪些。确定维度时应尽量多地选择与业务过程相关的环境信息。因为维度的丰富程度就决定了维度模型能够支持的指标丰富程度。

④确定事实

此处的“事实”一词,指的是每个业务过程的度量值(通常是可累加的数字类型的值,例如:次数、个数、件数、金额等)。

经过上述四个步骤,事务型事实表就基本设计完成了。第一步选择业务过程可以确定有哪些事务型事实表,第二步可以确定每张事务型事实表的每行数据是什么,第三步可以确定每张事务型事实表的维度外键,第四步可以确定每张事务型事实表的度量值字段。

(事务事实表 示例)

2)事务型事实表不足之处

事务型事实表可以保存所有业务过程的最细粒度的操作事件,故理论上其可以支撑与各业务过程相关的各种统计粒度的需求。但对于某些特定类型的需求,其逻辑可能会比较复杂,或者效率会比较低下。例如:

1)存量型指标

对于商品库存,账户余额等指标,虚拟货币业务包含的业务过程主要包括获取货币和使用货币,两个业务过程各自对应一张事务型事实表,一张存储所有的获取货币的原子操作事件,另一张存储所有使用货币的原子操作事件。

假定现有一个需求,要求统计截至当日的各用户虚拟货币余额。由于获取货币和使用货币均会影响到余额,故需要对两张事务型事实表进行聚合,且需要区分两者对余额的影响(加或减),另外需要对两张表的全表数据聚合才能得到统计结果。可以看到,不论是从逻辑上还是效率上考虑,这都不是一个好的方案。

2)多事务关联统计

如现需要统计最近30天,用户下单到支付的时间间隔的平均值。统计思路应该是找到下单事务事实表和支付事务事实表,过滤出最近30天的记录,然后按照订单id对两张事实表进行关联,之后用支付时间减去下单时间,然后再求平均值。 逻辑上虽然并不复杂,但是其效率较低,因为下单事务事实表和支付事务事实表均为大表,大表join大表的操作应尽量避免。

在上述两种场景下事务型事实表的表现并不理想。下面要介绍的另外两种类型的事实表就是为了弥补事务型事实表的不足的。

2. 周期型快照事实表

周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,主要用于分析一些存量型(例如在线人数,账户余额,商品库存)或者状态型(空气温度,行驶速度)指标。

对于商品库存、账户余额这些存量型指标,业务系统中通常就会计算并保存最新结果,所以定期同步一份全量数据到数据仓库,构建周期型快照事实表,就能轻松应对此类统计需求,而无需再对事务型事实表中大量的历史记录进行聚合了。

对于空气温度、行驶速度这些状态型指标,由于它们的值往往是连续的,我们无法捕获其变动的原子事务操作,所以无法使用事务型事实表统计此类需求。而只能定期对其进行采样,构建周期快照事实表。

1)周期快照事实表设计流程

①确定粒度

周期型快照事实表的粒度可由采样周期和维度描述,故确定采样周期和维度后即可确定粒度。

采样周期通常选择每日。

维度可根据统计指标决定,例如指标为统计每个仓库中每种商品的库存,则可确定维度为仓库和商品。

确定完采样周期和维度后,即可确定该表粒度为每日-仓库-商品。

②确认事实

事实也可根据统计指标决定,例如指标为统计每个仓库中每种商品的库存,则事实为商品库存。

(周期快照事实表 示例)

3. 累积快照事实表

累计快照事实表是基于一个业务流程中的多个关键业务过程联合处理而构建的事实表,如交易流程中的下单、支付、发货、确认收货业务过程。

累积快照事实表通常具有多个日期字段,每个日期对应业务流程中的一个关键业务过程(里程碑)。

累积快照事实表主要用于分析业务过程(里程碑)之间的时间间隔等需求。例如前文提到的用户下单到支付的平均时间间隔,使用累积型快照事实表进行统计,就能避免两个事务事实表的关联操作,从而变得十分简单高效。

1)累积快照事实表设计流程

累积快照事实表的设计流程同事务型事实表类似,也可采用以下四个步骤,下面重点描述与事务型事实表的不同之处。

选择一个业务流程中需要关联分析的多个关键业务过程,多个业务过程对应一张累积型快照事实表。

②声明粒度

精确定义每行数据表示的是什么,尽量选择最小粒度。

③确认维度

选择与各业务过程相关的维度,需要注意的是,各个业务过程均需要一个日期维度。

④确认事实

选择各业务过程的度量值。

(累积型事务事实表 示例)

本文由 @菜鸟数据之旅 原创发布于人人都是产品经理,未经作者许可,禁止转载

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。

相关参考

模橡胶成型机(【干货分享】自上而下的轮胎成型机焊接结构三维建模方法研究)

...机的三维模型设计过程,在保证企业设计规范和方便设计数据检入PDM系统的要求下,提出了采用装配体“自上而下”和布局设计的方法进行成型机焊接结构的设计方法与流程,对提高成型机设计工作的效率和质量有一定的意义。...

水性复膜胶是危险品吗(干货满满丨我们常说的胶粘剂中的固含量究竟是什么意思?)

固体含量是一个专业的名词,在乳液聚合过程中常用的,例如在单体体系加30克理论固体含量,水70克,30%则理论固体含量,如果单体转化率不理论和实践的高,则固体含量也有不同,如乙酸乙烯酯,沸点低,可以采取乳液的一...

数据透视表字段名无效什么意思(数据透视表常见出错原因)

我们在使用数据透视表时偶尔会出现数据透视表出错的情况,那么是什么原因导致的呢?■1.创建数据透视表时被提示“字段名无效”。我们在创建数据透视表时被系统提示数据透视表字段名无效,这是因为我们的数据表源某列...

牙特殊拉链(干货收藏来了,建模大佬用zbrush制作拉链的全过程)

...(笔刷大小)来决定拉链的大小。(如果想更多了解游戏建模可以私信小编,还可以领取免费的教程哦)2.如何调整拉链的转折?当你刷好拉链之后,原来的模型会Msking掉,这个时候你可以直接用鼠标移动拉链。拉链穿插到原来...

牙特殊拉链(干货收藏来了,建模大佬用zbrush制作拉链的全过程)

...(笔刷大小)来决定拉链的大小。(如果想更多了解游戏建模可以私信小编,还可以领取免费的教程哦)2.如何调整拉链的转折?当你刷好拉链之后,原来的模型会Msking掉,这个时候你可以直接用鼠标移动拉链。拉链穿插到原来...

数控车床对刀视频(「UG编程干货」模具零件数控铣削加工 从建模到编程了解一下)

2.1分析零件通过图形分析可知:(1)零件涉及曲面、钻孔等造型方法。(2)零件可以通过建立草图、拉伸、修剪体、镜像、扫掠等常用命令进行造型(3)为了保证加工精度,所以在三轴数控铣床上分两次次装夹完成,采用四边...

建模的意义与价值(中金:宏观数据建模应用手册)

风险提示:模型基于历史数据构建,未来存在失效风险。我们在进行投资决策时,经常会使用到各种宏观数据。如何规避宏观数据建模时可能存在的错误、如何对宏观数据进行必要的清洗和处理、如何优化宏观数据的建模质量、...

数据透视表的含义(Excel数据透视表到底有什么作用?)

...使用!作为一名天天要跟Excel打交道的运营菌,个人认为数据透视表在目前来说称得上为Excel中最强大的功能。E01-.制作数据看板制作数据看板是对数据透视表掌握的综合考核,主要涉及到【切片器】【透视图】【图表应用】【统...

数据透视表的用途(数据透视表真的是Excel中最强大功能吗?)

...使用!作为一名天天要跟Excel打交道的运营菌,个人认为数据透视表在目前来说称得上为Excel中最强大的功能。E01-.制作数据看板制作数据看板是对数据透视表掌握的综合考核,主要涉及到【切片器】【透视图】【图表应用】【统...

开粗刀(UG编程刀路的主要类型和作用,纯干货)

...工参数。UG无论是二维还是曲面加工,都必须先进行实体建模,通过实体选择需要加工的实体面。而Mastercam二维加工不需实体建模,而曲面加工则需要实体建模。二维加工1:平面铣(planarmi11)用于粗加工零件平面和侧壁。2:手...