メインコンテンツまでスキップ

Delta Lake テーブル機能の削除およびテーブル プロトコルのダウングレード

Databricks Runtime 16.4 LTS 以降では、DROP FEATURE は Delta Lake テーブル機能を削除し、残りの機能をサポートする最低バージョンにテーブルプロトコルをダウングレードします。これは、以前の Databricks Runtime バージョン、OpenSharing、または外部 Delta Lake クライアントとの互換性を復元する場合にのみ使用してください。

すべての機能を削除できるわけではありません。サポートされているテーブル機能を参照してください。

注記

DROP FEATURE のレガシ サポートは、Databricks Runtime 14.3 LTS 以降で使用できます。Databricks では、すべての DROP FEATURE コマンドに Databricks Runtime 16.3 以降を使用することをお勧めします。これにより、従来の動作が置き換えられます。従来の機能のドキュメントについては、Delta テーブル機能のドロップ (レガシー)」を参照してください。

Delta Lake 機能の削除

重要

すべての DROP FEATURE オペレーションは、すべての並列書き込み操作と競合します。

ストリーミング読み取りは、テーブルのメタデータを変更するコミットに遭遇すると失敗します。影響を受けるストリームを再起動する必要があります。推奨される方法については、「構造化ストリーミングの本番運用に関する考慮事項」を参照してください。

Databricks Runtime 16.3 以降を使用し、ターゲットの Delta Lake テーブルに対して MODIFY の権限が必要です。各 DROP FEATURE コマンドで、1つのテーブルフィーチャーのみをドロップできます。

次の構文を使用すると、テーブル機能を削除できます。

SQL
ALTER TABLE <table-name> DROP FEATURE <feature-name>

詳細については、ALTER TABLEを参照してください。

動作

テーブル機能を削除すると、Delta Lake はテーブルに以下の変更をアトミックにコミットします:

  • テーブル機能を使用するテーブルプロパティをオフにします。
  • 必要に応じて、基になるデータファイルを書き換えて、現在のテーブルバージョンからテーブル機能のすべての痕跡を削除します。
  • リーダークライアントがテーブル履歴を正しく読み取れるように、保護されたチェックポイントのセットを作成します。
  • テーブルプロトコルにライターテーブル機能 checkpointProtection を追加します。
  • テーブル・プロトコルを、残りのすべてのテーブル機能をサポートする最も低いリーダーおよびライター・バージョンにダウングレードします。可能な限り低いプロトコルを参照してください。

checkpointProtectionテーブルの機能

機能を削除すると、Delta Lake は、プロトコルのダウングレードに準拠するため、テーブルの履歴にあるデータとメタデータを保護されたチェックポイントとして書き換えます。

ダウングレード後、テーブルは、ドロップされた機能をサポートするようにクライアントに要求しません。保護されたチェックポイントとcheckpointProtection機能は、以下を達成します:

  • ドロップされたテーブル機能をサポートするリーダー クライアントは、利用可能なすべてのテーブル履歴バージョンを読み取ることができます。
  • ドロップされた機能をサポートしていないリーダークライアントは、プロトコルダウングレードバージョン以降のテーブル履歴バージョンを読み取ることができます。
  • ライタークライアントは、プロトコルダウングレード前に作成されたチェックポイントを変更しません。
  • checkpointProtection プロトコルダウングレードチェックポイントを保護済みとしてマークし、テーブルメンテナンスオペレーションはそれらのマーカーに従います。

それぞれのDROP FEATUREコマンドで1つのテーブル機能しか削除できませんが、テーブル履歴には、複数の保護されたチェックポイントや削除された機能を持つことができます。

すべてのDatabricks RuntimeバージョンはcheckpointProtectionテーブル機能をサポートしており、これはこのテーブル機能がDatabricksでの読み取りまたは書き込みをブロックしないことを意味します。

checkpointProtection OSS Delta Lake クライアントからの読み取り専用アクセスをブロックしません。テーブルを完全にダウングレードし、checkpointProtection テーブル機能を削除するには、TRUNCATE HISTORY を使用する必要があります。Databricks は、checkpointProtection をサポートしない外部 Delta クライアントでテーブルに書き込む必要がある場合にのみ、このパターンを使用することをお勧めします。レガシー クライアントのテーブル プロトコルを完全にダウングレードする を参照してください。

サポートされているテーブル機能

次の Delta Lake テーブル機能を削除できます:

他のDelta Lake テーブル機能は削除できません。

重要

Databricksは、本番運用データのリーダーまたはライタープロトコルをアップグレードする機能を有効にする前に、常に依存するワークロードとシステムを新機能との互換性についてテストすることをお勧めします。

以下の点を考慮してください。

  • テーブルからカラムマッピングを解除しても、パーティションテーブルのディレクトリ名に使用されているランダムなプレフィックスは削除されません。「Delta Lake と Parquet はパーティション分割戦略を共有しますか?」を参照してください。
  • 一部のDelta Lake機能は、互いに依存する複数のテーブル機能を有効にするため、依存する機能を削除できない可能性があります。ドロップできない機能をロールバックすることはできません。

レガシー クライアント向けにテーブルプロトコルを完全にダウングレード

checkpointProtection テーブル機能をサポートしない書き込みで外部 Delta Lake クライアントを使用している場合は、TRUNCATE HISTORY を使用してテーブルプロトコルを完全にダウングレードし、削除されたテーブル機能のすべての痕跡を削除する必要があります。TRUNCATE HISTORY を実行すると、24時間より古いすべてのテーブル履歴が削除されます。

Databricks では、TRUNCATE HISTORY を実行する前に、DROP FEATURE のデフォルトの動作をテストすることをお勧めします。

完全なダウングレードには2つのステップが必要で、少なくとも24時間間隔を空ける必要があります。

ステップ1:テーブル機能の削除を準備する

ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY コマンドを実行します。コマンドは以下を適用します。

  • テーブルプロパティを更新して、機能をオフにします。
  • この機能に関連付けられているテーブル プロパティをデフォルトにリセットします。
  • 更新されたプロパティを反映するために、必要に応じてデータファイルとメタデータファイルを書き換えます。
  • プロトコルのダウングレードを完了するために、再度実行する前に少なくとも24時間待機する必要があるというメッセージを返します。

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

注記

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

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

24時間以上経過後、ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORYコマンドを再度実行してください。コマンドは以下を適用します。

  • テーブル履歴をリテンションしきい値まで切り詰めます。
  • 残りのトランザクションがその機能を使用していないことを確認します。
  • この機能を削除し、残りのすべての機能をサポートする最低バージョンにテーブルプロトコルをダウングレードします。
重要

ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY を実行すると、24時間以上経過したすべてのトランザクションログデータが削除されます。このコマンドを使用してテーブルプロトコルをダウングレードした後、テーブル履歴またはタイムトラベルにアクセスできません。

Delta Lake 機能の互換性とプロトコルを参照してください。