Delta Lake に変換

CONVERT TO DELTA SQL コマンドは、Parquet テーブルと Iceberg テーブルから Delta Lake テーブルへの 1 回限りの変換を実行します。Parquet テーブルまたは Iceberg テーブルを Delta Lake に増分変換する方法については、「 Parquet テーブルと Iceberg テーブルを Delta Lake に増分複製する」を参照してください。

Unity Catalog は、 Unity Catalog によって管理される外部ロケーションに格納されている Parquet テーブルと Iceberg テーブルに対して CONVERT TO DELTA SQL コマンドをサポートしています。

既存の Parquet データ ファイルを Unity Catalog の外部テーブルとして構成し、それらを Delta Lake に変換して、Databricks レイクハウスのすべての機能のロックを解除できます。

技術文書については、 デルタに変換を参照してください。

外部ロケーションにある Parquet ファイルまたは Iceberg ファイルのディレクトリを Delta Lake に変換する

  • Iceberg テーブルの変換は パブリック プレビュー段階です。

  • Iceberg テーブルの変換は、 Databricks Runtime 10.4 以降でサポートされています。

  • Iceberg メタストア テーブルの変換はサポートされていません。

  • パーティションの進化 を経験した Iceberg テーブルの変換はサポートされていません。

  • 更新、削除、またはマージが発生した Iceberg 読み取り時のマージ テーブルの変換はサポートされていません。

  • 切り捨てられた列で定義されたパーティションを持つ Iceberg テーブルを変換する場合の制限事項を次に示します。

    • Databricks Runtime 12.2 LTS 以前では、サポートされる切り捨てられた列の型はstringのみです。

    • Databricks Runtime 13.3 LTS 以降では、 stringlong 、またはint型の切り捨てられた列を操作できます。

    • Databricks では、型 decimalの切り捨てられた列の操作はサポートされていません。

Parquet データ ファイルのディレクトリを Delta Lake テーブルに変換できるのは、ストレージの場所に対する書き込みアクセス権がある限りです。Unity Catalog を使用したアクセスの構成については、「 Unity Catalog を使用してクラウド オブジェクト ストレージに接続する」を参照してください。

CONVERT TO DELTA parquet.`s3://my-bucket/parquet-data`;

CONVERT TO DELTA iceberg.`s3://my-bucket/iceberg-data`;

変換されたテーブルを外部テーブルとして Unity Catalogに読み込むには、外部ロケーションに対する CREATE TABLES 権限が必要です。

Databricks Runtime 11.3 LTS 以降では、 CONVERT TO DELTAメタストアに登録されたテーブルのパーティション情報を自動的に推測するため、パーティションを手動で指定する必要がなくなります。

管理対象表と外部表を Unity Catalog Delta L ake に変換する

Unity Catalog は外部テーブルの多くの形式をサポートしていますが、マネージド テーブルの Delta Lake のみをサポートします。 Parquet マネージ テーブルをマネージ Unity Catalog Delta Lake テーブルに直接変換するには、「 テーブルを Unity Catalog マネージド テーブルにアップグレードする」を参照してください。

外部 Parquet テーブルを Unity Catalogにアップグレードするには、「 単一の外部テーブルを Unity Catalogにアップグレードする」を参照してください。

外部 Parquet テーブルを Unity Catalogに登録したら、それを外部 Delta Lake テーブルに変換できます。 Parquet テーブルがパーティション分割されている場合は、パーティション分割情報を提供する必要があることに注意してください。

CONVERT TO DELTA catalog_name.database_name.table_name;

CONVERT TO DELTA catalog_name.database_name.table_name PARTITIONED BY (date_updated DATE);