表
表 DDL 命令用于创建、修改、查询和删除工作空间中的普通表。
表的类型
Lakehouse 提供多种表类型,选型时参考以下对比:
| 表类型 | 说明 | 适用场景 |
|---|---|---|
| 普通表(Table) | 格式化的二维数据,手动 INSERT/UPDATE/DELETE | 原始数据存储、ODS 层 |
| 动态表(Dynamic Table) | 基于查询定义自动增量刷新的数据对象 | DWD/DWS/ADS 层、指标汇总 |
| 物化视图(Materialized View) | 预计算并存储查询结果的特殊视图 | 预计算查询结果、查询改写 |
| 视图(View) | 虚拟表,不存储数据,查询时动态计算 | 简化复杂查询、逻辑抽象 |
| 外部表(External Table) | 数据存储在外部系统,Lakehouse 仅管理元数据 | 联邦查询、数据湖访问 |
存储格式
普通表默认使用 Parquet 格式存储,具备以下优势:
- 列式存储:只读取查询涉及的列,减少 I/O
- 高效压缩:相比行式存储节省 50%–80% 存储空间
- 向量化执行:配合 Lakehouse 执行引擎,聚合和过滤性能更优
表的约束
NOT NULL
列定义时加
NOT NULL,写入时系统校验该列不能为空。
PRIMARY KEY
主键约束有两种行为模式,选择时需了解差异:
| 模式 | 语法 | 写入去重范围 | 适用场景 |
|---|---|---|---|
(默认) | | SQL 写入 + 实时写入都去重 | 通用场景 |
| | 仅实时写入去重,SQL 写入不检查 | 仅通过 CDC 实时同步写入的表 |
本章内容
| 页面 | 说明 |
|---|---|
| CREATE TABLE | 创建普通表,支持分区、分桶、主键、自增列等选项 |
| 分区 | 按时间或其他字段分区,加速分区裁剪 |
| 分桶 | 按列值散列分桶,优化 JOIN 和聚合 |
| 主键 | 定义主键约束,用于 CDC 实时去重写入 |
| 自增列 | 自动生成唯一递增整数值的列 |
| 生成列 | 基于其他列表达式自动计算的列 |
| 默认值 | 插入时未指定列值时的默认值定义 |
| CREATE...CLONE | 快速克隆表结构(和可选数据)为新表 |
| ALTER TABLE | 修改表属性,如重命名、添加/修改列、设置生命周期 |
| ALTER TABLE COLUMN | 添加、重命名、修改列类型或删除列 |
| DROP TABLE | 删除表及其数据 |
| RESTORE TABLE | 将表回滚到某个历史版本 |
| UNDROP TABLE | 恢复已删除的表(在数据保留期内) |
| DESC TABLE | 查看表的列定义、类型和约束 |
| DESC HISTORY TABLE | 查看表的历史版本列表 |
| SHOW TABLES | 列出当前 Schema 下的所有表 |
| SHOW COLUMNS | 列出表的所有列信息 |
| SHOW CREATE TABLE | 查看建表语句 |
| SHOW PARTITIONS | 列出分区表的所有分区 |
| SHOW TABLES HISTORY | 列出已删除的表(可用于 UNDROP) |
| ANALYZE TABLE | 收集表的统计信息,帮助优化器生成更优执行计划 |
| OPTIMIZE | 合并小文件,提升查询性能 |
常用操作
创建表
修改表
查看表
删除与恢复
相关文档
| 文档 | 说明 |
|---|---|
| SQL 命令总览 | 所有 SQL 命令分类导航 |
| 普通表(对象模型) | 表的存储格式、类型选择和最佳实践 |
| COPY INTO(导入) | 从 Volume 或外部存储批量导入数据 |
| Time Travel 使用指南 | 历史数据查询和表回滚操作 |
联系我们
