天天看点

数据仓库企业最佳实践系列之数仓规范建设

目录:

1、为什么要建立数仓规范

2、具体规范的设定

1、为什么要建立数仓规范

无规矩不成方圆,建立规范的目的也是为了提升开发效率,可以很快的追踪数据链路,最终保障交付质量。

我们在开发过程中遇到的问题:

1、接到需求,不知道数据该从那张表出,只能从头再来一遍;

2、数仓几千张表,不清楚有什么作用,能否能用上,也不知道是否可以删除;

3、同事给了一堆表名,看半天,不知道这些表是做什么的;

4、数据结果有错误,找问题找一天都不知道是啥。

数据规范是数仓体系建设的"语言",是数据使用的说明书和翻译官,同时也是数据质量的保驾护航者。为了数据体系能够长久健康的发展,数仓管理,应该从人治逐步转变到制度化、规范化、工具化的道路上了来。

2、具体规范的设定

1、表命名规范

1.1 正式表

命名规则

STG层、ODS层:[层次]_[源系统数据库名]_[业务系统表名]_[分表规则]

数据仓库企业最佳实践系列之数仓规范建设
数据仓库企业最佳实践系列之数仓规范建设

1、由字母、下划线、数字组成,不能以下划线和数字开头

2、尽量用英文简写,其次是英文

3、部分可以汉语拼音首字母标准缩写,如中国制造zgzz

4、命名不宜过长

分表规则

DA : 日明细,表示运行周期是每日(dialy),并且每个分区都存储的是全量数据

DI :日明细,表示运行周期是每日(dialy),并且每个分区都存储的是增量数据

(备注A :all 表示全量的意思 I :increment 表示增量的意思)

DS : 日汇总, 主要用在dws 层

WS : 周汇总,主要用在dws 层

MS : 月汇总,主要用在dws 层

YS : 年汇总,主要用在dws 层

层次:遵循仓库模型架构定义的层次结构命名

如STG、ODS、DWD、DWA、ADS、APP

STG(数据缓存层):通过每日批处理全量或增量方式加载上游源业务系统提供的数据,数据保留时间根据业务具体确定,一般为7到14天。

ODS(数据标准层):ODS层是数据仓库准备区,为DWD层提供基础原始数据。

DWD(明细数据层):根据 ODS 层数据按主题性以及领域进行归类建模。存放最细粒度的事实表数据。

DWA(服务数据层):数据汇总层,在 DWD 层基础上进行汇总。

ADS层(数据集市层):特定的部门或者用户的需求,按照多维的方式进行存储。

APP 层(数据应用层):服务于终端用户,高度汇总。(数据分析师专用)

1.2 临时表

mid表 : 是一个完整的脚本执行过程中使用的临时存储表,每个脚本中都可以根据需要可以设置若干个mid表,mid表的名字具有唯一性。

mid表的使用具有独占性,即一个mid表只能被一个脚本使用,生命周期在本脚本内。脚本执行前,需要先清空mid表(分区) ,mid表命名规则:[mid]_[脚本名称]_[序号]

数据仓库企业最佳实践系列之数仓规范建设

1.3 视图命名

[层次]_[主题]_[有意义的缩写]_v_[分表规则]

数据仓库企业最佳实践系列之数仓规范建设

1.4 日志表命名

以下为目前接入日志数据存储表:

数据直接入到ODS层;

日志表命名规则:

ods_log_[日志类型]_[分表规则]

di:表示日志表每天分区为增量数据

数据仓库企业最佳实践系列之数仓规范建设

1.5 程序命名

python程序命名

结构为:[目标表名].py

程序名称一律小写

备注 : 所有程序名一律小写,并且最终输出的表名要和python脚本名一致,一个python脚本只能有一个输出结果表。所有的程序的程序名和最终生成的表名、调度系统中的任务名一致,不要一个程序生成多个结果表。

数据仓库企业最佳实践系列之数仓规范建设

1.6 建表规范

建表时使用以下四种字段类型

string(字符串)

int (短整型)

bigint(长整型,用于金额等字段类型,如金额单位为元,则建议转换成分)

double(仅用于服务费率等含小数字段类型)

如果采用分区表,分区字段定义为dt;如需要建立二级分区,请使用dp或根据业务逻辑建立。除维表(dim)和临时表(mid),其余表建成分区external表(使用时需要避免全表扫描)

external建表模式下,表分区删除后,数据文件任保留。

1) 字段间用逗号(\t)分割,行间隔用换行符(\n)分割

2) 日期分区字段统一采用dt命名,格式如下“yyyy-mm-dd”,partitioned by(dt string)。

3) dim表一律用非分区表

4) mid表一律用分区表(为了查问题时能够追溯到某一时间点某个运行过程的结果)

6) stg、ods、dwd、dwa、dws、app表一律采用分区表,以da或di结尾

7) 建表语句中必须指定分区键、行、列分隔符

2、分层规范

一个好的分层架构,有以下好处:

1、清晰数据结构:每一个数据分层都有对应的作用域,在使用数据的时候能更方便的定位和理解。

2、数据血缘追踪:若出现目标数据异常时,清晰的血缘关系可以快速定位问题所在。而且,血缘管理也是元数据管理重要的一部分。

3、减少重复开发:数据的逐层加工原则,下层包含了上层数据加工所需要的全量数据,避免了每个数据开发人员都重新从源系统抽取数据进行加工。

4、数据关系条理化:源系统间存在复杂的数据关系,数据仓库会对相同主题的数据进行统一建模,把复杂的数据关系梳理成条理清晰的数据模型,使用时就可避免上述问题了。

5、屏蔽原始数据的影响:原始数据位于数仓的最底层,离应用层数据还有多层的数据加工,能保持应用层的稳定性。

ODS:贴源层,原始数据不做变化或者仅做最简单的补全后存入。

DWD:对数据源做清洗、转换、补全、编码转换后加载到明细数据层。

DWS:汇总数据层+主题宽表。

APP:应用层,面向最终应用。

注意:

1、禁止反向调用

2、ODS 只能被 DWD 调用。

3、DWD 可以被 DWS 和 ADS 调用。

4、DWS 只能被 ADS 调用。

继续阅读