Iceberg 形式のデータ品質ネイティブ サポート (プレビュー)

Microsoft Purview では、Apache Iceberg データ資産のデータ品質評価がサポートされています。 Iceberg データは、次のストレージ ソースでキュレーション、管理、スキャンできます。

  • Azure Data Lake Storage Gen2
  • Microsoft Fabric Lakehouse
  • アマゾン ウェブ サービス (AWS) S3
  • Google Cloud Platform (GCP) Cloud Storage (GCS)

この記事では、Iceberg ファイルの構造について説明し、データ品質スキャンを設定する方法と、カタログとストレージの種類ごとのヒントを示します。

Iceberg ファイル構造

Iceberg テーブルは、単なるデータ ファイルのコレクションだけではありません。 これには、テーブルの状態を追跡し、読み取り、書き込み、スキーマの進化などの操作を容易にするさまざまなメタデータ ファイルが含まれています。 Iceberg テーブルには、カタログ、メタデータ レイヤー、およびデータ レイヤーが含まれます。 Iceberg テーブル内のデータ ファイルは、通常、Apache Parquet、Apache Avro、Apache Optimized Row Columnar (ORC) などの列形式で格納されます。 これらのファイルには、ユーザーがクエリ中に操作する実際のデータが含まれています。

Iceberg ファイル構造の図。

カタログ レイヤーの概要

Iceberg カタログは階層の一番上にあります。 各テーブルの現在のメタデータ ポインターが格納されます。 カタログを使用すると、現在のメタデータ ファイルを参照することで、テーブルの最新の状態を追跡できます。

メタデータ レイヤーの概要

メタデータ レイヤーは、Iceberg の機能の中心です。 これには、次の重要な要素が含まれています。

  • メタデータ ファイル: テーブルのスキーマ、パーティション分割、スナップショットに関する情報が含まれます。 この図では、s0 は、特定の時点でのテーブルの状態のレコードであるスナップショットを参照します。 複数のスナップショット (s0 や s1 など) が存在する場合、メタデータ ファイルは両方を追跡します。
  • マニフェストの一覧: 1 つ以上のマニフェスト ファイルをポイントします。 マニフェスト リストは、これらのマニフェストへの参照のコンテナーとして機能します。 これは、Iceberg がさまざまな操作中に読み取りまたは書き込む必要があるデータ ファイルを管理するのに役立ちます。 各スナップショットには、独自のマニフェスト リストが含まれます。

データ レイヤーの概要

データ レイヤーでは、マニフェスト ファイルは、メタデータと実際のデータ ファイルの中間として機能します。 各マニフェスト ファイルは、データ ファイルのコレクションを指し示し、データ レイクに格納されている物理ファイルのマップを提供します。

  • マニフェスト ファイル: 行数、パーティション情報、ファイル パスなど、データ ファイルのグループのメタデータを格納します。 これにより、Iceberg は特定のファイルをすばやく排除してアクセスできます。
  • データ ファイル: Parquet、ORC、Avro などの形式で格納されている実際のデータが含まれます。 Iceberg は、パーティションに基づいてデータ ファイルを整理します。これにより、クエリの実行中に不要なデータ スキャンが最小限に抑えられます。

Iceberg コンポーネントの連携

データのクエリまたは更新を行うと、Iceberg はカタログを介してテーブルのメタデータ ファイルを検索します。 メタデータ ファイルは、現在のスナップショット (または複数のスナップショット) を参照します。 各スナップショットは、マニフェスト ファイルを参照するマニフェスト リストを指します。 マニフェスト ファイルには、データ ファイルが一覧表示されます。 この階層参照により、Iceberg は読み取りと書き込みの一貫性を維持しながら、大規模なデータセットを管理できます。 リーダーとライターは、常に一貫性のあるテーブルの状態を確認します。 スナップショットベースの設計では、タイム トラベル (以前のテーブル状態のクエリ) とスキーマの進化も可能になります。

同じ階層化されたアプローチにより、バッチ操作とストリーミング操作のパフォーマンスが向上します。 必要なデータ ファイルのみが読み取られ、更新では完全なデータセットを変更せずにスナップショットが使用されます。

OneLake の氷山データ

重要

また、AWS S3 と GCS の Iceberg データを Delta として自動同期して、データ品質をキュレーション、管理、監視する必要があります。

データ移動や重複なしで 、Microsoft Fabric 全体で Iceberg 形式のデータ をシームレスに使用できます。 OneLake ショートカットを使用して、データ レイヤーを直接ポイントします。

Iceberg データは OneLake に格納され、Snowflake または別の Iceberg ライターを使用して書き込まれます。 OneLake はテーブルを Delta Lake テーブルとして仮想化します。これにより、ファブリック エンジン全体で幅広い互換性が確保されます。 たとえば、Snowflake にボリュームを作成し、それを Fabric Lakehouse に直接ポイントできます。 OneLake で Iceberg テーブルが作成されると、自動同期によってデータの更新がリアルタイムで反映されます。 Snowflake ドキュメントの「Azure用に Iceberg 外部ボリュームを構成する」の詳細を確認してください。

Iceberg データのデータ品質

