2
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?

Databricks の互換モード (compatibility mode) で広がるオープンデータ基盤の可能性

Last updated at Posted at 2025-12-12

はじめに

本記事の内容は Microsoft Data Analytics Day(Online) 勉強会 2025/11 で発表した内容となります。
発表の録画は YouTube にて公開しております。

互換モードの概要

  • Databricks で最適なパフォーマンスを維持しながら、Unity カタログのマネージド テーブル、マテリアライズド ビュー、およびストリーミング テーブルを外部システムから読み取ることができる
  • Delta Lake または Iceberg クライアントからアクセスできる、テーブルの読み取り専用バージョンが自動的に生成される
  • 2025/11 時点ではパブリック プレビュー機能

image.png

互換モードのデモ

事前準備

互換性バージョンのデータとメタデータを保存するためのストレージ(ADLS)を外部ロケーションとして登録しておきます。
また、ターゲットの場所は空にしておく必要があります(他のファイルは置かない)。

image.png

マネージド テーブルの作成

まずは、マネージド テーブル (table_01) を作成します。
本記事では以下のように作成しました。

image.png

互換モードの有効化

互換モードを有効化するにはテーブル プロパティを設定する必要があります。
delta.universalFormat.compatibility.location では、外部ロケーションとして設定しているストレージ(ADLS)を指定します。

ALTER TABLE <catalog>.<schema>.<table> SET TBLPROPERTIES(
  'delta.universalFormat.enabledFormats' = 'compatibility',
  'delta.universalFormat.compatibility.location' = 'abfss://<container>@<adls>.dfs.core.windows.net/<dir>'
)

image.png

互換モードが有効になっているか確認

delta.universalFormat.compatibility.targetRefreshInterval (= 更新間隔) の既定値は1時間となっています。手動更新も可能で、テストのため初回は手動で更新しました。

DESC DETAIL <catalog>.<schema>.<table>

image.png

REFRESH TABLE <catalog>.<schema>.<table> SYNC UNIFORM

image.png

更新間隔について、1時間未満に設定することは非推奨のようです。
ただし、ストリーミング テーブとマテリアライズド ビューの場合、既定値は0分となるようです。

互換性バージョンのデータとメタデータの確認

元の delta テーブルと互換性バージョンを比較すると、データの圧縮形式が変わっている(delta:zstd、互換性バージョン:snappy)ことがわかります。
また、互換性バージョンには Iceberg の metadata が作成されています。

  • 元の delta テーブル
    image.png

  • 互換性バージョンのデータとメタデータ
    image.png

外部クライアントから互換性バージョンを読み取る

本記事では、Microsoft Fabric からの読み取りを検証しました。
まずは Fabric のレイクハウスの Files に、互換モードのデータが格納されている ADLS のショートカットを作成します。

image.png

ショートカットから以下のように読み取りが可能となります。

image.png

互換モードの制限事項

ドキュメントには以下の制限事項が記載されています。この中の2つを検証みました。

image.png

1. タイム トラベル

Fabric で互換モードの過去バージョンの読み取りを実行したところ成功しました。
そのため、タイム トラベルは使える?可能性があります。

image.png

2. 特殊文字

特殊文字を列名に持つテーブルを作成して列マッピングを設定します。そして互換モードを有効化します。

image.png

Fabric から互換モードを読み取ると、列名の特殊文字が変換されることがわかりました。

image.png

類似機能との比較

Microsoft Fabric におけるスキーマ ショートカット

Fabric のスキーマ ショートカット(Hub ストレージ構成)の概要については以下の記事をご参照ください。

image.png

Databricks で Variant 型の列を持つテーブルを Hub ストレージ(ADLS)に作成して、互換モードを有効化します。
互換モードの保存場所は上述で実施した Fabric の Files のショートカットに設定した ADLS のディレクトリにしています。

image.png

Variant 型は半構造化データを保持することが可能となります。

