共用方式為


使用差異數據表的數據列追蹤

Delta Lake 數據列追蹤可讓 Azure Databricks 追蹤 Delta 數據表中的數據列層級歷程。 具體化檢視的某些累加式更新需要這項功能。

重要

Delta Lake 數據列追蹤可在 Databricks Runtime 14.1 和更新版本中使用。

數據列追蹤是數據表功能,並使用比某些 Delta Lake 用戶端更高的數據表寫入器通訊協定。 數據表通訊協定版本無法降級,且已啟用數據列追蹤的數據表無法由不支援所有已啟用 Delta 寫入器通訊協定數據表功能的 Delta Lake 用戶端寫入。 請參閱 Azure Databricks 如何管理 Delta Lake 功能相容性?

啟用數據列追蹤

您必須藉由設定資料表屬性 delta.enableRowTracking = true來明確啟用資料列追蹤。

您可以在建立資料表期間執行此動作,如下列範例所示:

CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;

您可以改變現有的資料表來啟用資料列追蹤,如下列範例所示:

ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);

重要

在現有的數據表上啟用數據列追蹤,會自動將數據列標識符和數據列認可版本指派給數據表中的所有現有數據列。 此程式可能會導致建立多個新版本的數據表,而且可能需要很長的時間。

複製 Delta 數據表會建立個別的歷程記錄,因此複製數據表上的數據列標識碼和數據列認可版本不符合原始數據表中的數據列標識碼。

數據列追蹤元數據欄位的架構為何?

數據列追蹤會將兩個隱藏的元數據欄位新增至數據表。 您可以明確地將這些欄位新增至查詢以傳回值。

資料行名稱 類型 說明
_metadata.row_id Long 數據列的唯一標識碼。 每當使用 MERGEUPDATE 語句修改數據列時,數據列就會保留相同的標識碼。
_metadata.row_commit_version Long 上次插入或更新數據列的差異記錄檔或數據表版本。 每當使用 MERGEUPDATE 語句修改數據列時,就會指派新版本。

某些作業會使用事務歷史記錄儲存這些元數據欄位。 在已啟用數據列追蹤的數據表上執行 OPTIMIZEREORG 作業會重寫數據檔來儲存這些欄位。

停用數據列追蹤

您可以將資料表屬性設定為 false,以停用資料列追蹤。

ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);

重要

停用數據列追蹤並不會移除對應的數據表功能,也不會降級數據表通訊協定版本。 它也不會從目標數據表中移除元數據欄位。

停用數據列追蹤之後,所產生的數據列標識符就不再可靠,無法追蹤唯一的數據列。

限制

讀取變更數據摘要時,無法存取數據列標識碼和數據列認可版本元數據欄位。 請參閱 在 Azure Databricks 上使用 Delta Lake 變更數據摘要。