创建表(使用)
适用于:砖的SQL砖运行时
定义了一个管理或外部表,可以选择使用一个数据源。
语法
{{(创建或]取代表|创建(外部]表(如果不存在]}table_name(table_specification](使用data_source](table_clauses](作为查询]}table_specification({column_identifiercolumn_type(不零](生成的总是作为(expr)|生成的{总是|通过默认的}作为身份(((开始与开始](增量通过一步])]|默认的default_expression](评论column_comment](column_constraint]}(,…](,table_constraint](…])table_clauses{选项条款|分区通过条款|clustered_by_clause|位置路径(与(凭证credential_name)]|评论table_comment|TBLPROPERTIES条款}(…]clustered_by_clause{集群通过(cluster_column(,…])(排序通过({sort_column(ASC|DESC]}(,…])]成num_buckets桶}
参数
取代
如果指定替换表和它的内容是否已经存在。此条款仅支持三角洲湖表。
取代
保留了表的历史。请注意
砖强烈建议使用
取代
而不是删除和重新创建三角洲湖表。外部
如果指定,创建一个外部表。当创建一个外部表你还必须提供
位置
条款。当一个外部表被删除的文件位置
不会被删除。如果不存在
如果指定一个表具有相同名称已经存在,声明将被忽略。
如果不存在
不能共存取代
,这意味着创建或取代表如果不存在
是不允许的。要创建的表的名称。必须不包含一个名称时间规范。如果名字不是合格的当前模式中创建的表。
table_specification
这个可选的子句定义的列的列表,它们的类型、属性、描述,和列约束。
如果您不定义列表模式必须指定
作为查询
或位置
。一个独特的列的名称。
指定列的数据类型。并不是所有的数据类型支持的砖都支持的数据源。
非空
如果指定列不会接受
零
值。此条款仅支持三角洲湖表。生成的总是像(expr)
当你指定这个子句这一列的值是由指定的决定
expr
。expr
可能是由文字、表内列标识符,和确定性,内置的SQL函数或运营商除了:也
expr
必须不包含任何子查询。生成的{总是默认|}作为身份(((从开始)[增量步)))
适用于:砖的SQL砖运行时10.3及以上
定义了一个标识列。当你写表,不提供标识列的值,它会自动分配一个独特的和统计的增加(或减少
一步
是负的)价值。此条款仅支持三角洲湖表。这一条款只能用于与长整型数字列数据类型。自动分配值
开始
和增量一步
。指定的值是唯一的,但不能保证是连续的。这两个参数是可选的,默认值是1。一步
不能0
。如果自动分配值范围之外的身份列类型,查询将失败。
当
总是
使用,不能提供自己的标识列的值。不支持以下操作:
分区标识列
更新一个标识列
请注意
声明一个标识列在三角洲表禁用并发事务。只使用标识列在用例并发写入目标表不需要。
默认default_expression
适用于:砖的SQLSQL仓库2022.35版本或更高版本砖运行时11.2及以上
定义了一个
默认的
使用值的列插入
,更新
,合并…插入
如果不指定列值。如果没有指定默认的
默认的零
是申请空列。default_expression
可能是由文字组成的,和内置的SQL函数或运算符除外:也
default_expression
必须不包含任何子查询。默认的
支持CSV
,JSON
,拼花
,兽人
来源。评论column_comment
一个字符串来描述列。
-
预览
这个特性是在公共预览。
添加一个主键或外键约束在三角洲湖表列。
约束的表不支持
hive_metastore
目录。检查约束添加到三角洲湖表使用ALTER TABLE。
增加了一个信息主键或外键约束三角洲湖表。
不支持键约束的表
hive_metastore
目录。检查约束添加到三角洲湖表使用ALTER TABLE。
使用data_source
表的文件格式使用。
data_source
必须的:文本
AVRO
BINARYFILE
CSV
JSON
拼花
兽人
δ
下列附加文件格式用于表在砖支持运行时:
JDBC
LIBSVM
自定义实现的完全限定类名
org.apache.spark.sql.sources.DataSourceRegister
。
如果
使用
省略,默认的是什么δ
。对于任何
data_source
除了δ
您还必须指定一个位置
除非表目录hive_metastore
。以下适用于:砖运行时
蜂巢
支持在砖运行时创建一个蜂巢SerDe表。你可以指定Hive-specificfile_format
和row_format
使用选项
条款,这是一个不区分大小写的字符串映射。的option_keys
是:FILEFORMAT
INPUTFORMAT
OUTPUTFORMAT
SERDE
FIELDDELIM
ESCAPEDELIM
MAPKEYDELIM
LINEDELIM
table_clauses
选择指定位置、分区、集群、选项,评论,新表和用户定义的属性。每个子条款可能只被指定一次。
一个可选条款分区的表列的一个子集。
请注意
除非你定义一个三角洲湖表分区列引用列列规范总是移动到表的结束。
clustered_by_clause
选择集群每个分区表或成一个固定数量的散列桶使用列的一个子集。
聚类不支持三角洲湖表。
集群的
指定的组列集群每个分区,或者如果没有指定分区的表。
一个标识符引用一个
column_identifier
在表中。如果你指定多个列不能重复。因为集群运作在分区级别你不能分区列也作为集群列名称。
按
选择维护行一桶排序顺序。
sort_column
一种列的桶。列不能分区列。列必须是唯一的。
ASC或DESC
(可选)指定是否
sort_column
在升序排序(ASC
)或降序(DESC
)秩序。默认值是ASC
。
到num_buckets桶
一个整数字面指定的桶,每个分区的数量(或表如果没有指定分区)是分裂的。
位置路径(与(凭据credential_name)]
一个可选的路径目录表数据存储,可以在分布式存储的路径。
路径
必须是一个字符串。如果您没有指定位置表被认为是管理表
和砖创建一个默认的表的位置。对于一个三角洲湖表的表配置是继承了
位置
如果数据存在。因此,如果任何TBLPROPERTIES
,table_specification
,或分区通过
子句指定为三角洲湖表他们必须精确匹配三角洲湖的位置数据。集或重置一个或多个用户定义的表选项。
评论table_comment
一个字符串来描述表。
选择一个或多个用户定义的属性集。
作为查询
这个可选条款使用数据填充表
查询
。当你指定一个查询
你也不能指定一个table_specification
。表模式来源于查询。注意,砖覆盖底层数据源的数据输入的查询,以确保表创建包含完全相同的数据作为输入查询。
例子
——创建一个增量表>创建表学生(idINT,的名字字符串,年龄INT);——使用另一个表的数据>创建表student_copy作为选择*从学生;——创建一个CSV表从外部目录>创建表学生使用CSV位置“/ mnt / csv_files”;——指定表评论和属性>创建表学生(idINT,的名字字符串,年龄INT)评论“这是一个评论”TBLPROPERTIES(“foo”=“酒吧”);和属性不同的条款——指定表意见>创建表学生(idINT,的名字字符串,年龄INT)TBLPROPERTIES(“foo”=“酒吧”)评论“这是一个评论”;——创建分区表>创建表学生(idINT,的名字字符串,年龄INT)分区通过(年龄);——创建一个表生成的列>创建表矩形(一个INT,bINT,区域INT生成的总是作为(一个*b));