元テーブルが保存されている Hub ストレージ(ADLS)のフォルダをスキーマ ショートカットに設定します。

  • Databricks:元テーブルの設定内容
    image.png

  • Microsoft Fabric:ショートカット作成
    image.png

Fabric で読み取りを実行したところ、スキーマ ショートカットの場合は読み取りがエラーとなりますが、互換モードの場合は正常に読み取りが可能となることがわかりました。

  • スキーマ ショートカットの読み取りは Variant 型をサポートしていないエラーが発生
    image.png

  • 互換モードの読み取りは成功(ただし文字列となっている)
    image.png

上記の結果から、互換モードは後方互換性が保証されると考えられます。

Microsoft Fabric における Unity カタログ ミラーリング

Microsoft Fabric の Unity カタログ ミラーリング の概要については以下の記事をご参照ください。

image.png

Unity Catalog ミラーリングの制限事項として、ストリーミング テーブルおよびマテリアライズド ビューはサポートされていないことが記載されています。

image.png

実際に試してみたところ、Databricks のカタログ(図左)に存在しているストリーミング テーブルおよびマテリアライズド ビューが、Fabric のミラーリング(図右)には表示されないことがわかりました。

image.png

上記の結果から、ミラーリングだとDatabricks の Lakeflow 宣言型パイプラインで作成されたデータ(ストリーミング テーブルおよびマテリアライズド ビュー)を Fabric から利用することができないと考えられます。

2025/11 に Lakeflow 宣言型パイプラインの名前が Lakeflow Spark 宣言型パイプライン に変更されました。

互換モードではストリーミング テーブルおよびマテリアライズド ビューをサポートしているため、Fabric から利用することが可能です。

image.png

Iceberg 読み取り有効化(UniForm)

Iceberg 読み取りを有効化すると、 Iceberg クライアントが Databricks によって書き込まれた Delta テーブルを読み取れるようになります。

image.png

Iceberg 読み取りを有効化するには、delta テーブルに対して削除ベクトルの消去と列マッピングの有効化が必要になります。

ALTER TABLE <catalog>.<schema>.<table> SET TBLPROPERTIES ('delta.enableDeletionVectors' = false);

REORG TABLE <catalog>.<schema>.<table> APPLY (UPGRADE UNIFORM(ICEBERG_COMPAT_VERSION=2));

ALTER TABLE <catalog>.<schema>.<table> SET TBLPROPERTIES(
  'delta.columnMapping.mode' = 'name',
  'delta.enableIcebergCompatV2' = 'true',
  'delta.universalFormat.enabledFormats' = 'iceberg'
  );

image.png

有効化前後でデータのディレクトリを確認してみると、データは Zstandard 圧縮 Parquet ファイルで変わらないですが、Iceberg の metadata が作成されていることが確認できます。

  • 有効化前は delta log のみ
    image.png

  • 有効化後は metadata が作成されている
    image.png

上記の結果から、互換モードと比較したとき、Iceberg の metadata が元テーブルと同じディレクトリに作成されることがわかります。
また、制限事項としてマテリアライズド ビューまたはストリーミング テーブルはサポートされていないという記載がありました。

image.png

マネージド Iceberg テーブル

Databricks では Parquet ファイル形式を使用する Iceberg テーブルがサポートされています。

image.png

USING ICEBERG で作成が可能です。

image.png

マネージド Iceberg テーブルのディレクトリ構造を確認すると、 _iceberg フォルダと _delta_log フォルダが作成されていることがわかります。
これは、Iceberg テーブルでも DESC HISTORY など Delta Lake のメタデータ操作が可能であることを意味します。
また、データは Zstandard 圧縮 Parquet ファイルとなっています。

image.png

各機能の特徴まとめ

ここまでの内容を表にまとめました。
どのようにデータを共有していくかの参考になれば幸いです。

image.png

2
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
2
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?