Databricks Runtime 16.4 LTS 以降では、 DROP FEATURE Delta Lake テーブル機能が削除され、残りの機能をサポートする最小バージョンにテーブル プロトコルがダウングレードされます。 以前のバージョンの Databricks Runtime、OpenSharing、または外部 Delta Lake クライアントとの互換性を復元する場合にのみ使用します。
すべての機能を削除できるわけではありません。 サポートされているテーブル機能を参照してください。
Note
databricks Runtime 14.3 LTS 以降では、 DROP FEATURE のレガシ サポートを利用できます。 Databricks では、従来の動作に代わるすべての DROP FEATURE コマンドに Databricks Runtime 16.3 以降を使用することをお勧めします。 レガシー機能のドキュメントについては、Deltaテーブル機能の削除(レガシー)を参照してください。
Delta Lake 機能を削除する
Important
すべての DROP FEATURE 操作は、すべての同時書き込みと競合します。
ストリーミング読み取りは、テーブルメタデータを変更するコミットに遭遇すると失敗します。 影響を受けるストリームを再起動する必要があります。 推奨される方法については、「 構造化ストリーミングの運用に関する考慮事項」を参照してください。
Databricks Runtime 16.3 以降を使用し、ターゲットの Delta Lake テーブルに対する MODIFY 権限を持っている必要があります。 各 DROP FEATURE コマンドで削除できるテーブル機能は 1 つだけです。
テーブル機能を削除するには、次の構文を使用します。
ALTER TABLE <table-name> DROP FEATURE <feature-name>
詳細については、 ALTER TABLE をご覧ください。
Behavior
テーブルフィーチャーを削除すると、Delta Lake は次の変更をテーブルにアトミックにコミットします。
- テーブル機能を使用するテーブル プロパティをオフにします。
- 現在のテーブル バージョンからテーブル機能のすべてのトレースを削除するには、必要に応じて基になるデータ ファイルを書き換えます。
- リーダー クライアントがテーブル履歴を正しく読み取ることができるように、保護されたチェックポイントのセットを作成します。
- テーブル プロトコルにライター テーブル機能
checkpointProtectionを追加します。 - テーブル プロトコルを、残りのすべてのテーブル機能をサポートする最小のリーダーおよびライター バージョンにダウングレードします。 可能 な限り低いプロトコルを参照してください。
checkpointProtection テーブル機能
機能を削除すると、Delta Lake は、プロトコルのダウングレードを考慮して、テーブルの履歴のデータとメタデータを保護されたチェックポイントとして書き換えます。
ダウングレード後、このテーブルでは、廃止された機能のサポートをクライアントに要求しません。 保護されたチェックポイントと checkpointProtection 機能により、次の処理が実行されます。
- 削除されたテーブル機能をサポートするリーダー クライアントは、使用可能なすべてのテーブル履歴バージョンを読み取ることができます。
- 削除された機能をサポートしていないリーダー クライアントは、プロトコルダウングレードバージョンからテーブル履歴バージョンを前方に読み取ることができます。
- ライター クライアントは、プロトコルのダウングレード前に作成されたチェックポイントを変更しません。
-
checkpointProtectionはプロトコル ダウングレード チェックポイントを保護済みとしてマークし、テーブルメンテナンス操作はこれらのマーカーを考慮します。
各 DROP FEATURE コマンドで削除できるテーブル 機能は 1 つだけですが、テーブルの履歴に複数の保護されたチェックポイントと削除された機能を含めることができます。
Databricks ランタイムのすべてのバージョンでは、checkpointProtection テーブル機能がサポートされています。つまり、このテーブル機能は、Azure Databricksの読み取りまたは書き込みをブロックしません。
checkpointProtection は、OSS Delta Lake クライアントからの読み取り専用アクセスをブロックしません。 テーブルを完全にダウングレードし、 checkpointProtection テーブル機能を削除するには、 TRUNCATE HISTORYを使用する必要があります。 Databricks では、 checkpointProtectionをサポートしていない外部 Delta クライアントを含むテーブルに書き込む必要がある場合にのみ、このパターンを使用することをお勧めします。
レガシ クライアントのテーブル プロトコルを完全にダウングレードするを参照してください。
サポートされているテーブル機能
次の Delta Lake テーブル機能を削除できます。
-
catalogManaged。 カタログのコミットを参照してください。 -
checkConstraints。 「Azure Databricks の制約」を参照してください。 -
collations-preview。 Delta Lake の照合サポートを参照してください。 -
columnMapping。 「Delta Lake 列マッピングを使用して列の名前を変更および削除する」を参照してください。 -
deletionVectors。 Databricks の削除ベクトルを参照してください。 -
typeWidening。 「タイプ拡張」を参照してください。 -
v2Checkpoint。 「 クラシックにダウングレードする」を参照してください。 -
checkpointProtection。checkpointProtectionテーブル機能を参照してください。
他の Delta Lake テーブル機能を削除することはできません。
Important
Databricks では、運用環境データのリーダーまたはライター プロトコルをアップグレードする機能を有効にする前に、新しい機能との互換性のために依存ワークロードとシステムを常にテストすることをお勧めします。
次の点を考慮してください。
- テーブルから列マッピングを削除しても、パーティション テーブルのディレクトリ名で使用されるランダムなプレフィックスは削除されません。 「Delta Lake と Parquet のパーティション分割戦略の共有」について参照してください。
- 一部の Delta Lake 機能では、相互に依存する複数のテーブルフィーチャが有効になり、依存するフィーチャを削除できなくなる可能性があります。 削除できない機能をロールバックすることはできません。
レガシ クライアントのテーブル プロトコルを完全にダウングレードする
checkpointProtection テーブル機能をサポートしていない書き込みで外部 Delta Lake クライアントを使用する場合は、TRUNCATE HISTORYを使用してテーブル プロトコルを完全にダウングレードし、削除されたテーブル機能のすべてのトレースを削除する必要があります。
TRUNCATE HISTORYを実行すると、24 時間より前のすべてのテーブル履歴が削除されます。
Databricks では、DROP FEATUREを実行する前に、TRUNCATE HISTORYの既定の動作をテストすることをお勧めします。
完全なダウングレードには、少なくとも 24 時間離れた 2 つの手順が必要です。
手順 1: テーブル機能を削除する準備をする
ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY コマンドを実行します。 このコマンドは、次のコマンドを適用します。
- テーブルのプロパティを更新して、機能をオフにします。
- フィーチャーに関連付けられているテーブル プロパティを既定値にリセットします。
- 更新されたプロパティを反映するために、必要に応じてデータ ファイルとメタデータ ファイルを書き換える。
- プロトコルのダウングレードを完了するために、もう一度実行する前に少なくとも 24 時間待つ必要があるメッセージを返します。
機能をオフにした後は、プロトコルのダウングレードを完了する前にターゲット テーブルへの書き込みを続行できますが、削除するテーブル機能を使用することはできません。
Note
テーブルをこの状態のままにした場合、テーブルに対する操作ではテーブル機能は使用されませんが、プロトコルでは引き続きテーブル機能がサポートされます。 最後のダウングレード手順を完了するまで、テーブル機能をサポートしていない Delta クライアントはテーブルを読み取ることはできません。
手順 2: プロトコルをダウングレードしてテーブル機能を削除する
少なくとも 24 時間後に、 ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY コマンドをもう一度実行します。 このコマンドは、次のコマンドを適用します。
- テーブルの履歴を保持しきい値まで切り詰めます。
- 残りのトランザクションでこの機能が使用されていないことを確認します。
- 機能を削除し、残りの機能をサポートする最小バージョンにテーブル プロトコルをダウングレードします。
Important
ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY を実行すると、24 時間以上前のすべてのトランザクション ログ データが削除されます。 このコマンドを使用してテーブル プロトコルをダウングレードした後は、テーブル履歴やタイム トラベルにアクセスできません。
Delta Lake の機能の互換性とプロトコルに関する記事を参照してください。