資料表屬性和資料表選項
適用於:Databricks SQL
Databricks Runtime
定義資料表和檢視的使用者定義標記。
-
表屬性是鍵-值對,您可以在執行 CREATE TABLE 或 CREATE VIEW時初始化。 您可以使用 ALTER TABLE 或 ALTER VIEW 取消已存在或新的資料表屬性設定。
您可以使用資料表屬性來標記數據表,其中包含 SQL 未追蹤的資訊。
-
數據表選項的目的是將記憶體屬性傳遞至基礎記憶體,例如SERDE屬性至Hive。
表格選項是一個鍵值對,您可以在執行CREATE TABLE時進行初始化。 您無法
SET
或UNSET
資料表選項。
TBLPROPERTIES
在新數據表或檢視中設定一或多個數據表屬性。
您可以使用資料表屬性來標記數據表,其中包含 SQL 未追蹤的資訊。
語法
TBLPROPERTIES ( { property_key [ = ] property_val } [, ...] )
property_key
{ identifier [. ...] | string_literal }
參數
property_key
屬性鍵。 索引鍵可以包含一或多個 以點分隔的識別符 或字串常數。
屬性索引鍵必須是唯一的,而且區分大小寫。
property_val
屬性的值。 值必須是
BOOLEAN
、STRING
、INTEGER
或DECIMAL
常值。
範例
-- Create table with user defined table properties
> CREATE TABLE T(c1 INT) TBLPROPERTIES('this.is.my.key' = 12, this.is.my.key2 = true);
> SHOW TBLPROPERTIES T;
key value
---------------- -----
...
this.is.my.key 14
this.is.my.key2 false
...
SET TBLPROPERTIES
在現有的數據表或檢視中設定一或多個數據表屬性。
語法
SET TBLPROPERTIES ( { property_key [ = ] property_val } [, ...] )
property_key
{ identifier [. ...] | string_literal }
參數
property_key
屬性鍵。 鍵值可以包含一或多個以點分隔的識別符,或字串。
屬性索引鍵必須是唯一的,而且區分大小寫。
property_val
屬性的新值。 值必須是
BOOLEAN
、STRING
、INTEGER
或DECIMAL
常值。
範例
-- Alter the a table's table properties.
> ALTER TABLE T SET TBLPROPERTIES(this.is.my.key = 14, 'this.is.my.key2' = false);
> SHOW TBLPROPERTIES T;
key value
---------------- -----
...
this.is.my.key 14
this.is.my.key2 false
...
UNSET TBLPROPERTIES
從數據表或檢視中移除一或多個數據表屬性。
語法
UNSET TBLPROPERTIES [ IF EXISTS ] ( property_key [, ...] )
property_key
{ identifier [. ...] | string_literal }
參數
IF EXISTS
可選的子句,用於指示 Databricks SQL 當某些屬性索引鍵不存在時,不會引發錯誤。
property_key
要移除的屬性鍵。 鍵可以由一個或多個以點分隔的標識碼或字串常量組成。
屬性索引鍵區分大小寫。 如果
property_key
不存在,除非IF EXISTS
已指定,否則會引發錯誤。
範例
-- Remove a table's table properties.
> ALTER TABLE T UNSET TBLPROPERTIES(this.is.my.key, 'this.is.my.key2');
> SHOW TBLPROPERTIES T;
key value
-------------------------------- -----
... keys other that key and key2 ...
選項
在新數據表中設定一或多個數據表選項。
數據表選項的目的是將記憶體屬性傳遞至基礎記憶體,例如SERDE屬性至Hive。
指定 Delta Lake 資料表的數據表選項也會以數據表屬性的形式回應這些選項。
語法
OPTIONS ( { property_key [ = ] property_val } [, ...] )
property_key
{ identifier [. ...] | string_literal }
參數
property_key
屬性鍵 鍵可以由一個或多個 以點分隔的識別符號 或字串文字組成。
屬性索引鍵必須是唯一的,而且區分大小寫。
property_val
屬性的值。 值必須是
BOOLEAN
、STRING
、INTEGER
或DECIMAL
常值。在 Databricks SQL 和 Databricks Runtime 13.3 LTS 及以上版本中,
property_val
可以是常數表達式。
範例
-- Create table with user defined table option
-- The options appears with an `option.` prefix.
> CREATE TABLE T(c1 INT) OPTIONS(this.is.my.key = 'blue' || 'green');
> SHOW TBLPROPERTIES T;
key value
---------------- -----
...
option.this.is.my.key bluegreen
...
預留的資料表屬性鍵
Azure Databricks 會保留一些屬性索引鍵供自己使用,如果您嘗試使用這些密鑰,就會引發錯誤:
external
使用 CREATE EXTERNAL TABLE 建立外部數據表。
location
使用
LOCATION
和 ALTER TABLE 的 CREATE TABLE 子句來設定數據表位置。owner
使用
[SET] OWNER TO
和 ALTER TABLE 的 ALTER VIEW 語句來轉移表或檢視的擁有權。 SET 在 Databricks SQL 中可做為選擇性關鍵詞。provider
使用
USING
的 CREATE TABLE 子句來設定數據表的數據源
您不應該使用以識別符開頭 option
的屬性索引鍵。
此前綴標識將會在 SHOW TBLPROPERTIES中篩選掉。
前置 option
詞也用來顯示 數據表選項。
常用的 TBLPROPERTIES 和 OPTIONS 鍵
下列設定通常與 Delta Lake 搭配使用:
-
delta.appendOnly
:設定為true
以停用UPDATE
和DELETE
作業。 -
delta.dataSkippingNumIndexedCols
:設定為要收集和考慮統計數據的前置數據行數目。 -
delta.deletedFileRetentionDuration
:設置為間隔時間,例如'interval 7 days'
以控制何時允許刪除檔案VACUUM
。 -
delta.logRetentionDuration
:設定為一段時間,例如'interval 60 days'
,以控制時間旅行查詢的歷史保留時間。