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