数据仓库规范
0.目录
• 命名规范
• 表命名规范
• 字段命名规范
• 脚本命名规范
• 开发规范
1.命名规范
• 根据业务过程,抽象基本术语单元;
• 对相应的术语单元做语义翻译,可以采用拼音、英文、含义数字,避免英文、拼音混用;
• 拼音、英文尽量在不失原意的情况下采用缩写形式;
• 避免数字开头;
1.1 表命名规范
数据仓库中表格的命名规范如下表所示:
在表格的命名中,我们要求能够合理的区分出表所描述的数据域、数据周期等。
命名格式:层次_数据域_修饰/描述_范围/周期
根据表的命名规范,我们对以下的数据表进行命名:
1.1.1 订单相关数据表:
DWD 层:d_ord_info_d
DWS 层:s_ord_st_d
1.1.2 维度表:
用户维度:dim_user_d
商品缓慢渐变维表:dim_product_l
1.1.3 ODS 层表:
(对于 ODS 层表,最好能够区分数据来源,包括来自什么系统、数据源名称)
业务系统编码:buss业务系统订单表:loan_order
ods 层表命名:o_buss_loan_order_d
1.2 字段命名规范
设计模型的时候,按照业务含义、业务术语规范命名字段汉字名称。
• 避免数字开头
• 同一业务含义统一命名,避免不同表达方式
• 统一书写格式,比如用户 id:user_id,用户姓名:userName 非统一格式
• 统一大小写,建议统一小写
• 避免与关键字、自定义 udf 重名 根据字段命名对字段进行命名,如下表所示:
1.3 脚本命名规范
数据仓库中会使用到很多自动化脚本,脚本的命名规则如下:
• ETL脚本名称尽可能和所产出的表同名
• 数据采集、数据推送脚本尽可能标识数据去向
• ETL脚本若产生多个表,采用对应的数据域和语义描述命名
• Jar 包命名以实际的业务处理逻辑语义描述为主,调度任务命名同样尽量以产出表 名命名
根据脚本命名规范,我们对如下的脚本进行命名:
1.3.1 数据采集过程
• 采集数据到 ODS 层的表 o_buss_loan_order_d,我们按照输出表 d_ord_ino_d 对脚本和任 务进行命名:
• 数据采集脚本命名:imp_o_buss_loan_order_d.sh、imp_o_buss_loan_order_d.py
1.3.2 订单 ETL 过程
• 从 ODS 层的表 o_buss_loan_order_d 整理数据并且装载到 DWD 层表 d_ord_ino_d 中,我们按照输出表 d_ord_ino_d 对脚本和任务进行命名:
• ETL 脚本命名: d_ord_info_d.sh、d_ord_info_d.py、d_ord_info_d.hql、d_ord_info_d.jar
• ETL 任务命名:d_ord_info_d
1.3.3 一个 ETL 脚本产出多个表,比如从商品表中分离出商品维度、厂家维度:
• ETL 脚本命名:dim_product_mfrs_d.sh、dim_product_mfrs_d.py、dim_product_mfrs_d.hql、 dim_product_mfrs_d.jar
• ETL 任务名称:dim_product_mfrs_d
2.开发规范
• 数仓中 MR 程序尽可能统一输入参数、输出参数,单个 jar 程序的功能模块清晰, 避免多种处理逻辑写入一个 jar 包;
• 每个 ETL 脚本尽可能产出一张数仓表,方便任务排查,同时也减少数仓表的耦合性;
• ETL脚本格式、备注清晰,避免大范围、格式杂乱的脚本,合理利用临时表
a) 字段列对齐;
b) 关键字列对齐;
c) 禁止使用 Tab,全部使用 4 个空格代替;
• 标准的 ETL 脚本格式如下图所示: