創建表(使用)
適用於:磚的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)]
一個可選的路徑目錄表數據存儲,可以在分布式存儲的路徑。
路徑
必須是一個字符串。如果您沒有指定位置表被認為是管理表
和磚創建一個默認的表的位置。使表指定一個位置外部表。
表不存在的
hive_metastore
目錄表路徑
必須保護的嗎外部位置除非一個有效存儲憑證都是確定的。您不能創建外部表的位置重疊的位置管理表。
對於一個三角洲湖表的表配置是繼承了
位置
如果數據存在。因此,如果任何TBLPROPERTIES
,column_specification
,或分區通過
子句指定為三角洲湖表他們必須精確匹配三角洲湖的位置數據。集或重置一個或多個用戶定義的表選項。
評論table_comment
一個字符串來描述表。
選擇一個或多個用戶定義的屬性集。
作為查詢
這個可選條款使用數據填充表
查詢
。當你指定一個查詢
你也不能指定一個column_specification
。表模式將派生形式查詢。注意,磚覆蓋底層數據源的數據輸入的查詢,以確保表創建包含完全相同的數據作為輸入查詢。
例子
——創建一個增量表>創建表學生(idINT,的名字字符串,年齡INT);——使用另一個表的數據>創建表student_copy作為選擇*從學生;——創建一個CSV表從外部目錄>創建表學生使用CSV位置“/ mnt / csv_files”;——指定表評論和屬性>創建表學生(idINT,的名字字符串,年齡INT)評論“這是一個評論”TBLPROPERTIES(“foo”=“酒吧”);和屬性不同的條款——指定表意見>創建表學生(idINT,的名字字符串,年齡INT)TBLPROPERTIES(“foo”=“酒吧”)評論“這是一個評論”;——創建分區表>創建表學生(idINT,的名字字符串,年齡INT)分區通過(年齡);——創建一個表生成的列>創建表矩形(一個INT,bINT,區域INT生成的總是作為(一個*b));