目录
0.引言
前面的四篇文章,为大家讲解了许多理论,没有见到落地的东西。在本章我将以一个简单的指标需求demo讲解从需求拆解为各层表设计的过程。
1.demo
1.1demo简介
用户是某制造业生产管理部门高管,希望每天9:00可以看到昨日一号车间生产总量以及总出勤时长。
1.2 设计过程
1.2.1设计ADS层表结构
基于demo,我们得到了生成ADS层表的4个关键要素,也就是分析维度,统计周期,业务限定,和计算公式。
分析维度:日期(昨日),部门(一号车间)
统计周期:每日刷新,9:00前需刷新完毕
业务限定:昨日/一号车间
计算公式:生产总量——sum(产量),总出勤时长——sum(出勤时长)
有了这4个要素,就可以设计出ADS表的表结构:
——彩色部分为实际表结构,无底色部分为汇总说明,文章后面内容也是如此
1.2.2设计DWS层表结构
基于上一小节设计的ADS层表结构,我们可以看到该汇总表根据度量分解由两个原子指标构成。因两指标之分析维度并不全量匹配,故需拆为两表。
1.昨日一号车间各产品生产总量
分析维度:日期(昨日),部门(一号车间),产品品类(各产品)
统计周期:每日刷新,9:00前需刷新完毕
业务限定:昨日/一号车间
计算公式:生产总量——sum(产量)
2.昨日一号车间总出勤时长
分析维度:日期(昨日),部门(一号车间),人员(打卡)
统计周期:每日刷新,9:00前需刷新完毕
业务限定:昨日/一号车间
计算公式:总出勤时长——sum(出勤时长)
如果多个原子指标的分析维度、统计周期、业务限定都是可以复用的,而且在分析场景中是基于业务高内聚的,我们可以把它们放在一个DWS层表中。
1.2.4设计DWD层表结构
基于DWS层表结构以及统计周期/业务限定/原子指标,可以设计出DWD层表结构,有:
1.车间装箱明细表
P.S.代理键可理解为主键
2.车间员工打卡明细表
【重要】实际场景事实表的设计方式要基于业务需求和数据来源
1.2.5设计维度表结构
综上,在该业务需求中有4种维度:日期/部门/人员/产品品类。
此处以日期举例有:
日期:
维度表的设计应考虑当下分析和未来的分析需求,具体业务问题具体设计。
1.2.6设计ODS层表结构
基于DWD表&数据源支持情况设计ODS层表结构:
1.车间装箱明细表
2.车间员工打卡表
【重要】实际场景事实表的设计方式要基于DWD层表结构和数据来源。
2.最大公约数
细心的阅读者可能已经发现,衍生指标一拥有日期/部门/产品品类,三个维度;衍生指标二拥有日期/部门/人员,三个维度;而组装出的汇总表只有日期/部门两个维度。
与1.2.2最后一句的含义相同,我抛出的就是“最大公约数”原则,多个指标组装,组装出的汇总表拥有的维度组合单元必须是所有指标共有的。
以上就是本章内容,如何设计表明、字段名、字段类型、表更新逻辑、DAG图在这里不再展开,相信大家看到图中示意,如何落地表+设计ETL任务已经一目了然。
看完本章大家如果只能记住一个词我希望是“最大公约数”。
下一章讲一下维度建模常用的技巧,敬请期待。
【版权所有,翻版必究。】