数仓建表规范
数仓建表规范
基本设计思路
ODS 数据原始层
概念: ODS层是从业务系统过渡到数据仓库核心层的操作数据的存储层,ODS层的数据结构与业务系统基本保持一致,同时不做长时间的数据存储。
说明:最原始的数据,存储格式txt。
DWD 数据明细层
概念: DWD层是维度和事实属性、度量信息融合所生成的明细宽表层,其设计目的是为后续的DWS层提供基础,也可以在DWS层无法支撑需求时直接为ADS层提供数据。DWD层作为数据模型架构的核心明细层,一般要考虑扩展性和兼容性,其核心逻辑的变动要对下游保持尽可能的透明
说明: 存储经过标准规范化处理(即数据清洗)后的运营数据
DWS 数据汇总层
概念:DWS层面向分析主题建模。DWS层的设计目的是为ADS层提供足够的灵活性和扩展性的基础。
说明:数据服务主题层或者宽表层,按数据、业务专题进行划分,支持OLAP分析、数据分发等,其信息主要来源于DWD 或TMP层汇总数据。实例:新激活用户表、日活表、历史激活用户表
ADS 数据服务层
概念:ADS层主要包括对数据结果的加工整合,以满足数据应用的最终使用需要
说明:应用数据层, 面向具体应用的表,要创建在这层,可导入hbase或mysql等使用。实例:按季、月、周、天、小时等粒度计算汇总的结果存入mysql、hbase的报表
DIM 维表
概念:维度数据层,主要包含一些业务维度数据。实例:地区表,渠道表,行为表。
说明:
命名:
TEST 测试表
说明: 测试用的表。
数据模型开发规范
1.数据要干净、有效
要保证进入数据模型的数据是经过清洗和规范的。
2.模型可扩展
核心模型要尽可能保持稳定,经常变化的业务可以通过扩展模型进行分离。
3.禁止逆向调用
禁止逆向调用,例如不能出现ODS层调用CDM层和ADS层的数据。
4.数据可回滚
数据模型多次重跑的结果数据必须保持一致。
5.成本控制
在构建数据模型时,要充分考虑计算和存储资源间的平衡。
模型数据流向
即ODS->DWD->DW->DWS->ADS。
正常流向:ODS->DWD->DW->DWS->ADS,当出现ODS->DWD->DWS->ADS这种关系时,说明
主题域未覆盖全。应将DWD数据落到DW中,对于使用频度非常低的表允许DWD->DWS。
尽量避免出现DWS宽表中使用DWD又使用(该DWD所归属主题域)DW的表。
同一主题域内对于DW生成DW的表,原则上要尽量避免,否则会影响ETL的效率。
DW、DWS和ADS中禁止直接使用ODS的表, ODS的表只能被DWD引用。
禁止出现反向依赖,例如DW的表依赖DWS的表。
数据库表命名规范
业务规范层 | 数据库名称 | 数据库释义 | 物理表命名规范 | 数据存储格式 |
---|---|---|---|---|
ODS | ods | 从公司各业务mysql表同步的快照信息和运营埋点数据 | 埋点日志:ods_log_{埋点说明}{更 新方式}{时间粒度} 运营数据库:ods_{业务数据库 表}{更新方式}{时间粒度} | Text |
DWD | dwd | 包含公司 各业务经 过ETL后 的基础事 实明细表 | 埋点日志:dwd_log_业务过程_更新 方式_时间粒度 运营数据库:dwd_{数据库类型 (mysql\hbase\wtable\redis)}{业 务过程}{更新方式}{时间粒度} 多数据源:dwd{业务过程}{更新方 式}{时间粒度} | Parquet |
DWS | dws | 按数据、 业务专题 进行划分 的轻度汇 总数据 | dws_{业务主题域}{业务过程}{更新 方式}_{时间粒度} | Parquet |
DIM | dim | 业务维度 相关的字 典数据 | dim_{维度类型 (cate\city\channel\group)}{更新 方式}{时间粒度} | Text |
TMP | temp | 存放数据 计算过程 中的临时 结果表 | tmp_{数据层类型(dwd\dws\ads)_{业 务过程描述} | Parquet |
ADS | ads | 存放面向 各业务应 用分析的 通用结果 表 | ads_{数据主题域}{业务过程描 述}{更新方式}_{时间粒度} | Text\Parquet |