更新时间:2024-12-25 GMT+08:00
分享

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 ]

参数描述

表1 CREATE TABLE AS SELECT参数描述

参数

描述

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;

相关文档