mcpField
F
fabric-integration

fabric-integration

github.com/josiahsiegelデータ・データベース5988 回インストール19 週間前に更新
リポジトリ

fabric-integration について

Power BI と Microsoft Fabric の開発者向け統合ガイドです。Direct Lake、OneLake、Lakehouse、Dataflow Gen2 の連携に加え、セマンティックモデル接続、データ準備、リアルタイム分析の流れを扱います。

主な機能

  1. 01Direct Lake の読み取り、更新、フォールバック動作の説明
  2. 02OneLake ショートカットとファイル API の紹介
  3. 03Lakehouse と Warehouse の Power BI 接続の整理
  4. 04Dataflow Gen2 から Direct Lake へのフローの解説
  5. 05Fabric のリアルタイムデータとセマンティックモデル連携の紹介

活用シーン

  1. 01Lakehouse データを使った Direct Lake セマンティックモデルの構築
  2. 02Dataflow Gen2 から Power BI へのデータフロー設計
  3. 03OneLake または外部ショートカット経由でのデータ接続
  4. 04リアルタイムイベントデータの Power BI 分析への取り込み

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill fabric-integration

インストール後、Claude Code で/fabric-integrationを入力して読み込まれたか確認します。

同梱ファイルreferences/fabric-architecture-patterns.md

詳細

Microsoft Fabric との統合

概要

Microsoft Fabric は、Power BI、Data Factory、Data Engineering、Data Science、Real-Time Intelligence、Data Warehouse を含む統合分析プラットフォームです。Power BI は、Fabric の視覚化およびセマンティック モデリング レイヤーとして深く統合されています。

Direct Lake モード

Direct Lake は Fabric 専用のストレージ モードです。データをインポートしたり、DirectQuery リクエストを送信したりすることなく、OneLake の delta テーブルからデータを直接読み取ります。

Direct Lake の仕組み
  1. フレーミング: 更新時に、Direct Lake は delta テーブルからメタデータ(Parquet ファイルへの参照)のみをコピーします。所要時間は数秒です
  2. オンデマンド読み込み: クエリがモデルにアクセスすると、Parquet ファイルから VertiPaq エンジンにデータが直接読み込まれます
  3. データの重複なし: インポートとは異なり、セマンティック モデルにデータのコピーは保存されません
  4. インポートに近いパフォーマンス: メモリに読み込まれると、クエリは VertiPaq の速度で実行されます
Direct Lake とインポート、DirectQuery の比較
機能インポートDirectQueryDirect Lake
データの鮮度更新時点のスナップショットリアルタイムほぼリアルタイム(フレーミング後)
クエリのパフォーマンス最速(すべてメモリ内)ソースによって異なるインポートに近い(オンデマンド読み込み)
更新時間数分から数時間該当なし数秒(フレーミングのみ)
更新コスト高い(データ全体をコピー)なし非常に低い(メタデータのみ)
データサイズの上限10GB(Premium)、1GB(PBIX)ソースの上限Fabric 容量の上限
DAX のサポート完全制限あり完全
計算列ありなしあり
ソース要件任意任意OneLake の delta テーブルのみ
容量要件任意任意Fabric F-SKU
Direct Lake のバリアント(2025~2026 年 GA)
バリアントソース複数ソースフォールバックユースケースGA ステータス
Direct Lake on OneLake (DL/OL)OneLake の delta ファイルあり(複数の Fabric アイテム)フォールバックなし柔軟な複数のレイクハウスGA
Direct Lake on SQL (DL/SQL)Fabric SQL エンドポイントなし(単一の Fabric アイテム)DirectQuery にフォールバックSQL 中心の単一ソースGA
Direct Lake セマンティック モデルの作成

Power BI Desktop(2025 年以降のプレビュー)で作成する場合:

  1. データを取得 > OneLake データ ハブ
  2. Fabric のレイクハウスまたはウェアハウスを選択します
  3. テーブルを選択します(自動的に Direct Lake として読み込まれます)
  4. Desktop でメジャーとリレーションシップを作成します
  5. Fabric ワークスペースに発行します

Fabric サービスから作成する場合:

  1. Fabric でレイクハウスまたはウェアハウスを開きます
  2. 「新しいセマンティック モデル」をクリックします
  3. 含めるテーブルを選択します
  4. モデルを Web で開き、メジャーとリレーションシップを追加します

TOM からプログラムで作成する場合:

var database = new Database() { Name = "DirectLakeModel" };
var model = new Model() { Name = "DirectLakeModel" };
database.Model = model;

// Direct Lake partition source
var table = new Table() { Name = "Sales" };
table.Partitions.Add(new Partition() {
    Name = "Sales-DL",
    Mode = ModeType.DirectLake,
    Source = new EntityPartitionSource() {
        EntityName = "Sales",
        SchemaName = "dbo",
        ExpressionSource = new ExpressionSource() {
            Expression = "DatabaseQuery"
        }
    }
});
model.Tables.Add(table);

重要な違い: DL/OL は DirectQuery にフォールバックしません。データをメモリから提供できない場合、クエリは失敗します。そのため、DL/OL モデルは容量のガードレール内に収まるよう、慎重にサイズを調整する必要があります。

容量ごとの Direct Lake ガードレール
ガードレールF2F4F8F16F32F64F128
ディスク上のモデルサイズ上限2 GB4 GB8 GB16 GB32 GB64 GB128 GB
テーブルごとの行数上限300M300M300M1.5B3B6B6B
テーブルごとのファイル数/行グループ数の上限1K1K1K1K1K5K5K
同時実行可能な DL クエリ数48163264128256

最大メモリはページングに対するソフト上限です。超過するとパフォーマンスは低下しますが、失敗はしません。

ディスク/OneLake 上のモデルサイズ上限はハード ガードレールです。超過すると、DQ にフォールバックする(DL/SQL)か、クエリが失敗します(DL/OL)。

Direct Lake フォールバックの構成
フォールバックの動作設定影響
DirectQuery への自動フォールバック既定(DL/SQL のみ)クエリは引き続き動作しますが、速度が低下します
フォールバックをブロックDirectLakeBehavior = DirectLakeOnlyDL から提供できない場合、クエリは失敗します
フォールバックなし既定(DL/OL)データが利用できない場合、クエリは常に失敗します

Fabric Capacity Metrics アプリでフォールバックを監視します。頻繁なフォールバックは、モデル設計に問題があることを示しています。

一般的なフォールバックのトリガー(DL/SQL):

  • 容量制限により、列がメモリに読み込まれていない
  • Direct Lake テーブルの計算列(DQ フォールバックが発生する場合があります)
  • テーブル全体のスキャンが必要な特定の DAX パターン
  • フレーミングが古い(デルタテーブルが変更されたものの、モデルが再フレーミングされていない)
  • ファイル数または行グループ数が容量のガードレールを超えている
Direct Lake による Power BI Embedded(2025 年 3 月 GA)

Direct Lake モードが、Microsoft SLA による裏付けのもと、埋め込み分析で完全にサポートされるようになりました。Import/DirectQuery モデルと同じ埋め込みトークン API を使用して、Direct Lake セマンティックモデルの埋め込みトークンを生成できます。

フレーミング(更新)
# Trigger framing via REST API
POST https://api.powerbi.com/v1.0/myorg/groups/{workspaceId}/datasets/{datasetId}/refreshes
{
  "type": "Automatic"
}

フレーミングは Import の更新(数分から数時間)と比べて非常に高速です(数秒)。ほぼリアルタイムのデータを得るには、フレーミングを頻繁にスケジュールします。

OneLake

OneLake は Fabric の統合データレイクです。Azure Data Lake Storage Gen2 上に構築され、デルタ形式を使用する、すべての分析データのための単一のストアです。

OneLake ショートカット

データをコピーせずに外部データに接続します。

