共用方式為


刪除 Delta 表格功能

重要

支持卸除 Delta 表功能和降級通訊協定版本,目前在 Databricks Runtime 14.1 和以上版本的公開預覽 中提供。

Azure Databricks 對於刪除表格功能提供有限的支援。 若要卸除數據表功能,必須執行下列動作:

  • 停用使用表格功能的表格屬性。
  • 從與資料表相關的數據檔中移除所有資料表功能的痕跡。
  • 從事務歷史記錄中移除使用數據表功能的交易專案。
  • 降低表格協定的級別。

如果支援,您應該只使用這項功能來支援與舊版 Databricks Runtime 版本、Delta Sharing 或其他 Delta Lake 讀取器或寫入器用戶端的相容性。

重要

所有 DROP FEATURE 作業都會與所有並行寫入衝突。

串流讀取在遇到更改數據表元數據的提交時會失敗。 如果您想要讓資料流程繼續,您必須加以重新啟動。 如需建議的方法,請參閱 結構化串流的生產考慮。

如何刪除 Delta 資料表功能?

若要移除 Delta 資料表功能,請執行 ALTER TABLE <table-name> DROP FEATURE <feature-name> [TRUNCATE HISTORY] 命令。 請參閱 ALTER TABLE

您必須使用 Databricks Runtime 14.1 或更新版本,且在目標 Delta 數據表上具有 MODIFY 許可權。

可以卸除哪些 Delta 數據表功能?

您可以卸除下列 Delta 資料表功能:

您無法移除其他 Delta 資料表功能

啟用表格功能以淘汰舊版功能

DROP FEATURE 命令需要支援資料表功能讀取和寫入的通訊協定版本。 舊版通訊協定支援和 columnMappingcheckConstraints差異功能。 視數據表上啟用的其他功能而定,您可能需要升級通訊協定版本,才能卸除這些功能。

您可以使用下列命令來升級資料表讀取器和寫入器版本,這可讓您卸載資料行對應並降級通訊協定:

ALTER TABLE <table-name> SET TBLPROPERTIES (
  'delta.minReaderVersion' = '3',
  'delta.minWriterVersion' = '7'
)

如何捨棄 Delta 數據表功能?

由於 Delta 數據表功能代表讀取器和寫入器通訊協定,因此必須完全不在事務歷史記錄中,才能完整移除。 卸除功能會在兩個階段中發生,且需要在完成之前經過時間。 功能移除的詳細數據會因功能而異,但下一節提供一般概觀。

準備刪除表格功能

在第一個階段中,用戶準備卸除數據表功能。 下列說明在這個階段中會發生什麼事:

  1. 用戶執行 DROP FEATURE 命令。
  2. 特別用來啟用資料表功能的屬性,其值已設定為停用該功能。
  3. 控制與卸除功能相關聯行為的數據表屬性,在引進功能之前,選項會設定為預設值。
  4. 視需要,數據與元數據檔案會重新撰寫,以遵守更新的數據表屬性。
  5. 命令會完成執行,並傳回錯誤訊息,告知使用者他們必須等候 24 小時才能繼續移除功能。

先停用功能之後,您可以繼續寫入目標數據表,再完成通訊協議降級,但無法使用您要移除的數據表功能。

注意

如果您讓數據表處於這個狀態,則數據表的作業不會使用數據表功能,但通訊協定仍支持數據表功能。 在您完成最終降級步驟之前,無法理解表格功能的 Delta 客戶端將無法讀取該表格。

降級通訊協定並卸除數據表功能

若要卸除數據表功能,您必須移除與功能相關聯的所有交易歷程記錄,並降級通訊協定。

  1. 經過至少 24 小時之後,使用者就會使用 DROP FEATURE 子句再次執行TRUNCATE HISTORY命令。
  2. 用戶端確認在指定的保留閾值內沒有任何交易使用數據表功能,然後將數據表的歷史記錄截斷到該閾值。
  3. 通訊協定已降級,移除表格功能。
  4. 如果數據表中存在的數據表功能可以由舊版通訊協定版本表示,數據表的 minReaderVersionminWriterVersion 會降級為支援 Delta 數據表所使用之所有剩餘功能的最低版本。

重要

執行 ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY 會移除超過 24 小時的所有事務歷史記錄數據。 卸除 Delta 資料表功能之後,您無法存取資料表歷程記錄或時間移動。

請參閱 Azure Databricks 如何管理 Delta Lake 功能相容性?