Drop Delta テーブルの機能
プレビュー
Delta テーブル機能の削除とプロトコル バージョンのダウングレードのサポートは、Databricks Runtime 14.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 テーブル機能を削除できます。
checkConstraints
. 「Databricks の制約」を参照してください。collations-preview
. Delta Lake の照合サポートを参照してください。columnMapping
. 「Delta Lake 列マッピングを使用した列の名前変更と削除」を参照してください。deletionVectors
. 削除ベクトルとはを参照してください。typeWidening-preview
。タイプ拡幅を参照してください。v2Checkpoint
. リキッドクラスタリングを使用したテーブルの互換性を参照してください。
他の Delta テーブル機能は削除できません。
一部の Delta Lake 機能では、複数のテーブル機能が有効になります。 一部のテーブル機能は他のテーブル機能に依存しており、従属テーブル機能のドロップをブロックする場合があります。 一部のテーブル機能は削除できないため、一部の Delta Lake 機能の有効化をロールバックできません。
Databricks 本番運用データのリーダーまたはライタープロトコルをアップグレードする機能を有効にする前に、新しい機能との互換性について、依存するワークロードとシステムを常にテストすることをお勧めします。
テーブル機能を有効にしてレガシー機能を削除
DROP FEATURE
コマンドには、テーブル機能の読み取りと書き込みをサポートするプロトコル・バージョンが必要です。columnMapping
や checkConstraints
などのDelta機能は、以前のプロトコル バージョンでサポートされていました。テーブルで有効になっている他の機能によっては、これらの機能を削除する前にプロトコル バージョンをアップグレードする必要がある場合があります。
次のコマンドを使用して、テーブルリーダーとライターのバージョンをアップグレードし、列マッピングを削除してプロトコルをダウングレードできます。
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.minReaderVersion' = '3',
'delta.minWriterVersion' = '7'
)
Delta テーブル機能はどのように削除されますか?
Deltaテーブル機能はリーダーとライターのプロトコルを表すため、完全に削除するには、トランザクション・ログに完全に存在しない必要があります。フィーチャの削除は 2 つのステージで行われ、完了までに経過する時間が必要です。 機能の削除の詳細は機能によって異なりますが、次のセクションでは一般的な概要について説明します。
テーブル機能を削除する準備をする
最初のステージでは、ユーザーはテーブル機能を削除する準備をします。 このステージで何が起こるかを次に示します。
- ユーザーが
DROP FEATURE
コマンドを実行します。 - テーブル機能を明示的に有効にするテーブル プロパティには、機能を無効にするように設定された値があります。
- 削除された機能に関連付けられた動作を制御するテーブル プロパティには、機能が導入される前にオプションがデフォルト値に設定されています。
- 必要に応じて、更新されたテーブルのプロパティを考慮して、データファイルとメタデータファイルが書き換えられます。
- コマンドの実行が終了し、機能の削除を続行するには 24 時間待つ必要があることをユーザーに通知するエラー メッセージが返されます。
最初に機能を無効にした後は、プロトコルのダウングレードを完了する前に対象テーブルへの書き込みを続けることはできますが、削除するテーブル機能は使用できません。
テーブルをこの状態のままにすると、テーブルに対する操作はテーブル機能を使用しませんが、プロトコルは引き続きテーブル機能をサポートします。 最後のダウングレード手順を完了するまで、テーブル機能を理解していない Delta クライアントはテーブルを読み取ることができません。
プロトコルをダウングレードし、テーブル機能を削除します
テーブル機能を削除するには、機能に関連付けられているすべてのトランザクション履歴を削除し、プロトコルをダウングレードする必要があります。
- 少なくとも 24 時間が経過した後、ユーザーは
TRUNCATE HISTORY
句を使用してDROP FEATURE
コマンドを再度実行します。 - クライアントは、指定された保有期間のしきい値内のトランザクションがテーブル機能を使用しないことを確認し、テーブル履歴をそのトレスホールドに切り捨てます。
- プロトコルがダウングレードされ、テーブル機能がドロップされます。
- テーブルに存在するテーブル機能をレガシ プロトコル バージョンで表すことができる場合、テーブルの
minReaderVersion
とminWriterVersion
は、Delta テーブルで使用されている残りのすべての機能を正確にサポートする最も低いバージョンにダウングレードされます。
ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
を実行すると、24 時間以上経過したすべてのトランザクション ログ データが削除されます。Delta テーブル機能を削除した後は、テーブルの履歴やタイムトラベルにアクセスできなくなります。
「Databricks で Delta Lake 機能の互換性を管理する方法」を参照してください。