ショートカットの種類ソースユースケース
OneLake別の Fabric アイテムワークスペース間でのデータ共有
ADLS Gen2Azure Data Lake既存の Azure データ
S3Amazon S3マルチクラウドデータ
GCSGoogle Cloud Storageマルチクラウドデータ
DataverseDynamics 365ビジネスアプリのデータ
OneLake File API

プログラムから OneLake データにアクセスします。

# Using Azure Storage SDK (OneLake supports ADLS Gen2 API)
from azure.storage.filedatalake import DataLakeServiceClient

service_client = DataLakeServiceClient(
    account_url="https://onelake.dfs.fabric.microsoft.com",
    credential=token_credential
)

file_system_client = service_client.get_file_system_client(workspace_id)
directory_client = file_system_client.get_directory_client(f"{lakehouse_name}.Lakehouse/Tables")

Fabric Lakehouse

レイクハウスは、データレイクの柔軟性とウェアハウスの SQL 機能を組み合わせます。

Power BI 接続:

  • SQL 分析エンドポイント: DirectQuery または Direct Lake 用の読み取り専用 SQL エンドポイント
  • デルタテーブル: Direct Lake のネイティブ形式
  • ノートブック: Spark ノートブックからデータを書き込み、Power BI で読み取る
Lakehouse から Power BI へのフロー
[Data Sources] --> [Fabric Notebooks/Pipelines] --> [Lakehouse Delta Tables]
     |                                                       |
     v                                                       v
[Power Query Dataflows Gen2]                    [Direct Lake Semantic Model]
                                                             |
                                                             v
                                                     [Power BI Reports]

Fabric Warehouse

Fabric のフルマネージド SQL ウェアハウスです。

  • T-SQL サポート: 完全な DML(INSERT、UPDATE、DELETE、MERGE)
  • 自動分散ストレージ: インデックスのチューニングは不要です
  • Direct Lake 互換: テーブルを Direct Lake ソースとして利用できます
  • データベース間クエリ: ウェアハウスとレイクハウスをまたいでクエリできます

Dataflow Gen2

Power BI Dataflows の進化版である、Fabric のクラウドベース ETL です。

機能Dataflow Gen1Dataflow Gen2
出力先Power BI データセットのみLakehouse、Warehouse、KQL DB、Azure SQL、ADLS Gen2、SharePoint
コンピューティングPower Query OnlinePower Query Online + Fabric Spark
ステージングオプション(Premium)常に有効
増分更新限定的完全サポート(Lakehouse では 2025 年に GA)
監視基本機能Fabric 監視ハブ
CI/CD非対応Git 統合 + デプロイメントパイプライン(2025 年)
変数ライブラリ非対応パラメーター化されたソースパスと式(2025 年)
発行パフォーマンスシングルスレッドの検証クエリ検証の並列化(2026 年)

Gen1 の非推奨化: Microsoft は Gen1 がレガシーであると発表しました。新規開発ではすべて Gen2 に移行してください。Gen2 は、Gen1 のすべてのコネクタに加え、Fabric ネイティブの出力先をサポートします。

Dataflow Gen2 の出力先(2025~2026 年)
出力先プロトコル
Fabric Lakehouse のデルタテーブルDelta/Parquet
Fabric Warehouse のテーブルT-SQL
Fabric KQL Database のテーブルKQL
Fabric SQL Database のテーブルT-SQL
Azure SQL Database のテーブルT-SQL
Azure Data Explorer(Kusto)のテーブルKQL
ADLS Gen2 のファイルファイル(CSV、Parquet)
SharePoint のファイルファイル
Dataflow Gen2 から Direct Lake へのパイプライン
  1. Fabric ワークスペースで Dataflow Gen2 を作成します
  2. データソースに接続します(任意の Power Query コネクタ)
  3. 宛先を Lakehouse に設定します(Delta テーブルが作成されます)
  4. Lakehouse テーブルの上にセマンティックモデルを作成します(Direct Lake)
  5. セマンティックモデル上にレポートを作成します

リアルタイム インテリジェンス

