数据仓库规范

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.shd_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.shdim_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 脚本格式如下图所示:

数据仓库规范