Skip to content

数据仓库开发规范

变更记录

版本号 修订内容 修订日期 修订人 审核人
V1.0 新建 2025/03/29 杨江湖 全员
V1.1 2.1.1 新增系统
2.1.2 dim改为中间层
2.2.1 存储策略 实时类型定义修改
2025/08/07 杨江湖 杨江湖
v2.0 2.2.1 优化
2.3.3 更新字段规范 新增
5、git脚本命名规范 新增
6、海豚调度器命名规范 新增
2025/08/13 杨江湖 杨江湖/潘胜/叶锦鹏

1.概述

1.1.背景

​ 为保障数据仓库项目的顺利建设与实施,增强各数据类系统在数据仓库中的建设和实施的规范化、标准化程度,在总结现有技术标准、技术规范的基础上,充分参考和借鉴同行业技术落地的标准,以及业界常用规范与惯例,编写了一系列的规范性文档,以指导数据治理、数据分析的数据开发标准,保持统一风格、统一命名规范、专业且易于区分的架构命名规范等。并为后续开发建设与实施奠定基础。

1.2. 目的

​ 本规范是 General practitioner数据库开发命名规范的重要组成部分,明确指定了基于数据仓库的分层架构命名规范、数据库表命名规范、建表规范等内容,为数据类项目群的数据开发设计和测试核查提供依据。

​ 本规定约定统一数据类项目数据库开发规范,在数据仓库开发过程中,SQL 模块应当遵循统一的命名和编码规范,使数据库对象命名和编码风格标准化,以便于阅读、理解、继承和维护,指导团队成员书写易于维护的代码,提高代码编写效率;同时规范化数据仓库设计流程,设计出更符合业务场景的表定义,输出更高效的 SQL 代码。

1.3. 执行级别

本规范采用的执行级别如下所示:

*强制*】:代表必须严格遵循此规范

*建议*】:并不强制要求遵循此规范,但需优先考虑

*参考*】:作为参考,一些补充说明

1.4. 开发架构

image-20260302100008341

2.通用开发规范

2.1 数据分类标准

*工作目标*

数据标准分类作为数据标准化工作开展的基础,其主要目标是:

*明确标准定义范围*——结合行业最佳实践,明确标准化主题的定义范围,指明未来数据标准化工作的重点和发展方向。

*确定主题定义目的*——明确各主题标准化的目的,即标准定义所能带来的的业务/技术价值,为后期推动标准落地实施奠定基础。

*明确主题定义内容*——根据主题标准化目的明确标准规范化工作的侧重点和具体事项,为后续实际开展标准定义工作提供依据和指引。

2.1.1 业务系统字典

*序号* *系统名称* *系统简称* *系统全称*
1 TikTok Shop tkshop TK店铺后台
2 Amazon amz 亚马逊后台
3 SHEIN shein 希音后台
4 Temu temu 特姆后台
5 普源网店精灵ERP shopelf Shop Elf ERP
6 己仓ERP aybases 己仓海外仓 ERP
7 赛鸟ERP sainiao 赛鸟海外仓 ERP
8 德国IED ERP Ied24 IED24德国海外仓
9 若依ERP ruoyi RuoYi ERP
10 领星ERP lingxing lingcing ERP
11 协同系统 xt 协同系统
12 BI bi DataEase
13 生弘ERP sh 生弘ERP

2.1.2 数仓层次字典

*层次名称* *层次英译* *层次简称* *实际名称*
贴源明细层 Operational Data Store ods shods
整合明细层 Data Warehouse Detail dwd shdwd
中间层维度层 Dimension dim shdim
轻度汇总层 Data Warehouse Summary dws shdws
应用集市层 Application Data Service ads shads

2.1.3 主题字典

*序号* *主题域名称* *主题域英译* *主题域缩写*
1 库存主题 Inventory subject invs
2 订单主题 Order subject os
3 销售主题 Sales subject sas
4 企管主题 Personnel subject pers
5 物流主题 Logistics subject los
6 财务主题 Financial subject fis
7 客户主题 Customer subject cus
8 产品主题 Product subject prds

2.2 命名规范

2.2.1 表命名规范

*强制*】表名称全部小写

*强制*】表名称有多个单词时采用“_”分隔

2.2.1.1 数据贴源层

*强制*】表名= 前缀(层次)+业务系统简称+表名称(业务系统表名称)+存储策略

a) 层次:固定为 ods。

b) 业务系统简称:业务系统简称,参考2.1.1

