マテリアライズド・レイクビューの始め方

このクイックスタートでは、Microsoft Fabricのレイクハウスにソーステーブルを作成し、生データを段階的に変換するための物質化された湖ビューを定義し、更新スケジュールを設定します。 最終的には、依存関係に対応したオーケストレーションと系列追跡を備えた、完全に動作するブロンズからゴールドのパイプラインが作成されます。

[前提条件]

最初の具体化された湖のビューを作成する

  1. Fabric ポータルに移動し、ワークスペースに移動します。

  2. Lakehouse を開き、[ マテリアライズド レイク ビュー] を選択します。

    具体化された湖のビューを管理するためのメニュー項目を示すスクリーンショット。

  3. [新規>新しいノートブック>Spark SQL を使用して作成する] を選択します。 または、メイン キャンバスから [ノートブックを開く ] を選択することもできます。

    新しいノートブックを開き、具体化されたレイク ビューを作成するための選択のスクリーンショット。

    新しいノートブックが開き、テンプレートが表示され、具体化されたレイク ビューが作成されます。

    倉庫のテーブルをマテリアルな湖のビューのソースとして使う場合は、湖の家でテーブルショートカットを作成する必要があります。

  4. ソース テーブルの productsordersを作成します。 既存のノートブック セルに次の SQL コマンドを入力して実行します。

    CREATE SCHEMA IF NOT EXISTS bronze;
    
    CREATE TABLE IF NOT EXISTS bronze.products (
       product_id INT,
       product_name STRING,
       price DOUBLE
    );
    
    INSERT INTO bronze.products VALUES
    (101, 'Laptop', 1200.50),
    (102, 'Smartphone', 699.99),
    (103, 'Tablet', 450.00);
    
    CREATE TABLE IF NOT EXISTS bronze.orders (
       order_id INT,
       product_id INT,
       quantity INT,
       order_date DATE
       );
    
    INSERT INTO bronze.orders VALUES
       (1001, 101, 2, '2025-06-01'),
       (1002, 103, 1, '2025-06-02'),
       (1003, 102, 3, '2025-06-03');
    
  5. エクスプローラーを更新して、products スキーマの下に新しく作成されたordersテーブルとbronze テーブルを表示します。 [+ コード] を選択して、既存のセルの下に新しいセルを追加します。

    Lakehouse で作成されたソース テーブルを示すスクリーンショット。

  6. 最適な更新で増分処理を使用できるように、ソース テーブルで変更データ フィード (CDF) を有効にします。 次の SQL コマンドを新しいセルにコピーして実行します。

    ALTER TABLE bronze.products SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
    ALTER TABLE bronze.orders SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
    

    [ + コード ] を選択して、別の新しいセルを追加します。

  7. ソース テーブルから具体化されたレイク ビューを作成します。 次の SQL コマンドを新しいセルにコピーして実行します。

    CREATE SCHEMA IF NOT EXISTS silver;
    
    CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS silver.cleaned_order_data AS
    SELECT 
       o.order_id,
       o.order_date,
       o.product_id,
       p.product_name,
       o.quantity,
       p.price,
       o.quantity * p.price AS revenue
    FROM bronze.orders o
    JOIN bronze.products p
    ON o.product_id = p.product_id;
    
    CREATE SCHEMA IF NOT EXISTS GOLD;
    
    CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS gold.product_sales_summary AS
    SELECT
       product_id,
       product_name,
       SUM(quantity) AS total_quantity_sold,
       SUM(revenue) AS total_revenue,
       ROUND(AVG(revenue), 2) AS average_order_value
    FROM
       silver.cleaned_order_data
    GROUP BY
       product_id,
       product_name;
    
  8. Lakehouse エクスプローラーを更新して、新しく作成されたマテリアライズドレイクビューの cleaned_order_dataproduct_sales_summary を、silver スキーマと gold スキーマの下にそれぞれ表示します。

    Lakehouse で作成された具体化された湖のビューを示すスクリーンショット。

  9. ゴールドマテリアライズドレイクビューに対してクエリを実行することで、結果を確認することができます。 次の SQL コマンドを新しいセルにコピーして実行します。

    SELECT * FROM gold.product_sales_summary;
    

    出力には、3 つの行 (各製品に対して 1 つ) が表示され、合計販売数量、総収益、および平均注文値がソース注文データから計算されます。

  10. ノートブックを閉じて、Lakehouse に戻ります。 「マテリアライズド レイクビュー」を選択し、「管理」を選択します。 自動生成された系列を表示するには、更新アイコンを選択する必要がある場合があります。

    系列を示すスクリーンショット。

  11. 系列の実行をスケジュールします。 リボンから 「スケジュール管理 」を選択してください。 スケジュール 管理 ペインで「 新しいスケジュール 」ボタンを選択してスケジュールを作成します。 スケジュール更新のラジオボタンをオン状態に切り替えます。

    系列をスケジュールするためのペインのスクリーンショット。

  12. リフレッシュするマテリアル化されたビューを選択し、希望する リフレッシュタイプを選び、リフレッシュに使用する設定を設定して保存します。

    その他のオプションを含む系列をスケジュールするためのペインのスクリーンショット。

  13. 系譜実行の進捗を確認するには 「最近のプレイ 」ページに移動します。

    最近の実行を示すスクリーンショット。

  14. 進行中のランを選択して進行状況を監視してください。

    進行中の実行の進行状況を示すスクリーンショット。

  15. ランが完了すると、系譜の状態が更新されます。

    完了した系列の実行を示すスクリーンショット。

次に何が起こるか

スケジュールされた系列の更新が済んだので、ソース データの変更に合わせて、具体化された湖のビューが自動的に最新の状態に維持されます。 新しい行が bronze.orders テーブルまたは bronze.products テーブルに挿入されると、次にスケジュールされた実行で変更が検出され、最初に silver.cleaned_order_data ビューが更新され (ゴールド ビューが依存するため)、更新された合計で gold.product_sales_summary が更新されます。 更新順序や書き込みオーケストレーション ロジックを管理する必要はありません。ファブリックは、系列グラフに基づいて処理します。

更新動作の詳細と、Fabric が最適な戦略 (増分、完全、またはスキップ) を決定する方法については、「 Lakehouse の具体化された湖のビューの最適な更新」を参照してください。 大規模なデータセットを使ったこれらの概念の完全な端から端までのウォークスルーについては、チュートリアル: レイク ビューを具体化して medallion アーキテクチャを実装するを参照してください。