大数据开发工程师需要了解的【数仓中事实表的设计】

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 笔记

(1)如何正确看待事实表


1.png


(2)企业中事实表的设计原则


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

在事实表中应该尽量包含所有与业务过程相关的事实,即使存在冗余,但是因为事实通常为数字类型,带来的存储开销也不会很大。


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

比如在订单的下单这个业务过程的事实表设计中,不应该存在支付金额这个标识支付业务过程的事实。


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

比如订单的优惠率,应该分解为订单原价金额与订单优惠金额两个事实存储在事实表。


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

建议从最低级别的原子粒度开始,因为原子粒度最大限度的灵活性。


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

事实表中的所有事实需要与表定义的粒度保持一致,在同一个事实表中不能有多种不同粒度的事实。

2.png


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

对于同一个事实表中事实的单位,应该保持一致。比如原订单金额、订单优惠金额、订单运费金额这三个事实,应该采用一致的计量单位,统一为元或者分。


原则七:对事实的NULL值要处理

NULL值对常用数字类型字段的SQL过滤条件都不生效,建议用0补充。


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

通过增加冗余存储的方式减少计算开销,提高使用效率,大多数会采用退化维度的方式。


(3)事物事实表的设计流程


第一步:选择业务过程及确定事实表类型

分析整个业务生命周期,明确关键业务步骤,选择与需求有关的业务过程。


电商交易订单的流转过程:

3.png

第二步:声明粒度

精确定义事实表的每一行所表示的业务含义,粒度传递的是与事实表度量有关的细节层次。

应该尽量选择最细级别的原子粒度

4.png

第三步:确定维度

选择能描述清楚业务过程所处环境的维度信息。


5.png

第四步:确定事实

确定过程度量,将不可加事实分解为可加。

6.png


第五步:冗余维度


通常事实表中会冗余方便下游用户使用的常用维度。


(4)深入事物事实表的设计


单事务事实表设计案例

7.png

多事务事实表

多事务事实表,将不同的事实放到同一个事实表中,即同一个事实表包含不同的业务过程。


多事务事实表在设计时有两种方法进行事实的处理:


第一种:不同业务过程的事实使用不同的事实字段进行存放

比如交易事务事实表,可以把流程中的下单、支付、成功完结三个业务过程放进去。

8.png




第二种:不同的业务过程的事实使用同一个事实字段进行存放,但增加一个业务过程标签比如商品收藏事务事实表。

9.png


单事务事实表与多事务事实表的比较


1.业务过程

对于单事务事实表,一个业务过程建立一个事实表,只反映一个业务过程的事实;对于多事务事实表,在同一个事实表中反映多

个业务过程。多个业务过程是否放到同一个事实表中,首先需要分析不同业务过程之间的相似性和业务源系统。比如电商交易的

下单、支付和成功完结这三个业务过程是存在相似性的,都属于订单处理中的一环,并且都来自于交易系统,因此适合放到同一

个事务事实表中


2.粒度和维度

在考虑是采用单事务事实表还是多事务事实表时,另一个关键点就是粒度和维度,在确定好业务过程后,需要基于不同的业务过

程确定粒度和维度,当不同业务过程的粒度相同,同时拥有相似的维度时,此时就可以考虑采用多事务事实表。如果粒度不同

则必定是不同的事实表。比如交易中支付和发货有不同的粒度,则无法将发货业务过程放到交易事务事实表中。


3.事实

对于不同的业务过程,事实往往是不同的,单事务事实表在处理事实上比较方便和灵活,仅仅体现同一个业务过程的事实即可

而多事务事实表由于有多个业务过程,所以有更多的事实需要处理。如果单一业务过程的事实较多,同时不同业务过程的事实又

不相同,则可以考虑使用单事务事实表,处理更加清晰;若使用多事务事实表,则会导致事实表零值或空值字段较多


4.下游业务使用

单事务事实表对于下游用户而言更容易理解,关注哪个业务过程就使用相应的事务事实表;而多事务事实表包含多个业务过程

用户使用时往往较为困惑。


5.计算存储成本

针对多个业务过程设计事务事实表,是采用单事务事实表还是多事务事实表,对于散据仓库的计算存储成本也是参考点之一,当

业务过程数据来源于同一个业务系统,具有相同的粒度和维度,且维度较多而事实相对不多时,此时可以考虑使用多事务事实表

不仅其加工计算成本较低,同时在存储上也相对节省,是一种较优的处理方式

10.png

(5)怎么理解周期快照事实表


