「这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战」。
结合生产进行总结。
一 数仓分层
1.数据引入层(ODS,Operational Data Store,又称数据基础层)
将原始数据几乎无处理地存放在数据仓库系统中,结构上与源系统基本保持一致,是数据仓库的数据准备区。
1 | 复制代码1)埋点数据 |
2.数据公共层(CDM,Common Dimenions Model)
存放明细事实数据、维表数据及公共指标汇总数据。
其中,明细事实数据、维表数据一般根据ODS层数据加工生成。公共指标汇总数据一般根据维表数据和明细事实数据加工生成。
CDM层又细分为维度层(DIM)、明细数据层(DWD)和汇总数据层(DWS),采用维度模型方法作为理论基础, 可以定义维度模型主键与事实模型中外键关系,减少数据冗余,也提高明细数据表的易用性。
在汇总数据层同样可以关联复用统计粒度中的维度,采取更多的宽表化手段构建公共指标数据层,提升公共指标的复用性,减少重复加工。
1 | vbnet复制代码1)维度层(DIM,Dimension) |
3.数据应用层(ADS,Application Data Store)
存放数据产品个性化的统计指标数据,根据CDM层与ODS层加工生成。
1 | makefile复制代码1)BI指标: 基础指标 + 自定义指标 + 漏斗模型 + 月报 |
二 命名规范
1.ods: 平台名/库名 或 事件名/表名
1 | ini复制代码 例: 埋点 [xxx]_[xxxx] mysql [xxx]_[xxxx] |
2.dim: 维度类型
1 | ini复制代码 例: [dim]_[xxxx] |
3.dwd: dwd_平台名/库名_事件名/表名_..
1 | ini复制代码 例: dwd_[x]_[xxxx] |
4.dws: dws_平台名_主题名
1 | ini复制代码 例: dws_[x]_[xxxx] |
5.ads: ads_平台名_应用名_指标名/模型名 ,平台拆开
1 | ini复制代码 例: bi应用 ads_[x]_[bi]_[xxx]_[xxxx] |
三 分层意义
1.清晰数据结构
每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解;
2.数据血缘追踪
最终计算好呈现给业务的数据来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围;
3.减少重复开发
规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算;
4.把复杂问题简单化
将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解,而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。屏蔽原始数据的异常,屏蔽业务的影响,不必改一次业务就需要重新接入数据。
本文转载自: 掘金