c) 表名称:表名称沿用业务系统表名,与源系统保持一致。

d) 存储策略:实时 r(小时单位内),增量 i(T+1),全量 a(all)。

示例:ods层tiktok shop订单对账表:ods_tkshop_order_reconciliation_i
2.2.1.2 中间层维度层

*强制*】表名= 前缀(层次)+业务系统简称+表名称(业务系统表名称)+存储策略

a) 层次:固定为 dim。

b) 业务系统简称:业务系统简称,参考2.1.1

c) 表名称:表名称要能准确描述业务数据的特征 【*建议*】[单词数<=4]。

d) 存储策略:实时 r(小时单位内),增量 i(T+1),全量 a(all)。

示例:dim层普源SKU字典表:dim_shopelf_sku_a
2.2.1.3 整合明细层

*强制*】表名=前缀(层次)+业务系统简称+表名称+存储策略

a) 层次:整合明细层固定为 dwd

b) 业务系统简称:业务系统简称,参考2.1.1

c) 表名称:表名称要能准确描述业务数据的特征。【*建议*】[单词数<=4]

d) 存储策略:实时 r(小时单位内),增量 i(T+1),全量 a(all)。

示例:dwd层入库明细表:dwd_ins_goodsmovement_orderin_i
2.2.1.4 轻度汇总层

*强制*】表名= 前缀(层次)+主题域简称+表名称+存储策略

a) 层次: 固定为 dws。

b) 主题域简称:主题标准编码,参考2.1.3

c) 表名称:表名要能准确描述业务数据的特征。【*建议*】[单词数<=4]。

d) 存储策略:实时 r(小时单位内),增量 i(T+1),全量 a(all)。

示例:dws层库存主题宽表:dws_invs_finishedgoods_age_a
2.2.1.5 应用数据层

*强制*】表名= 前缀(层次)_表名称__存储策略

a) 层次: 固定为 ads。

b) 表名称:表名称要能准确描述业务数据的特征。【*建议*】[单词数<=4]。

c) 存储策略:实时 r(小时单位内),增量 i(T+1),全量 a(all)。

示例:ads层利润分析报表:ads_profitability_analysis_a

2.2.2 字段命名规范

原则上,字段名名称应使用易于理解、能准确描述该字段名意义的业务术语或者单词,同时命名应遵循下述规则:

a) 【*强制*】字段需要继承上一层表字段的名称,特有名词可使用拼音简写。

b) 【*强制*】 字段名不要使用不易理解的方言或有地域性/部门局限的业务术语,应使用统一的、正式的、全局范围内通用的业务术语;

c) 【*强制*】 字段注解应符合业务原译,标志类字段必须标记出各类型代表的意思;

举例:order_type tinyint comment '订单类型: (0,待确认,1头程待入库,2头程已入库,3海外仓待入库)';

d) 【*强制*】新建字段标准

1、必须以字母开头
2、字段名称必须小写
3、字段名由字母、下划线、数字组成
4、【*建议*】字段英文名长度尽量控制在4个单词内且50个字符内
2.2.2.1 数据贴源层

a) 【*强制*】由于数据贴源层数据结构和源系统基本一致,故字段名和源系统保持一致。

b) 特殊情况

  • XML 格式解析出字段,按 XML 元素名来命名字段名。

  • JSON 格式解析出的字段,按照 Key 来命名字段名。

2.2.2.2 其余层级

a) 【*强制*】 下游层的字段名命名应与上游层保持一致。

2.3 建表规范

为了DDL 语句的可读性,和提高查询性能,做以下规范。

2.3.1 表名/表字段

a) 数仓各层表名规范参考2.2.1 表命名规范

b) 表字段规范参考2.2.2 字段命名规范

2.3.2 参数规范

2.3.2.1 分区
  • 范围分区(Range) 按连续范围划分(如日期、数值区间):

sql CREATE TABLE sales ( id INT, sale_date DATE, amount NUMERIC ) PARTITION BY RANGE (sale_date); -- 创建子分区 CREATE TABLE sales_2023 PARTITION OF sales FOR VALUES FROM ('2023-01-01') TO ('2024-01-01');

  • 列表分区(List) 按离散值划分(如地区、状态码):

