數據表屬性和數據表選項

適用於:檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime

定義數據表和檢視的使用者定義標記。

  • 數據表屬性

    數據表屬性是一個索引鍵/值組,您可以在執行 CREATE TABLECREATE VIEW 時初始化。 您可以使用 ALTER TABLE 或 ALTER VIEW 來 UNSET 現有或 SET 新的或現有的數據表屬性。

    您可以使用資料表屬性來標記數據表,其中包含 SQL 未追蹤的資訊。

  • 數據表選項

    數據表選項的目的是將記憶體屬性傳遞至基礎記憶體,例如SERDE屬性至Hive。

    數據表選項是一個索引鍵/值組,您可以在執行 CREATE TABLE 時初始化。 您無法 SETUNSET 資料表選項。

TBLPROPERTIES

在新數據表或檢視中設定一或多個數據表屬性。

您可以使用資料表屬性來標記數據表,其中包含 SQL 未追蹤的資訊。

語法

TBLPROPERTIES ( { property_key [ = ] property_val } [, ...] )

property_key
  { identifier [. ...] | string_literal }

參數

  • property_key

    屬性索引鍵。 索引鍵可以包含一或多個 以點分隔的標識碼 ,或字串常值。

    屬性索引鍵必須是唯一的,而且區分大小寫。

  • property_val

    屬性的值。 值必須是 BOOLEANSTRINGINTEGERDECIMAL 常值。

範例

-- 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;
option.serialization.format     1
this.is.my.key  12
this.is.my.key2 true
transient_lastDdlTime   1649783569

SET TBLPROPERTIES

在現有的數據表或檢視中設定一或多個數據表屬性。

語法

SET TBLPROPERTIES ( { property_key [ = ] property_val } [, ...] )

property_key
  { identifier [. ...] | string_literal }

參數

  • property_key

    屬性索引鍵。 索引鍵可以包含一或多個 以點分隔的標識碼 ,或字串常值。

    屬性索引鍵必須是唯一的,而且區分大小寫。

  • property_val

    屬性的新值。 值必須是 BOOLEANSTRINGINTEGERDECIMAL 常值。

範例

-- 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;
option.serialization.format     1
this.is.my.key  14
this.is.my.key2 false
transient_lastDdlTime   1649783980

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;
option.serialization.format     1
transient_lastDdlTime   1649784415

OPTIONS

在新數據表中設定一或多個數據表選項。

數據表選項的目的是將記憶體屬性傳遞至基礎記憶體,例如SERDE屬性至Hive。

指定 Delta Lake 資料表的數據表選項也會以數據表屬性的形式回應這些選項。

語法

OPTIONS ( { property_key [ = ] property_val } [, ...] )

property_key
  { identifier [. ...] | string_literal }

參數

  • property_key

    屬性索引鍵。 索引鍵可以包含一或多個 以點分隔的標識碼 ,或字串常值。

    屬性索引鍵必須是唯一的,而且區分大小寫。

  • property_val

    屬性的值。 值必須是 BOOLEANSTRINGINTEGERDECIMAL 常值。

    在 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;
option.this.is.my.key bluegreen
option.serialization.format     2

保留的數據表屬性索引鍵

Azure Databricks 會保留一些屬性索引鍵供自己使用,如果您嘗試使用這些密鑰,就會引發錯誤:

  • external

    使用 CREATE EXTERNAL TABLE 建立外部數據表。

  • location

    LOCATION使用 ALTER TABLE 和 CREATE TABLE 的 子句來設定資料表位置。

  • owner

    [SET] OWNER TO使用 ALTER TABLEALTER VIEW 的 子句來轉移資料表或檢視表的擁有權。 SET 在 Databricks SQL 中可做為選擇性關鍵詞。

  • provider

    USING使用 CREATE TABLE子句來設定數據表的數據源

您不應該使用以識別符開頭 option 的屬性索引鍵。 此前置詞標識碼將會在 SHOW TBLPROPERTIES篩選掉。 前置 option 詞也用來顯示 數據表選項

常見的 TBLPROPERTIES 和 OPTIONS 索引鍵

下列設定通常與 Delta Lake 搭配使用:

  • delta.appendOnly:設定為 true 以停用 UPDATEDELETE 作業。
  • delta.dataSkippingNumIndexedCols:設定為要收集和考慮統計數據的前置數據行數目。
  • delta.deletedFileRetentionDuration:設定為間隔,例如 'interval 7 days' 控制允許刪除檔案的時機 VACUUM
  • delta.logRetentionDuration:設定為間隔,例如 'interval 60 days' 控制時間旅行查詢的歷程記錄保留時間長度。