目录:
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”,partitionedby(dtstring)。
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调用。