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