数据仓库开发规范
变更记录
| 版本号 | 修订内容 | 修订日期 | 修订人 | 审核人 |
|---|---|---|---|---|
| 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. 开发架构

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.1DWS层:使用主题域简称(如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配置依赖关系
【强制】调度时间配置
【强制】预警配置失败通知