```sql CREATE TABLE employees ( id INT, department TEXT ) PARTITION BY LIST (department); CREATE TABLE employees_hr PARTITION OF employees FOR VALUES IN ('HR', 'Human Resources');

```

  • 查询性能:通过分区裁剪(Partition Pruning),仅扫描相关分区。

  • 数据管理:快速删除旧分区(DROP TABLE sales_2020),无需全表扫描。

  • 并行计算:不同分区可并行处理。

  • 避免过多分区(如按天分区数十年),导致元数据膨胀。

2.3.2.2 分布策略
  • 哈希分布(Hash Distribution) 按指定分布键(Distribution Key)的哈希值分配数据,相同键值位于同一Segment:

sql CREATE TABLE orders ( order_id INT, customer_id INT, amount NUMERIC ) DISTRIBUTED BY (customer_id); -- 选择高频JOIN的字段

优点:JOIN/聚合操作可本地执行,减少数据移动。

  • 随机分布(Random Distribution) 数据均匀分布,但无关联性,适用于无明确分布键的表:

sql CREATE TABLE logs ( log_id INT, content TEXT ) DISTRIBUTED RANDOMLY;

  • 复制分布(Replicated) 全表复制到所有Segment,适合小表(如维度表):

sql CREATE TABLE countries ( country_code CHAR(2), name TEXT ) DISTRIBUTED REPLICATED;

  • 数据均衡:选择高基数(唯一值多)的列,避免数据倾斜。
  • 查询关联性:优先选择频繁用于JOIN、GROUP BY的字段。
  • 避免随机分布:可能导致查询时大量数据重分布。

2.3.3 更新字段规范

*强制*

uptime  TIMESTAMP  default timezone('Asia/Shanghai', [CURRENT_TIMESTAMP]/[now()])

3.DQL 查询规范

*强制*】in 中条件超过 10000 后,必须修改为子查询就行 join

*强制*】多层嵌套采用with写法

*强制*】尽量不要使用 OR 作为 JOIN 条件

*建议*】大量数据排序(5 亿以上)后返回部分数据,建议先减少数据范围在执行排序,否则大量排序会影响性能。

4.数据校验建议

*建议*】分布式校验法:利用分布式计算框架的特性,将数据集分割成多个部分并行处理。每个任务或分区独立校验一部分数据,然后汇总结果。

*建议*】格式校验:数据类型验证:确保数据符合预期的数据类型(如整数、字 符串、日期等)。长度限制:检查数据是否在允许的长度范围内。正则表达式匹配:使用正则表达式验证数据格式(如电子邮件地址、电话号码等)。

*建议*】范围校验:数值范围:确保数值数据在合理的范围内。日期范围:检查 日期数据是否在预期的时间范围内。

5.git脚本命名规范

强制】脚本名称全部小写,使用“_”分隔单词 【强制】脚本名称格式:层次_业务系统简称或主题域简称_表名_脚本类型.sql

  • 层次:固定为 ods/dim/dwd/dws/ads,参考 2.1.2 数仓层次字典
  • 业务系统简称/主题域简称
  • ODS/DIM/DWD 层:使用业务系统简称(如 tkshop),参考 2.1.1
  • DWS层:使用主题域简称(如 invs),参考 2.1.3
  • 表名:与数仓表名一致
  • 脚本类型
  • ddl:建表语句
  • dml:数据操作(如插入、更新)
  • dql:查询语句
  • func:函数/存储过程/物化视图

强制】脚本开头添加注释:功能描述、作者、修订记录

示例:  
TK订单对账表_ods_tkshop_order_reconciliation_i_ddl.sql  
TK订单对账sku明细表_dws_invs_finishedgoods_age_a_dml.sql  

  • ODS开头添加注释
/*
功能描述:TK订单对账表—ods_tkshop_order_reconciliation_i_ddl
作者:杨江湖
修订记录:2025-08-10 新建表模型
修订记录:2025-08-13 新增字段['sku']
*/
  • DWD\DIM\DWS\ADS开头添加注释
/*
功能描述:TK订单对账sku明细表—dwd_tkshop_order_reconciliation_sku_i_ddl_dml
作者:杨江湖
修订记录:2025-08-10 新建模型\实现思路
修订记录:2025-08-13 结算金额口径修改:订单类型中剔除手工订单
*/

6.海豚调度器命名规范

6.1 任务命名规范

强制】节点命名与git脚本命名规范一致 【强制项目层次

  • ods(贴源层)、业务项目(以业务命名:TK跨境毛利表全流程)、公共层(公共表、维度表)

6.2 任务调度配置

强制DEPENDENT配置依赖关系

强制】调度时间配置

强制】预警配置失败通知