Delta テーブル機能の削除
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
.「 テーブルと liquid クラスターの互換性」を参照してください。
他の Delta テーブル機能を削除することはできません。
テーブル機能を有効にしてレガシー機能を削除
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
コマンドを再度実行します。クライアントは、指定された保持しきい値のトランザクションでテーブル機能を使用していないことを確認し、テーブル履歴をその treshold に切り捨てます。
プロトコルがダウングレードされ、テーブル機能が削除されます。
テーブルに存在するテーブル機能がレガシ プロトコル バージョンで表すことができる場合、テーブルの
minReaderVersion
とminWriterVersion
は、Delta テーブルで使用されている残りのすべての機能を正確にサポートする最も低いバージョンにダウングレードされます。
重要
ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
を実行すると、24 時間より古いすべてのトランザクション ログ データが削除されます。Delta テーブル機能を削除すると、テーブル履歴やタイムトラベルにアクセスできなくなります。
「 Databricks で Delta Lake 機能の互換性を管理する方法」を参照してください。