• 数据仓库规范


    不以规矩,不成方圆。
    ——《孟子·离娄章句上》


    前言

    介绍数据仓库开发全流程中可以遵循的各类规范,供各位小伙伴参考。持续优化中。


    一、数仓规范总览

    在这里插入图片描述

    二、数仓规范各细则

    (一)设计规范

    设计规范主要包含模型报表开发过程中

    1. 数据模型规范

    (1)分层规范;
    (2)各模型侧重点规范。

    序号数仓分层分层中文解释备注
    1odsO层数据源一般为业务关系型数据库备份库直接接入
    2dwdD层事实表一般是对某一事务进行数据清洗,关联维表,也可以进行维度退化
    3dim维度表记录维度数据,累全量保证当天维度唯一
    4dwsD层初步汇总表对数据进行初步汇总,可以形成宽表给ads复用
    5adsA层报表根据需求对粒度和维度再次汇总,展示最终汇总统计的数据,是用户看到的表,需保证隐私问题没有敏感数据

    2. 命名规范

    (1)库命名规范;
    (2)表命名规范;
    (3)脚本文件名称规范。

    后缀后缀中文解释表命名示例中文命名示例
    tf事务事实表dwd_sale_order_tf_dm销售订单事务事实表
    sf快照事实表
    ds全量天表
    dm增量天表
    ca可加
    xa不可加
    ma半可加

    3. 代码编写规范

    (1)空格
    (2)注释
    (3)大小写

    -- ################################################################
    -- name    : dim_xxx_ds.sql
    -- desc    : XXX维度表
    -- version : aa_2.0.1
    -- source  : ods_zzz;
    -- create  : zhangliushi 20220101
    -- modify  :
    -- ################################################################
    
    USE dim;
    SET hive.auto.convert.join = true;
    SET hive.exec.parallel = true;
    
    -- XXX;
    CREATE EXTERNAL TABLE IF NOT EXISTS dim.dim_xxx_ds
    (
        etl_id                      STRING     COMMENT 'ETL代理ID'
       ,dept_code                   STRING     COMMENT '部门代码'
       ,first_dept                  STRING     COMMENT '一级部门'
       ,second_dept                 STRING     COMMENT '二级部门'
       ,third_dept                  STRING     COMMENT '三级部门'
       ,fourth_dept                 STRING     COMMENT '四级部门'
       ,fifth_dept                  STRING     COMMENT '五级部门'
       ,etl_time                    STRING     COMMENT 'ETL时间'
       ,standardized_first_dept     STRING     COMMENT '标准化一级部门'
       ,standardized_second_dept    STRING     COMMENT '标准化二级部门'
       ,standardized_third_dept     STRING     COMMENT '标准化三级部门'
       ,standardized_fourth_dept    STRING     COMMENT '标准化四级部门'
       ,standardized_fifth_dept     STRING     COMMENT '标准化五级部门'
       ,active_flag                 BOOLEAN    COMMENT '启用标志'
    )
    COMMENT 'XXX维度表'
    PARTITIONED BY (pt_d VARCHAR(10) COMMENT '天分区')
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '\001'
    LINES TERMINATED BY '\n'
    STORED AS ORC
    LOCATION 'cosn://qqq/dim/dim_xxx_ds'
    TBLPROPERTIES('orc.compress'='ZLIB')
    ;
    
    -- iii
    DROP TABLE IF EXISTS tmp.tmp_a;
    CREATE TABLE IF NOT EXISTS tmp.tmp_a
    AS
    SELECT
       KKK
    FROM lll
    ;
    
    INSERT OVERWRITE TABLE dim.dim_common_mdm_dept_ds
    PARTITION (pt_d = '${pt_d}')
    SELECT
        XXX
    FROM tmp.tmp_a
    ;
    
    DROP TABLE IF EXISTS tmp.tmp_a;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    4. 指标体系建设

    将公司目标定为核心指标,细分出下级指标。

    5. 词根库

    将同一中文含义的字段使用相同英文命名,如下所示:

    词根英文名词根中文解释字段英文命名示例中文命名示例
    date日期update_date更新日期
    update更新
    dept部门

    (二)流程规范

    流程规范主要是从数仓管理的角度,对数仓场景下的各种流程进行约束。

    1. 需求提交流程

    (1)需求对接人;
    (2)需求提交途径;
    (3)需求澄清、评审会。

    2. 模型设计流程

    模型评审会沟通

    3. ETL开发流程

    数据接入方式,数据接入工具

    4. 前端开发规范

    (1)报表风格;
    (2)更新时间监控。

    5. 上线流程

    (1)确定上线时间;
    (2)确定上线途径;
    (3)确定上线后验证。

    (三)质量管控规范

    质量管控规范主要是针对从数据源到应用层的数据质量问题

    1. 源端管控

    (1)监控数据源接入任务是否正常执行;
    (2)监控数据源数据是否正常。

    2. 数仓管理

    (1)监控模型任务是否正常执行;
    (2)监控模型数据是否正常。

    3. 应用管控

    (1)监控报表任务是否正常执行;
    (2)监控报表数据是否正常。

    (四)安全规范

    安全规范对外是为了防止数据通过网络泄露,对内是通过权限的管理实现数据权限最小化。

    1. 网络安全

    考虑数据应用层是否需要外网使用。

    2. 账号安全

    一个一账号原则,可以与公司内部账号绑定,遵循数据权限最小化。

    3. 数据安全

    (1)涉及到个人信息的数据加密处理;
    (2)必须要明文展示的敏感数据掩码处理;
    (3)前端报表页面加水印显示数据使用人信息。


    总结

    “不以规矩,不能成方圆。”出自《孟子》的《离娄章句上》。讲的是没有规矩,就不会有规整的方圆。形容合理地规则更有助于我们做成一件事。恰逢世界杯期间,咱以足球为例。在古代,足球比赛是充斥着暴力和血腥的一项运动,正是有了规则的限制,才使得这项运动变成如今这边受欢迎,合理地规则能够保护球员,尽量避免其受伤,也能够让比赛双方尽可能的实现公平竞争。
    在数据仓库开发的过程中,遵循一定的规范能够避免我们的开发偏离原有设计的方向,也能够保证数据安全。

  • 相关阅读:
    智能电子界桩自然保护区远程监控解决方案
    java毕业生设计校园网络维修系统计算机源码+系统+mysql+调试部署+lw
    Layui实现之登陆页面&&实现扩展模块
    PAT 1097 Deduplication on a Linked List(25分)
    python文件的读取
    【21天python打卡】第19天 python经典案例(5)
    react-grapesjs——开源代码学习与修改(初出茅庐)
    漏洞复现----41、Spring Data Rest 远程命令执行漏洞(CVE-2017-8046)
    BUUCTF test_your_nc
    Linux--MQTT(二)通信基本原理
  • 原文地址:https://blog.csdn.net/zhangliushi/article/details/128079093