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