Fabric のリアルタイム インテリジェンス項目では、ALM ライフサイクル管理が GA になりました(2025 年):

項目ALM サポート統合
EventstreamGit + デプロイメント パイプラインEvent Hubs、Kafka、IoT Hub、カスタム API からデータを取り込みます
EventhouseGit + デプロイメント パイプラインKQL データベースを格納します
KQL DatabaseGit + デプロイメント パイプラインPower BI からの DirectQuery
Real-time DashboardGit + デプロイメント パイプラインストリーミング向けの Fabric ネイティブ ダッシュボード
Data ActivatorGit + デプロイメント パイプラインデータ条件に基づくアラート/トリガー
Eventstream から Power BI へのパイプライン
[Event Hubs/Kafka/IoT Hub] --> [Eventstream] --> [KQL Database] --> [Power BI DirectQuery]
                                     |
                                     +--> [Lakehouse] --> [Power BI Direct Lake]

データ準備用ノートブック

Fabric ノートブック(PySpark/Spark SQL)で、Power BI が使用するデータを書き込みます:

# Write DataFrame to lakehouse delta table
df.write.format("delta").mode("overwrite").saveAsTable("Sales")

# Optimized write with partitioning
df.write.format("delta") \
    .partitionBy("Year", "Month") \
    .mode("overwrite") \
    .option("overwriteSchema", "true") \
    .saveAsTable("Sales")

# V-Order optimization (improves Direct Lake read performance)
spark.conf.set("spark.sql.parquet.vorder.enabled", "true")
df.write.format("delta").mode("overwrite").saveAsTable("Sales")

V-Order: Direct Lake での読み取りを高速化するため、Parquet データを並べ替える書き込み時の最適化です。ノートブックまたはパイプラインの構成で有効にします。

Power BI のコンテキストでの Fabric 項目

Fabric 項目Power BI との統合
LakehouseDirect Lake、DQ 用 SQL エンドポイント
WarehouseDirect Lake、T-SQL クエリ
KQL DatabaseKQL コネクタ経由の DirectQuery
Notebooksデータ準備、sempy によるモデル管理
Data Pipelines更新とデータ移動のオーケストレーション
Dataflow Gen2DL での利用に向けた Lakehouse への ETL
Eventstreamリアルタイムデータを KQL に送り、その後 PBI に送ります
ML Modelsノートブックでスコアリングし、結果を Lakehouse に送ります

Semantic Link(sempy)

Fabric ノートブックで Power BI セマンティックモデルとやり取りするための Python ライブラリ:

import sempy.fabric as fabric

# List datasets in workspace
datasets = fabric.list_datasets()

# Read data from semantic model using DAX
df = fabric.evaluate_dax(
    dataset="SalesModel",
    dax_string="EVALUATE SUMMARIZECOLUMNS('Date'[Year], 'Product'[Category], \"Sales\", [Total Sales])"
)

# Read model metadata
tables = fabric.list_tables(dataset="SalesModel")
measures = fabric.list_measures(dataset="SalesModel")

# Refresh dataset
fabric.refresh_dataset(dataset="SalesModel")

Direct Lake を使用した複合モデル(2025 年プレビュー)

単一のセマンティックモデル内で、Direct Lake テーブルと Import テーブルを組み合わせます:

ソーステーブルストレージ モード使用する場面
Lakehouse ファクトテーブルDirect Lake大量のトランザクションデータ
Lakehouse ディメンションDirect Lakeゴールドレイヤーの共有ディメンション
外部参照データImportFabric にない小規模なテーブル
予算/予測ImportExcel または外部ソースのデータ

主な考慮事項: DL テーブルと Import テーブルの両方を含む複合モデルのクエリでは、パフォーマンス特性が異なる場合があります。本番環境のデータ量でテストしてください。

追加リソース

参照ファイル
  • references/fabric-architecture-patterns.md -- メダリオン アーキテクチャ、データメッシュのパターン、Fabric ワークスペースの設計戦略

コメント