Delta テーブル機能の削除

プレビュー

Delta テーブル機能の削除とプロトコル バージョンのダウングレードのサポートは、 Databricks Runtime14.1 以降の パブリック プレビュー 段階です。

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

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

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

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

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

テーブル機能の削除の準備

最初の段階では、ユーザーはテーブル機能を削除する準備をします。 次に、この段階で何が起こるかについて説明します。

  1. ユーザーが DROP FEATURE コマンドを実行します。

  2. テーブル機能を明示的に有効にするテーブル プロパティには、機能を無効にする値が設定されています。

  3. ドロップされたフィーチャに関連付けられた動作を制御するテーブル プロパティには、フィーチャが導入される前のオプションがデフォルト値に設定されています。

  4. 必要に応じて、データ ファイルとメタデータ ファイルは、更新されたテーブル プロパティに従って書き換えられます。

  5. コマンドは実行を終了し、機能の削除を続行するには 24 時間待つ必要があることをユーザーに通知するエラー メッセージを返します。

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

注:

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

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

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

  1. 少なくとも 24 時間が経過すると、ユーザーは TRUNCATE HISTORY 句を使用して DROP FEATURE コマンドを再度実行します。

  2. クライアントは、指定された保持しきい値のトランザクションでテーブル機能を使用していないことを確認し、テーブル履歴をその treshold に切り捨てます。

  3. プロトコルがダウングレードされ、テーブル機能が削除されます。

  4. テーブルに存在するテーブル機能がレガシ プロトコル バージョンで表すことができる場合、テーブルの minReaderVersionminWriterVersion は、Delta テーブルで使用されている残りのすべての機能を正確にサポートする最も低いバージョンにダウングレードされます。

重要

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

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