Apache Iceberg v3の機能を使用する
ベータ版
この機能はベータ版です。
このページでは、Unity Catalog で Apache Iceberg v3 の機能を使用する方法について説明します。Iceberg v3 では、クエリ パフォーマンスが強化され、UniForm を使用したマネージド Delta Lake テーブル、マネージド Iceberg テーブル、および外部 Iceberg テーブルに新しい機能が導入されています。
Iceberg v3 の主な機能は次のとおりです。
- 削除ベクトル : データ ファイル全体を書き換えることなく、効率的な行レベルの削除を可能にします。
- VARIANT データ型 : 半構造化データの保存と処理をサポートします。
- 行リネージ : テーブル データへの増分変更を追跡します。
すべてのIceberg v3 テーブルには行リネージが必要です。 行リネージを有効または無効にするコマンドはありません。
要件
Iceberg v3 の機能を使用するには、次の要件を満たす必要があります。
- Unity Catalog が有効になっているワークスペース
- Iceberg v3 でマネージドテーブルの読み取りおよび書き込みを行うには、 Databricks Runtime 17.3 以降
Iceberg v3で新しいテーブルを作成する
UniForm を使用した管理対象 Delta テーブルと管理対象 Iceberg テーブルの両方に対して、Iceberg v3 を有効にした新しいテーブルを作成します。
- Managed Delta table with UniForm
- Managed Iceberg table
UniForm と Iceberg v3 が有効になっている新しい管理 Delta テーブルを作成するには、次の SQL コマンドを使用します。
CREATE OR REPLACE TABLE main.schema.table (c1 INT) TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'iceberg',
'delta.enableIcebergCompatV3' = 'true'
);
UniFormの詳細については、 IcebergクライアントでDeltaテーブルを読み取る」を参照してください。
v3 形式の新しいマネージド Iceberg テーブルを作成するには、次の SQL コマンドを使用します。
CREATE OR REPLACE TABLE main.schema.table (c1 INT)
USING iceberg
TBLPROPERTIES ('format-version' = 3);
マネージドIcebergテーブルの詳細については、 DatabricksのApache Icebergとは何ですか?」を参照してください。
既存のテーブルを Iceberg v3 にアップグレードする
既存のテーブルを Iceberg v3 にアップグレードするには、次の操作を行います。
- テーブル上の任意の v3 機能を有効にします。
- テーブルの Iceberg 形式のバージョンを 3 に設定します (以下に表示)。
v3 にアップグレードされたマネージド Iceberg テーブルはダウングレードできません。UniForm を使用した管理された Delta テーブルは安全にダウングレードできます。
- Managed Delta table with UniForm
- Managed Iceberg table
UniForm を使用して管理された Delta テーブルを v3 にアップグレードするには、次のコマンドを使用します。
ALTER TABLE catalog.schema.table SET TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.enableIcebergCompatV2' = 'false'
);
管理された Iceberg テーブルを v3 にアップグレードするには、次のコマンドを使用します。
ALTER TABLE catalog.schema.table SET TBLPROPERTIES (
'format-version' = 3
);
削除ベクトルを有効にする
削除ベクトルは行レベルのデータ変更操作を最適化し、すべての新しい Iceberg v3 テーブルでデフォルトで有効になっています。「削除とは何ですか?」を参照してください。 。
既存の Iceberg テーブルで削除ベクトルを有効にすると、Iceberg 形式のバージョンが 3 にアップグレードされます。
- Managed Delta table with UniForm
- Managed Iceberg table
UniForm、Iceberg v3、および削除ベクトルが有効になっている新しい管理対象 Delta テーブルを作成するには、次のテーブル プロパティを設定します。
CREATE TABLE catalog.schema.table (c1 INT) TBLPROPERTIES(
'delta.enableDeletionVectors' = 'true',
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);
削除ベクトルを有効にした新しい管理対象 Iceberg テーブルを作成するには、 iceberg.enableDeletionVectorsテーブル プロパティを設定します。
CREATE TABLE catalog.schema.table (c1 INT)
USING ICEBERG TBLPROPERTIES (
'iceberg.enableDeletionVectors' = 'true'
);
VARIANTデータ型を使用する
VARIANT データ型を使用すると、半構造化データを保存およびクエリできます。
既存の Iceberg テーブルで VARIANT を使用すると、Iceberg 形式のバージョンが 3 にアップグレードされます。
- Managed Delta table with UniForm
- Managed Iceberg table
UniForm と VARIANT 列を持つ新しい管理 Delta テーブルを作成するには:
CREATE TABLE catalog.schema.deltaTable (col VARIANT) TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);
VARIANT 列を持つ新しいマネージド Iceberg テーブルを作成するには:
CREATE TABLE catalog.schema.icebergTable (col VARIANT) USING iceberg;
既存のテーブルに VARIANT 列を追加するには、 ALTER TABLEコマンドを使用します。
ALTER TABLE catalog.schema.table ADD COLUMN variant_col VARIANT;
テーブルを以前のバージョンに復元する
テーブルを Iceberg v3 にアップグレードする前の状態に戻す必要がある場合は、 RESTOREコマンドを使用できます。
RESTORE TABLE catalog.schema.table TO VERSION AS OF 1;
制限事項
Databricks は、次の例外を除いて、Iceberg 仕様のバージョン 3 をサポートしています。
-
大丈夫、初期安全を含む、はサポートされていません。
-
次のデータ型はサポートされていません。
- 地理空間タイプ
- 不明なタイプ
- ナノ秒精度のタイムスタンプ。
-
複数引数の変換はサポートされていません。