数仓建设学习路线(二)模型建设(2)
写在最前面
本节内容主要讲解模型的具体设计过程,也是我们平常数仓工作中的重中之重。更多精彩课程关注B站语兴呀,或关注gzh:语数,获取全部课件资料。
模型设计基本原则
维度模型设计大图
模型建设过程图
从总线矩阵开始
总线矩阵指以一致性维度为列,以业务过程为行,构建业务的数据矩阵,通过标记表示该维度与业务过程的相关性
模型建设考量5要素(重点)
主题域
对当前业务场景或业务sop进行拆分完成对应主题建设
事实表设计
围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量。
维度
对当前场景描述及补充
颗粒度
主题域下场景用户再进行细致拆分(例如用户可拆分为买家或卖家),颗粒度必须拆分为不可拆分的状态(例如用户拆分为买家,买家不可拆分)
度量值
对场景下数值类型的数据记录
模型数据域
概念
指面向业务分析,将业务过程或者维度进行抽象的集合。其中业务过程指企业活动中的事件,例如下单、退款、加购等,维度即度量的环境,例如下单事件中的买家。
跨数据域
背景:例如DWS、ADS出现跨数据域(例如该模型既用于风控又用于用户画像)情况,需要根据跨的数据域再重新定数据/主题域
事实表设计
概念
围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量。
事实表类型
事务性事实表(更多应用于DWD层)
对于单事务事实表,一个业务过程建立一个事实表,只反映一个业务过程的事实 对于多事务事实表,在同一个事实表中反映多个业务过程
累计快照事实表(更多应用于DWD层)
累计快照事实表 对于类似于研究事件之间时间间隔的需求,采用累计快照事实表可以很好地解决,如在统计买家下单到支付的时长、买家支付到卖家发货的时长等
周期快照事实表(更多应用于DWS层)
在确定的时间间隔内对实体的度量进行抽样,用于研究一段时间内实体的度量值(例如近30天pv、uv)
三者对比
事实表设计过程
- 识别业务过程
- 选择事实表类型
- 声明颗粒度及维度
- 补充主题域下度量值->维度退化
数据模型规范
表命名(采用阿里one-data设计)
ODS层(接入层)
全量:ods__{业务数据库名}_{业务数据表名}
增量:ods__{业务数据库名}_{业务数据表名}_delta
DWD层(明细层)
dwd_{事业部名(适用于大厂多事业部情况)}{数据域}{二级数据域}_{业务过程(不清楚或没有写detail)}_df/di(df为全量数据,di为增量数据)
全量数据(对源数据全部覆盖)
增量数据(对源数据进行分区式覆盖,例如昨天存储1000条订单数据,今天存储100条订单数据)
DWS层(汇总层)
dws_{事业部名(适用于大厂多事业部情况)}{数据域}{二级数据域}{颗粒度}(例如买家/卖家){业务过程}_{周期粒度}(例如近30天写30d、90天写3m)
ADS层(应用层)
ads_{应用类别}(例如风控叫risk){应用主题/应用场景}{颗粒度}(例如买家/卖家){业务过程}{调度周期}(例如1天调度一次写1d)
dim表(维度表)
dim_{事业部名(适用于大厂多事业部情况)}__{维度定义}(例如日期写date)
其他
tmp表(临时表)
tmp_{表名}_{临时表编号}
view(视图)
{表名}_view
字段命名(采用阿里one-data设计)
-
是否xxxxx用户,类型字段命名规范
is_{内容} -
枚举值类型字段命名规范
xxxx_type -
时间戳类型字段命名规范
xxx_date,xxx_time
周期指标命名
{内容}_{时间描述}(如最近一次last1,最近两次last2,历史his,最近第二次last2nd)_date、最近180天 6m
百分比命名
{内容}_rate
数值类型(整型)命名
{内容}cnt{周期}(周期看情况加)
数值类型(小数)金额命名
{内容}amt{周期}(周期看情况加)
两个时间段之间统计命名
xxx(时间段1内行为)_xxx(时间段2内操作)_dur
数据模型标注规范
-
owner
-
表中文名+使用说明
-
每个开发字段中文名(中文名需要包含该字段内容,例如是否为xxxx用户,需要写出包含内容(Y/N))
-
每个模型的颗粒度
-
每个模型的主键(联合主键)
-
数据模型发展周期
数据模型发展周期
额外补充
最后
欢迎各位同学评论区交流!
也可以私信联系我进入学习交流群!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!