阿里数仓建模方法
2023-05-05 10:10:19 3 举报
AI智能生成
阿里数据建模方法【维度、事实原则等】
作者其他创作
大纲/内容
阿里巴巴大数据
维度建模
一、维度设计基础
维度设计基本方法
1、选择维度或新建维度
2、确定主维表<br>
3、确定相关维度表
4、确定维度属性<br>
5、确定相关维度表
维度属性要求
1、维度属性尽可能的丰富
2、尽可能包含有意义的一些属性文字性描述<br>
id用于表关联
名称用于报表标签
3、区分事实属性和维度属性
连续一般是度量
离散一般是维度
价格也可以有价格区间
4、尽量沉淀出一些通用维度<br>
提高使用方便性、减少复杂度<br>
统一口径<br>
将各逻辑组合组合成一个公用维度属性表示,提高查询和管理难度
维度层次结构
维度属性包含层次
商品类目层次(3级)
不同层次钻取
时间(行业-》类目-》gmv度量)<br>
类目、行业、品牌可抽象成为维度
规范化和反规范化
规范化
维度属性合并=非规范化
删除冗余OLTP<br>
维度退化
一致性维度和交叉探查
一致性维度和事实来构建总线架构<br>
不同数据域-合并观察分析(比如日志X交易数据域)<br>
现在将不同数据域的商品的事实合并在 起进行数据探 ,<br>如计算转化率等,称为交叉探查。<br>
交叉探查---比如日志PV UV对应GMV的转化
三种表现形式
共享维度表(都有的公共维度探查没问题)
一致性上卷(维度有子集)
交叉属性(不同维度有共同属性也可以)<br>
二、维度高级主题(整合与拆分)
维度整合
问题<br>
1、业务系统命名规则、方式不一样<br>
2、且为了业务性能设计拆分比较厉害<br>且有非关系型数据库
方法
1、命名规范统一(表名、字段名、属性类型)<br>
2、相同或相似类型字段统一
3、公共代码的统一
4、业务含义相同表统一
采用主从方式<br>
两个表共有字段放主表<br>丛书信息放各自的从表
直接合并<br>
共有信息和个性信息都放在同一个表中。<br>如果表字段的重合度较低,则会出现大量空值<br>
垂直整合
不同来源-包含相同的数据集
丰富维度属性
淘宝会员表(会员基础信息、会员信息、扩展信息表)<br>
水平整合
不同业务系统、产品的整合(如各平台会员整合)
确定是否交叉,需要去重,还要考虑冲突
1、子集作为自然键<br>2、将来源表各子集的自然键加工成一个字段作为超自然键<br>
实现时将系统来源字段作为分区字段<br>
水平拆分
不同系统商品分类,可能相同可能不同(航旅商品和淘系)<br>
如何拆分?
1、不同分类实例化,主维度保存公共维度属性(子维度)<br>
2、维护单一维度,保存所有属性
原则
扩展性
易用性<br>
如牺牲空间换性能
效能
可理解性高、访问复杂度低<br>
方便查询和分析
空间换性能
依据<br>
1看维度表看差异性是否很大
2看业务的关联程度<br>
不同系统商品分类,可能相同可能不同(航旅商品和淘系)<br>
垂直拆分
维度变化
1、缓慢变化维
2、快照维度
3、极限存储
4、微型维度
5、特殊维度
1、递归层次<br>
2、层次结构扁平化
3、维度桥接
事实表设计
事实表基础<br>
事实表基础8原则<br>
原则1:尽可能包含所有与业务过程有关的事实<br>
原则2:只选择与业务过程相关的事实<br>
原则3:分解不可加性事实为可加的组件<br>
如 订单率优惠金额 分为订单和优惠金额两个事实表<br>
原则4:在选择维度和事实之前必须先声明粒度
最小粒度-最灵活
原则5:同一事实表中可能有不同粒度的事实
原则6:事实的单位要保持一致
同一 个事实表中事实的单位,应保持一致<br>
订单金额、优惠金额<br>
原则7: 对事实的 null 值要处理
建议0值填充
对各种条件(<> =)无效
原则8:使用退化维度提高易用性
在事实表中存储各种类型的常用维度信息。这样设计的目的<br>主要是为了减少下游用户使用时关联多个表的操作<br>
空间换时间
事实表可加性
可加性事实表
可按任意维度汇总
半可加性事实表
只能按特定维度汇总<br>
不可加性事实表
比率型事实<br>
维度可存储到事实表中<br>
维度退化
事实表类型
事务事实表
最细颗粒、原子数据(原子表)<br>
用来描述业务过程,跟踪空间<br>或时间上某点的度量事件,<br>
粒度每一行所表示的业务含义<br>
周期快照事实表
有规律的、可预见的时间间隔记录事实<br>
<div><span style="mso-spacerun:'yes';font-size:9.80568pt;font-family:HiddenHorzOCR;color:rgb(87,87,87);">如每</span><span style="mso-spacerun:'yes';font-size:9.85193pt;font-family:HiddenHorzOCR;color:rgb(121,121,121);">天、每月、每年等</span></div>
累计快照事实表
用来表述开始和结束之间 关键步骤事件
过程随着生命周期不断变化时,记<br>录也会随着过程的变化而被修改。
事务事实表
设计4步法
1、选择业务过程
如:创建订单、买家付款、卖家发货、<br>买家确认收货
多业务过程-注意时间间隔与关系-》累计快照事实表
2、声明粒度<br>
应该尽量选择最细级别的事实原子粒度,
每一行所表示的业务含义
3、确定维度
选择可以描述清楚业务过程环境的维度信息<br>
4、确定事实
事实表里粒度一致<br>
不可加事实要拆分成可加的组件<br>
5、冗余维度(非kimball)
单事务事实表
多事务事实表
1、不同业务过程使用同一事实字段进行存放<br>
收藏事实表(无事实事实表)
用户、商品、收藏/删除,为关联表
简单、仅做统计
不同业务过程使用不同字段存放
如淘宝交易事实表:下单、支付、完结<br>
三个过程粒度相同(子订单粒度)<br>
如何使用?
单事务事实表
如果事实表粒度、维度不一样、相似性不一样
单一业务过程事实多、复杂
多事实事实表
相似、粒度、维度类似
简单可整合
子主题
周期快照事实表
概念
例如每天或者 每月的销售额,或每月的账户余额
<div><span style="mso-spacerun:'yes';font-size:9.88253pt;font-family:HiddenHorzOCR;color:rgb(117,117,117);">快照事实表在确定的问<br></span></div><div><span style="mso-spacerun:'yes';font-size:9.87868pt;font-family:HiddenHorzOCR;color:rgb(102,102,102);">隔内对实体的度量进行抽样</span></div>
快照事实表粒度通常以维度形式声<br>明
特性
半可加(特定维度汇聚)
稠密性
无论有业务过程发生,都记录一行<br>
如卖家至今下单金额<br>
累计快照事实表
概念
作用
解决的最重要的问题<br>是统计不同业务过程之间的时间间隔<br>
用于具有较明确起止时间的短生命周期的实体
聚集型事实表
聚集的基本原则<br>
<div><span style="mso-spacerun:'yes';font-size:11.7085pt;font-family:HiddenHorzOCR;color:rgb(72,72,72);">聚集的基本步骤</span></div><br>
1、确定聚集维度。<br>
2、确定一致性上钻。
按天汇总、按商品<br>
上卷维度
3、确定聚集事实
公共汇总层<br>
原则
数据公共性<br>
不跨数据域<br>
交易跨到商品域<br>
区分统计周期
如_1d _td(到当天) _nd(最近n天)<br>
概念
集成、面向主题、非易失
分层方式
按主题
ODS(原始数据层)<br>
DWD(数据明晰层)
真正建模
选择业务过程
确定维度
确定事实
声明粒度
数据清洗(去空、脏、范围)<br>
维度退化脱敏<br>
DWS(汇聚层)
按天轻度汇总
DWT(主题层)
累计行为汇聚
如从注册到当天的下单<br>
ADS(引用层)
提供报表
为什么要分层
解耦、每一层只处理独立简单任务<br>
减少重复开发、复用
原始数据备份
命名
方式1
日志ods_xx表名_(log)
dwd_dim/fact_xx表<br>
dws_xx表名
dwt_xx表名<br>
ads_xx表名
理论-范式
范式优点
降低数据冗余
一次修改可以修改多个表
缺点
需要join
三范式
子主题<br>
元数据
概念
描述其他数据的数据
数据定义 数据约束数据关系<br>
0 条评论
下一页