DDL 模板是什么
建表 DDL 模板把团队约定固定成六要素:字段清单、字段类型、字段注释、分区定义、存储格式、表注释。新建表时复制模板改字段,能避免漏项——尤其是字段注释与表注释,这两项漏了以后补写要改元数据,成本远高于建表时顺手写上。模板还应固化命名与存储格式的选择,让评审有据可依。
基本信息
| 六要素 | 字段、类型、注释、分区、存储格式、表注释 |
|---|---|
| 字段顺序 | 普通字段在前,分区字段单独声明 |
| 存储格式 | ORC 或 Parquet,列式且可压缩 |
| 表注释内容 | 业务含义、粒度、周期、负责人 |
| 管理方式 | 模板纳入代码库,变更走评审 |
典型使用场景
- 新建明细表:复制模板改字段与注释,几分钟内产出规范 DDL
- 代码评审:按六要素逐项检查,缺注释或缺分区的表直接打回
- 交接与检索:表注释写明粒度与负责人,接手者不必逐个问人
- 批量建表:模板参数化后由脚本生成,避免手写差异
- 历史表整改:用模板逐项补齐缺失的注释与分区定义
六要素与后果
| 要素 | 要求 | 漏掉的后果 |
|---|---|---|
| 字段类型 | 金额用定点小数,时间按需选类型 | 类型不一致导致下游比较与汇总出错 |
| 字段注释 | 每列都写 COMMENT,注明含义与单位 | 后补注释要改元数据,含义无人说得清 |
| 分区定义 | 明确分区字段与取值格式 | 没有分区,查询只能全表扫描 |
| 存储格式 | 统一 ORC 或 Parquet | 文本格式让扫描量成倍上升 |
| 表注释 | 写明业务含义、粒度、周期、负责人 | 判断不了这张表能不能用,容易取错 |
DDL 模板
DDL 模板
CREATE TABLE dwd_trade_order_di (
order_id STRING COMMENT '订单ID',
customer_sk BIGINT COMMENT '客户代理键',
store_id STRING COMMENT '门店ID',
pay_amt DECIMAL(18,2) COMMENT '支付金额,单位元',
create_time STRING COMMENT '下单时间 yyyy-MM-dd HH:mm:ss'
)
COMMENT '交易域订单明细-日增量;粒度:order_id;负责人:data-zhang'
PARTITIONED BY (dt STRING COMMENT '数据日期 yyyy-MM-dd')
STORED AS ORC;
-- 建表后确认结构符合约定
DESCRIBE FORMATTED dwd_trade_order_di;模板纳入代码库管理,变更模板需评审,避免各团队自行演化出多套风格。模板的价值不在格式好看,而在于把「一张表该写清什么」变成不需要讨论的事。
内部表与外部表的选择也建议写进模板说明:贴源层用外部表,删除表只删元数据、文件保留;加工层用内部表,生命周期由数仓统一管理。这两种表误用的后果差别很大。