快照事实表的设计有些区别与事务事实表设计的性质。事务事实表的粒度能以多种方式表达,但快照事实表的粒度通常以维度形式声明;


事务事实表是稀疏的,但快照事实表是稠密的;

11.png12.png


单维度的每天快照事实表:

13.png


多维度的每天快照事实表:

在数据仓库维度建模时,对于事务事实表和快照事实表往往都是成对设计的,相互补充

以满足更多的下游统计分析需求。


(6)累计快照事实表的设计


设计过程

第一步:选择业务过程

比如:统计事件时间间隔的需求,买家付款与卖家发货的时间间隔,卖家发货与买家确认

收获的时间间隔。

14.png

第二步:确定粒度

对子订单的事件发生时间进行更新。

15.png

第三步:确定维度

四个业务过程对应的时间字段。

16.png

第四步:确定事实

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

17.png


第五步:退化维度

在物理实现中将各维度的常用属性退化到事实表中,以大大提高对事实表的过滤查询。


累计事实表的特点

18.png


(7)三种事实表的应用场景


19.png

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
3月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何开发ODPS Spark任务
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
22天前
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
50 1
|
1月前
|
分布式计算 大数据 Serverless
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
在2024云栖大会开源大数据专场上,阿里云宣布推出实时计算Flink产品的新一代向量化流计算引擎Flash,该引擎100%兼容Apache Flink标准,性能提升5-10倍,助力企业降本增效。此外,EMR Serverless Spark产品启动商业化,提供全托管Serverless服务,性能提升300%,并支持弹性伸缩与按量付费。七猫免费小说也分享了其在云上数据仓库治理的成功实践。其次 Flink Forward Asia 2024 将于11月在上海举行,欢迎报名参加。
184 1
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
|
25天前
|
数据采集 分布式计算 OLAP
最佳实践:AnalyticDB在企业级大数据分析中的应用案例
【10月更文挑战第22天】在数字化转型的大潮中,企业对数据的依赖程度越来越高。如何高效地处理和分析海量数据,从中提取有价值的洞察,成为企业竞争力的关键。作为阿里云推出的一款实时OLAP数据库服务,AnalyticDB(ADB)凭借其强大的数据处理能力和亚秒级的查询响应时间,已经在多个行业和业务场景中得到了广泛应用。本文将从个人的角度出发,分享多个成功案例,展示AnalyticDB如何助力企业在广告投放效果分析、用户行为追踪、财务报表生成等领域实现高效的数据处理与洞察发现。
52 0
|
2月前
|
SQL 分布式计算 大数据
代码编码原则和规范大数据开发
此文档详细规定了SQL代码的编写规范,包括代码的清晰度,执行效率,以及注释的必要性。它强调所有SQL关键字需统一使用大写或小写,并禁止使用select *操作。此外,还规定了代码头部的信息模板,字段排列方式,INSERT, SELECT子句的格式,运算符的使用,CASE语句编写规则,查询嵌套规范,表别名定义,以及SQL注释的添加方法。这些规则有助于提升代码的可读性和可维护性。
46 0
|
2月前
|
SQL 分布式计算 大数据
大数据开发SQL代码编码原则和规范
这段SQL编码原则强调代码的功能完整性、清晰度、执行效率及可读性,通过统一关键词大小写、缩进量以及禁止使用模糊操作如select *等手段提升代码质量。此外,SQL编码规范还详细规定了代码头部信息、字段与子句排列、运算符前后间隔、CASE语句编写、查询嵌套、表别名定义以及SQL注释的具体要求,确保代码的一致性和维护性。
91 0
|
3月前
|
消息中间件 存储 大数据
大数据-数据仓库-实时数仓架构分析
大数据-数据仓库-实时数仓架构分析
141 1
|
3月前
|
存储 运维 Cloud Native
"Flink+Paimon:阿里云大数据云原生运维数仓的创新实践,引领实时数据处理新纪元"
【8月更文挑战第2天】Flink+Paimon在阿里云大数据云原生运维数仓的实践
278 3
|
4月前
|
存储 分布式计算 MaxCompute
构建NLP 开发问题之如何支持其他存储介质(如 HDFS、ODPS Volumn)在 transformers 框架中
构建NLP 开发问题之如何支持其他存储介质(如 HDFS、ODPS Volumn)在 transformers 框架中
|
3月前
|
数据可视化
Echarts数据可视化开发| 智慧数据平台
Echarts数据可视化开发| 智慧数据平台
下一篇
无影云桌面