Parquet 上の Iceberg、ORC、または Data Lake Storage Gen2 または Fabric Lakehouse の Avro でデータをネイティブにハイドレートするすべてのユーザーに対して、データとメタデータ Iceberg ディレクトリをホストするディレクトリの場所を指すスキャンを構成します。 Iceberg データ品質サポートを構成するには、次の手順を実行します。

  1. Microsoft Purview データ マップでスキャンを構成して実行します。
  2. データとメタデータをデータ資産としてホストするディレクトリを構成し、それをデータ製品に関連付けます。 ディレクトリをデータ資産として関連付け、それをデータ製品にリンクすると、Iceberg データセットが形成されます。 データ資産をデータ製品に関連付ける方法について説明します。
  3. 統合カタログで、[正常性管理] で [データ品質ビュー] を選択して Iceberg ファイル (データ資産) を検索し、データ ソース接続を設定します。
    1. Data Lake Storage Gen2接続を設定するには、「データ品質のためにデータ ソース接続を設定する」の手順に従います。
    2. Fabric OneLake 接続を設定するには、「 Fabric Lakehouse データのデータ品質を設定する」の手順に従います。
  4. 選択した Iceberg ファイル (データ資産) の [ スキーマ ] ページで、[ スキーマのインポート ] を選択して、データ ソースからスキーマをインポートします。
  5. Iceberg ファイルの [概要 ] ページの [ データ資産 ] ドロップダウン メニューで、[ Iceberg] を選択します。
  6. データ品質ルールを適用し、列レベルとテーブルレベルのデータ品質スコアリングのデータ品質スキャンを実行します。

プロファイリングとデータ品質のスキャン

重要

データ プロファイルまたはデータ品質スキャンを実行する前に、[データ品質スキーマ] ページからスキーマを取得して設定する必要があります。 Data Map はまだ Iceberg オープン テーブル形式をサポートしていないため、コンシューマーはデータ資産ビューにスキーマを表示しません。 Data Quality スチュワードは、データ品質スキーマ ページからスキーマをインポートできます。

接続のセットアップとデータ資産ファイル形式の選択が完了したら、データのプロファイリング、ルールの作成と適用、Iceberg オープンフォーマット ファイルでのデータのデータ品質スキャンの実行を行うことができます。 詳細なガイダンスについては、次の記事を参照してください。

重要

カタログ検出、キュレーション、データ プロファイル、およびデータ品質スキャン機能での Iceberg オープン形式のサポートは プレビュー段階です

Iceberg データ品質に関する現在の制限事項

Microsoft Purview の現在のプレビュー リリースでは、 Apache Hadoop カタログ (ファイル ベースのカタログ実装) を使用して Iceberg 形式で作成されたデータのみがサポートされています。 Snowflake カタログのシナリオは、OneLake ショートカットを使用した Delta 仮想化でのみサポートされます。

レイクハウス パスとData Lake Storage Gen2 パス

  • Iceberg メタデータには、データとメタデータの完全なパスが格納されます。 Data Lake Storage Gen2と Fabric Lakehouse の完全なパスを使用していることを確認します。 さらに、書き込み中の Fabric Lakehouse パスの場合は、ID パスで動作 (WRITES、UPSERTS) を確認します。 次の例は、必要な ABFSS パス形式を示しています。 <filesystem-ID><lakehouse-ID>を実際の GUID に置き換えます。

    abfss://<filesystem-ID>@onelake.dfs.fabric.microsoft.com/<lakehouse-ID>/Files/CustomerData
    
  • ID としてのファイルシステムと ID としての Lakehouse。 Microsoft Purview が Iceberg でデータ品質を実行するには、相対パスではなく絶対パスが必要です。 検証するには、完全な完全修飾名 (FQN) パスを指すようにスナップショット パスをチェックしてください。

スキーマ検出

  • Data Map で Iceberg スキーマを検出できません。 Fabric Lakehouse または Data Lake Storage Gen2 で Iceberg ディレクトリをキュレーションする場合、スキーマを確認することはできません。 ただし、データ品質フェッチ スキーマは、キュレーションされた資産のスキーマをプルできます。

Iceberg データ品質構成に関する推奨事項

カタログとストレージに一致する方法を選択します。

ソース/カタログ ストレージ 方法 サポートされている形式
Snowflake カタログ Data Lake Storage Gen2、AWS S3、または GCP GCS (ボリューム) Fabric OneLake Table ショートカットを使用します。 Delta テーブルとしてデータ品質を実行します。 Parquet のみ
Hadoop カタログ Data Lake Storage Gen2 ディレクトリを直接スキャンします。 データ品質には Iceberg エンジンを使用します。 Parquet、ORC、Avro
Snowflake Fabric Lakehouse (VOLUME pointed to Lakehouse) OneLake Table を使用して、Delta 互換バージョンを作成します。 Parquet のみ
Hadoop カタログ ファブリック レイクハウス Lakehouse ディレクトリを直接スキャンします。 データ品質には Iceberg エンジンを使用します。 Parquet、ORC、Avro

これらの記事では、データ品質の設定とスキャンについて説明します。