Delta Lake に変換する

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

Unity Catalog では、その管理下にある外部の場所に格納された Parquet テーブルと Iceberg テーブルについて、SQL コマンド CONVERT TO DELTA がサポートされます。

Unity Catalog で既存の Parquet データ ファイルを外部テーブルとして構成し、それを Delta Lake に変換することで、Databricks Lakehouse のすべての機能が使用できるようになります。

技術ドキュメントについては、「CONVERT TO DELTA」を参照してください。

外部の場所にある 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 型の切り捨てられた列を扱うことができます。
    • Azure Databricks では、decimal 型の切り捨てられた列の処理はサポートされていません。

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

Note

Unity Catalog には、Azure Data Lake Storage Gen2 が必要です。

CONVERT TO DELTA parquet.`abfss://container@storageAccount.dfs.core.windows.net/parquet-data`;

CONVERT TO DELTA iceberg.`abfss://container@storageAccount.dfs.core.windows.net/iceberg-data`;

変換されたテーブルを外部テーブルとして Unity Catalog に読み込むには、外部の場所に対する CREATE TABLES アクセス許可が必要です。

Note

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

Unity Catalog でマネージド テーブルと外部テーブルを Delta Lake に変換する

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

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

外部 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);