不以规矩,不成方圆。
——《孟子·离娄章句上》
介绍数据仓库开发全流程中可以遵循的各类规范,供各位小伙伴参考。持续优化中。

设计规范主要包含模型报表开发过程中
(1)分层规范;
(2)各模型侧重点规范。
| 序号 | 数仓分层 | 分层中文解释 | 备注 |
|---|---|---|---|
| 1 | ods | O层数据源 | 一般为业务关系型数据库备份库直接接入 |
| 2 | dwd | D层事实表 | 一般是对某一事务进行数据清洗,关联维表,也可以进行维度退化 |
| 3 | dim | 维度表 | 记录维度数据,累全量保证当天维度唯一 |
| 4 | dws | D层初步汇总表 | 对数据进行初步汇总,可以形成宽表给ads复用 |
| 5 | ads | A层报表 | 根据需求对粒度和维度再次汇总,展示最终汇总统计的数据,是用户看到的表,需保证隐私问题没有敏感数据 |
(1)库命名规范;
(2)表命名规范;
(3)脚本文件名称规范。
| 后缀 | 后缀中文解释 | 表命名示例 | 中文命名示例 |
|---|---|---|---|
| tf | 事务事实表 | dwd_sale_order_tf_dm | 销售订单事务事实表 |
| sf | 快照事实表 | ||
| ds | 全量天表 | ||
| dm | 增量天表 | ||
| ca | 可加 | ||
| xa | 不可加 | ||
| ma | 半可加 |
(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;
将公司目标定为核心指标,细分出下级指标。
将同一中文含义的字段使用相同英文命名,如下所示:
| 词根英文名 | 词根中文解释 | 字段英文命名示例 | 中文命名示例 |
|---|---|---|---|
| date | 日期 | update_date | 更新日期 |
| update | 更新 | ||
| dept | 部门 |
流程规范主要是从数仓管理的角度,对数仓场景下的各种流程进行约束。
(1)需求对接人;
(2)需求提交途径;
(3)需求澄清、评审会。
模型评审会沟通
数据接入方式,数据接入工具
(1)报表风格;
(2)更新时间监控。
(1)确定上线时间;
(2)确定上线途径;
(3)确定上线后验证。
质量管控规范主要是针对从数据源到应用层的数据质量问题
(1)监控数据源接入任务是否正常执行;
(2)监控数据源数据是否正常。
(1)监控模型任务是否正常执行;
(2)监控模型数据是否正常。
(1)监控报表任务是否正常执行;
(2)监控报表数据是否正常。
安全规范对外是为了防止数据通过网络泄露,对内是通过权限的管理实现数据权限最小化。
考虑数据应用层是否需要外网使用。
一个一账号原则,可以与公司内部账号绑定,遵循数据权限最小化。
(1)涉及到个人信息的数据加密处理;
(2)必须要明文展示的敏感数据掩码处理;
(3)前端报表页面加水印显示数据使用人信息。
“不以规矩,不能成方圆。”出自《孟子》的《离娄章句上》。讲的是没有规矩,就不会有规整的方圆。形容合理地规则更有助于我们做成一件事。恰逢世界杯期间,咱以足球为例。在古代,足球比赛是充斥着暴力和血腥的一项运动,正是有了规则的限制,才使得这项运动变成如今这边受欢迎,合理地规则能够保护球员,尽量避免其受伤,也能够让比赛双方尽可能的实现公平竞争。
在数据仓库开发的过程中,遵循一定的规范能够避免我们的开发偏离原有设计的方向,也能够保证数据安全。