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

Apache Iceberg v3の機能を使用する

Apache Iceberg v3 はクエリーパフォーマンスを向上させ、Unity Catalog で Iceberg 読み取りを行う Iceberg または Delta Lake を使用したマネージドテーブル向けの新しい機能を提供します。

Iceberg v3 の主な機能は次のとおりです。

要件

地理空間型などのIceberg v3機能でマネージドテーブルを使用するには、次の要件を満たす必要があります。

  • Unity Catalog が有効になっているワークスペース。
  • Databricks Runtime 18 LTS 以降。

Iceberg v3で新しいテーブルを作成する

Iceberg 読み取りが有効なマネージド Delta Lake テーブルとマネージド Iceberg テーブルの両方に対して、Iceberg v3 を有効にした新しいテーブルを作成します。

Iceberg読み取りとIceberg v3を有効にしたDelta Lakeを使用して新しいマネージドテーブルを作成するには、次のSQLコマンドを使用します。

SQL
CREATE OR REPLACE TABLE main.schema.table (c1 INT) TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'iceberg',
'delta.enableIcebergCompatV3' = 'true'
);

Icebergの読み取りの情報については、「IcebergクライアントでDelta Lakeテーブルを読み取る」を参照してください。

既存のテーブルを Iceberg v3 にアップグレードする

既存のテーブルを Iceberg v3 にアップグレードするには、次の操作を行います。

  1. テーブル上の任意の v3 機能を有効にします。
  2. テーブルの Iceberg 形式のバージョンを 3 に設定します (以下に表示)。
備考

テーブルは、 RESTOREを使用してテーブルを v3 へのアップグレード前のテーブル バージョンに復元することにより、v3 から v2 にダウングレードできます。テーブルを以前のバージョンにダウングレードする方法を参照してください。

Iceberg読み取りを使用するDelta Lakeのマネージドテーブルをv3にアップグレードするには、次のコマンドを使用します:

SQL
ALTER TABLE catalog.schema.table SET TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.enableIcebergCompatV2' = 'false'
);

削除ベクトルを有効にする

削除ベクトルは行レベルのデータ変更操作を最適化し、すべての新しい Iceberg v3 テーブルでデフォルトで有効になっています。Databricks の削除ベクトルを参照してください。

注記

既存の Iceberg テーブルで削除ベクトルを有効にすると、Iceberg 形式のバージョンが 3 にアップグレードされます。

Iceberg読み取り、Iceberg v3、および削除ベクトルを有効にしてDelta Lakeを使用する新しいマネージドテーブルを作成するには、次のテーブルプロパティを設定します:

SQL
CREATE TABLE catalog.schema.table (c1 INT) TBLPROPERTIES(
'delta.enableDeletionVectors' = 'true',
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);

VARIANTデータ型を使用する

VARIANT データ型を使用すると、半構造化データを保存およびクエリできます。

注記

既存の Iceberg テーブルで VARIANT を使用すると、Iceberg 形式のバージョンが 3 にアップグレードされます。

Iceberg 読み取りと VARIANT 列を備えた Delta Lake を使用して新しいマネージドテーブルを作成するには、次の手順を実行します。

SQL
CREATE TABLE catalog.schema.deltaTable (col VARIANT) TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);

既存のテーブルに VARIANT 列を追加するには、 ALTER TABLEコマンドを使用します。

SQL
ALTER TABLE catalog.schema.table ADD COLUMN variant_col VARIANT;

テーブルを以前のApache Icebergバージョンにダウングレードする

テーブルを Iceberg v3 にアップグレードする前の状態に戻す必要がある場合は、 RESTOREコマンドを使用できます。

SQL
set spark.databricks.delta.restore.protocolDowngradeAllowed = true;
RESTORE TABLE catalog.schema.table TO VERSION AS OF 1;
set spark.databricks.delta.restore.protocolDowngradeAllowed = false;

制限事項

Databricks は、次の例外を除いて、Iceberg 仕様のバージョン 3 をサポートしています。

  • defaultsおよびinitial defaultsを含む、defaultsはサポートされていません。

  • 次のデータ型はサポートされていません。

    • 不明なタイプ
    • ナノ秒精度のタイムスタンプ。
  • 複数引数の変換はサポートされていません。