CREATE TABLE AS SELECT
命令功能
CREATE TABLE As SELECT命令通过指定带有表属性的字段列表来创建Hudi Table。
命令格式
CREATE[ OR REPLACE] TABLE [ IF NOT EXISTS] [database_name.]table_name|DELTA.`obs://bucket_name/tbl_path`
USING DELTA
[ COMMENT table_comment ]
[ PARTITIONED BY (partColumnList) ]
[ LOCATION location_path]
[ AS query_statement ]
参数描述
参数 |
描述 |
---|---|
database_name |
Database名称,由字母、数字和下划线(_)组成。 |
table_name |
Database中的表名,由字母、数字和下划线(_)组成。 |
bucket_name |
obs桶名称。 |
tbl_path |
Delta表在obs桶中的存储位置。 |
using |
参数delta,定义和创建Delta table |
table_comment |
表的描述信息。 |
location_path |
Delta表的存储位置,当前版本通过表名创建Delta表时必须指定,且只支持obs路径,指定该路径Delta 表会创建为外表。 |
query_statement |
select查询表达式 |
所需权限
- SQL权限
表2 CREATE TABLE AS SELECT所需权限列表 权限描述
数据库的CREATE_TABLE权限
查询表的SELECT权限
- 细粒度权限:dli:database:createTable, dli:table:select。
- 由LakeFormation提供的元数据服务,权限配置详见LakeFormation文档。
示例
- 创建分区表
create table if not exists delta_table0 using delta partitioned by (dt) location 'obs://bucket_name0/db0/delta_table0' as select 1 as id, 'a1' as name, 10 as price, 1000 as dt;
- 创建非分区表
create table if not exists delta_table0 using delta location 'obs://bucket_name0/db0/delta_table0' as select 1 as id, 'a1' as name, 10 as price; create table delta.`obs://bucket_name0/db0/delta_table0` using delta partitioned by (part_col1, part_col2) as select id,name,year,class_name from table1 where part_col1=2024;