Delta テーブル機能の削除

重要

Delta テーブル機能の削除とプロトコル バージョンのダウングレードは、Databricks Runtime 14.1 以降でのパブリック プレビュー段階にあります。

Azure Databricks では、テーブル機能を削除するためのサポートが制限されています。 テーブル機能を削除するには、次の処理を行う必要があります。

  • テーブル機能を使用するテーブル プロパティを無効にします。
  • テーブルの基になっているデータ ファイルから、テーブル機能のすべてのトレースを削除します。
  • テーブル機能を使用するトランザクション エントリをトランザクション ログから削除します。
  • テーブル プロトコルをダウングレードします。

サポートされている場合、この機能は、以前のバージョンの Databricks Runtime、Delta Sharing、またはその他の Delta Lake リーダーまたはライター クライアントとの互換性をサポートするためだけに使用する必要があります。

重要

すべての DROP FEATURE 操作は、すべての同時書き込みと競合します。

ストリーミング読み取りは、テーブルメタデータを変更するコミットに遭遇すると失敗します。 ストリームを継続したい場合は、再起動する必要があります。 推奨される方法については、「Azure Databricks での構造化ストリーミング アプリケーションの運用に関する考慮事項」を参照してください。

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 などの Delta 機能は、以前のプロトコル バージョンでサポートされていました。 テーブルで有効になっている他の機能によっては、これらの機能を削除する前にプロトコル バージョンのアップグレードが必要になる場合があります。

次のコマンドを使用してテーブル リーダーとライターのバージョンをアップグレードできます。これにより、列マッピングを削除し、プロトコルをダウングレードできます:

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

Delta テーブル機能はどのように削除されますか?

Delta テーブル機能はリーダー プロトコルとライター プロトコルで表されているため、完全に削除するには、トランザクション ログにまったく存在しない状態にする必要があります。 機能の削除は 2 段階で行われ、完了するまで時間が必要です。 機能の削除の詳細は機能によって異なりますが、次のセクションでは一般的な概要を示します。

テーブル機能を削除する準備をする

第 1 段階では、ユーザーはテーブル機能を削除する準備をします。 この段階で起こることを次に説明します。

  1. ユーザーが DROP FEATURE コマンドを実行します。
  2. テーブル機能を明示的に有効にするテーブル プロパティには、機能を無効にするための値が設定されています。
  3. 削除された機能に関連付けられた動作を制御するテーブル プロパティには、機能が導入される前に既定値に設定されたオプションがあります。
  4. 必要に応じて、更新されたテーブル プロパティを適用してデータ ファイルとメタデータ ファイルが書き換えられます。
  5. コマンドの実行が完了し、機能の削除を続けるには 24 時間待機する必要があることをユーザーに通知するエラー メッセージが返されます。

最初に機能を無効にした後、プロトコルのダウングレード完了前は引き続きターゲット テーブルへの書き込みができますが、削除するテーブル機能を使用することはできません。

Note

テーブルをこの状態のままにした場合、テーブルに対する操作でテーブル機能は使用されませんが、プロトコルはテーブル機能を引き続きサポートします。 ダウングレードの最後のステップを完了するまで、テーブル機能を理解しない Delta クライアントによるテーブルの読み取りはできません。

プロトコルをダウングレードしてテーブル機能を削除する

テーブル機能を削除するには、その機能に関連付けられているすべてのトランザクション履歴を削除し、プロトコルをダウングレードする必要があります。

  1. 少なくとも 24 時間が経過した後、ユーザーは TRUNCATE HISTORY 句を使用して DROP FEATURE コマンドを再度実行します。
  2. クライアントは、指定された保持しきい値内のトランザクションでテーブル機能が使用されていないことを確認したうえで、そのしきい値までテーブル履歴を切り捨てます。
  3. プロトコルがダウングレードされ、テーブル機能が削除されます。
  4. テーブルに存在するテーブル機能をレガシ プロトコル バージョンで表すことができる場合、テーブルの minReaderVersionminWriterVersion は、Delta テーブルで使用されている残りの機能を正確にすべてサポートする最小バージョンにダウングレードされます。

重要

ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY を実行すると、24 時間以上前のすべてのトランザクション ログ データが削除されます。 Delta テーブル機能を削除した後は、テーブル履歴やタイム トラベルにアクセスできません。

Azure Databricks で Delta Lake 機能の互換性を管理する方法は?」を参照してください。