0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflake Iceberg CLONE によりメタデータが併存した場合の Fabric Iceberg ショートカット動作検証

Posted at

概要

Microsoft Fabric(Fabric)の Iceberg テーブル ショートカットには、「同一ディレクトリ内のメタデータ ファイルのセットは 1 つのみにする必要がある」という制限があります(ドキュメントに下記のとおり記載されています)。本稿では、この制限と、Snowflake の Iceberg テーブルにおける CLONE の動作仕様の関係について実施した検証結果を共有します。

image.png

出所: OneLake で Iceberg テーブルを使用する - Microsoft Fabric | Microsoft Learn

Snowflake の Iceberg テーブルで CLONE を実行した場合、同一ディレクトリ内でメタデータが管理されるため、Fabric の Iceberg テーブル ショートカットの変換が動作しなくなる可能性を懸念しました。Snowflake の Iceberg テーブルで CLONE を実行した場合の動作については、下記の記事で記述しています。

https://qiita.com/manabian/items/81983193d9df4b854184

検証結果は下記のとおりです。CLONE を実行したとしても即座にエラーとなるわけではなく、テーブルを再作成した際にはメタデータのバージョンが高いほうが優先される動作を確認しました。

  1. Clone 実行後、データ挿入の動作確認: Clone 後も Iceberg テーブルのショートカット作成時のメタデータに追随することを確認
  2. Clone 実行後のテーブルのショートカットを作成: メタデータのバージョンが上の Clone 元テーブルをベースに Iceberg テーブルのショートカットが作成されることを確認
  3. Clone 先テーブルのメタデータバージョンが高い場合の検証: メタデータのバージョンが上の Clone 先テーブルをベースに Iceberg テーブルのショートカットが作成されることを確認

事前準備

Snowflake と OneLake の接続

https://qiita.com/manabian/items/13e62a8b2477c1346bf3

Snowflake にてテーブルを作成

CREATE DATABASE IF NOT EXISTS ONELAKE_CLONE_01;
CREATE SCHEMA IF NOT EXISTS ONELAKE_CLONE_01.SCHEMA_01;

USE DATABASE ONELAKE_CLONE_01;
USE SCHEMA SCHEMA_01;

image.png

CREATE OR REPLACE ICEBERG TABLE SOURCE_TABLE_01 (
    ID   INT,
    NAME STRING,
    TS   TIMESTAMP_NTZ
)
    CATALOG = 'SNOWFLAKE'
    EXTERNAL_VOLUME = 'onelake_iceberg_vol_01';
INSERT INTO SOURCE_TABLE_01 (ID, NAME, TS)
VALUES
  (1, 'Alice', CURRENT_TIMESTAMP());

image.png

Fabric にて Iceberg テーブルのショートカットを作成

スキーマを作成しました。

image.png

Iceberg テーブルのショートカットを作成します。

image.png

image.png

latest_conversion_log.txt を確認すると、変換が正常完了との記載を確認できます。

"Conversion completed successfully at 2026-02-04 05:59:31 UTC time. Latest Metadata file: 00001-b0c03c37-38f5-40be-a878-e8e025b76bf7.metadata.json"

image.png

検証

1. Clone 実行後、データ挿入の動作確認

Snowflake にて、Iceberg テーブルから CLONE した Iceberg テーブルを作成します。

CREATE OR REPLACE ICEBERG TABLE cloned__SOURCE_TABLE_01
    CLONE SOURCE_TABLE_01;

image.png

latest_conversion_log.txt を確認すると、変換が失敗との記載を確認できます。

"Conversion failed at 2026-02-04 06:09:15 UTC time. Latest Metadata file: N/A."

log_dir = "file:/lakehouse/default/Tables/clone_test_01/SOURCE_TABLE_01.vPsduL4t/_delta_log/latest_conversion_log.txt"
print(notebookutils.fs.head(log_dir))

image.png

Snowflake にて Clone 元のテーブルにデータを挿入します。

INSERT INTO SOURCE_TABLE_01 (ID, NAME, TS)
VALUES
  (2, 'Bob', CURRENT_TIMESTAMP());

image.png

Fabric にてテーブルを確認すると、データが追加されており、変換が正常完了との記載を確認できました。

image.png

"Conversion completed successfully at 2026-02-04 06:12:06 UTC time. Latest Metadata file: 00002-fb656960-e106-4bc9-86db-2daab68e8c38.metadata.json"

image.png

Clone 元テーブルにデータを挿入し、想定どおりにデータが追加されていることを確認できました。

image.png

image.png

"Conversion completed successfully at 2026-02-04 06:17:28 UTC time. Latest Metadata file: 00003-b5e01725-f637-4a5b-bc2e-7b2a2c6f4b13.metadata.json"

image.png

2. Clone 実行後のテーブルのショートカットを作成

この時点では、Clone 元テーブルのメタデータ バージョンが 3、Clone 先テーブルのメタデータ バージョンが 1 の状態です。この状態で、(Clone 先テーブルを参照する)テーブルのショートカットを作成します。

image.png

image.png

結果として、Clone 元のテーブルのデータが表示されました。

image.png

image.png

3. Clone 先テーブルのメタデータバージョンが高い場合の検証

Clone 先テーブルのメタデータ バージョンを上げるために、書き込み処理を実施します。

INSERT INTO cloned__SOURCE_TABLE_01 (ID, NAME, TS)
VALUES
  (2, 'B', CURRENT_TIMESTAMP());

INSERT INTO cloned__SOURCE_TABLE_01 (ID, NAME, TS)
VALUES
  (3, 'C', CURRENT_TIMESTAMP());

INSERT INTO cloned__SOURCE_TABLE_01 (ID, NAME, TS)
VALUES
  (4, 'D', CURRENT_TIMESTAMP());

INSERT INTO cloned__SOURCE_TABLE_01 (ID, NAME, TS)
VALUES
  (5, 'D', CURRENT_TIMESTAMP());

image.png

image.png

この時点では、Clone 元テーブルのメタデータ バージョンが 3、Clone 先テーブルのメタデータ バージョンが 4 の状態です。この状態で、(Clone 先テーブルを参照する)テーブルのショートカットを作成します。

image.png

image.png

結果として、Clone 先のテーブルのデータが表示されました。

image.png

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?