資料表屬性和資料表選項
適用於: Databricks SQL Databricks Runtime
定義數據表和檢視的使用者定義標記。
-
數據表屬性是一個索引鍵/值組,您可以在執行 CREATE TABLE 或 CREATE VIEW 時初始化。 您可以使用 ALTER TABLE 或 ALTER VIEW 來 UNSET 現有或 SET 新的或現有的數據表屬性。
您可以使用資料表屬性來標記數據表,其中包含 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 ...
OPTIONS
在新數據表中設定一或多個數據表選項。
數據表選項的目的是將記憶體屬性傳遞至基礎記憶體,例如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'
控制時間旅行查詢的歷程記錄保留時間長度。