4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI を使用して Power BI セマンティック モデルを作成・編集する 2 つの方法

4
Last updated at Posted at 2026-04-03

はじめに

以前の記事では、Power BI の DAX クエリ ビューで Copilot を使い、セマンティック モデルにメジャーを効率的に作成する方法を紹介しました。DAX クエリ ビューの Copilot は「DAX クエリの生成・説明」が中心で、メジャーのたたき台作りやドキュメント生成に強い機能です。

今回はその続編として、セマンティック モデルを AI で作成・編集する 2 つの方法を比較します。

# 方法 概要
DAX クエリ ビューの Copilot(Power BI Desktop / Fabric ポータル) DAX クエリ ビュー内の Copilot で、メジャーの生成・DAX の説明・クエリの作成を行う(GA)
Power BI Modeling MCP Server(VS Code + GitHub Copilot 等) MCP(Model Context Protocol)サーバー経由で、外部の AI エージェントからセマンティック モデルを自然言語で操作する(パブリック プレビュー)

方法① DAX クエリ ビューの Copilot (Power BI Desktop / Fabric ポータル)

DAX クエリ ビューとは

DAX クエリ ビューは、Power BI Desktop および Fabric ポータル上のセマンティック モデルで DAX クエリを記述・実行できるエディターです。2024 年 3 月の GA 以降、Copilot 統合が進み、自然言語で DAX クエリやメジャーを生成できるようになっています。

Copilot でできること(3 つの機能)

DAX クエリ ビューの Copilot は、主に以下の 3 種類の操作を提供します。

機能 説明
DAX クエリの生成 自然言語の指示から EVALUATE 文を含む DAX クエリを生成する
DAX の説明 既存の DAX 式やクエリの動作を日本語で解説する
メジャーの生成 自然言語の指示からメジャー定義を生成し、DEFINE MEASURE 句でプレビュー → モデルへ反映する

前回の記事では、3 番目の「メジャーの生成」に焦点を当て、Copilot が提案したメジャーをその場で実行結果を確認しながらモデルに追加する手順を紹介しました。

利用の前提条件

  • Fabric 容量(F SKU)または Power BI Premium 容量 — Copilot の利用に必要(以前は F64 以上の制限があったが、現在は撤廃済み)
  • Power BI Desktop(最新版推奨)または Fabric ポータルのセマンティック モデル
  • テナント管理者が Copilot 機能を有効にしていること

Copilot の利用には Fabric 容量が必要です。Pro / PPU ライセンスのみの環境では DAX クエリ ビュー自体は利用できますが、Copilot 機能は使用できません。

基本的な手順

前回の記事で紹介したワークフローをまとめると、以下の流れになります。

  1. DAX クエリ ビューを開く:Power BI Desktop のリボンから DAX クエリ ビューに切り替える
  2. Copilot にメジャーを依頼:自然言語で「売上の前年比を計算するメジャーを作成して」等と入力
  3. 生成結果をプレビューDEFINE MEASURE + EVALUATE 形式で生成された DAX を実行し、計算結果を確認
  4. モデルに反映 — 問題なければ「モデルの更新」でセマンティック モデルにメジャーを追加
  5. 反復・調整 — 修正が必要な場合は Copilot に追加の指示を出して DAX を調整

適したユースケース

  • メジャーの「たたき台」を素早く作成し、実行結果を見ながら調整したい場合
  • DAX に不慣れなユーザーが Copilot の提案をもとに学習しながら開発する場合
  • 個別のメジャーやクエリを対話的に作成・検証する場合

方法② Power BI Modeling MCP Server(VS Code + GitHub Copilot 等)

MCP とは

MCP(Model Context Protocol) は、AI エージェントが外部ツールやサービスとやり取りするためのオープンな通信プロトコルです。MCP サーバーがツール側の機能を公開し、MCP クライアント(AI エージェント)がそれを呼び出すことで、AI が実世界のシステムを操作できるようになります。

Power BI Modeling MCP Server の概要

Power BI Modeling MCP Server は、Microsoft が公式に提供するオープンソースの MCP サーバーです。ローカルで動作し、AI エージェント(GitHub Copilot、Claude など)と Power BI セマンティック モデルをシームレスに接続します。

  • ステータス: パブリック プレビュー(2026 年 4 月時点)
  • ライセンス: MIT

自然言語で指示するだけで、テーブル・列・メジャー・リレーションシップなどのモデリング操作を AI エージェントが実行します。

インストール方法 (VS Code 推奨)

  1. Visual Studio Code をインストール
  2. GitHub CopilotGitHub Copilot Chat 拡張機能をインストール
  3. Power BI Modeling MCP VS Code 拡張機能 をインストール
  4. GitHub Copilot Chat を開き、powerbi-modeling-mcp が利用可能であることを確認

image.png

接続先の種類

Power BI Modeling MCP Server は、以下の 3 種類のセマンティック モデルに接続できます。

接続先 プロンプト例
Power BI Desktop Connect to 'Sales Report' in Power BI Desktop
Fabric ワークスペース Connect to semantic model 'Sales Model' in Fabric Workspace 'Production'
PBIP ファイル Open semantic model from PBIP folder 'C:\Projects\Sales\Sales.SemanticModel\definition'
主なツール(操作カテゴリ)
ツール カテゴリ できること
connection_operations Power BI Desktop や Fabric ワークスペースへの接続
database_operations セマンティック モデルの管理、TMDL のインポート/エクスポート
model_operations モデル全体の取得・作成・更新・リネーム・リフレッシュ
table_operations テーブルの作成・更新・削除・リネーム
column_operations 列の作成・更新・削除・リネーム
measure_operations メジャーの作成・更新・削除・リネーム・テーブル間移動
relationship_operations リレーションシップの作成・更新・削除・有効化/無効化
dax_query_operations DAX クエリの実行・検証・生成
calculation_group_operations 計算グループと計算項目の管理
security_role_operations セキュリティ ロールと RLS の設定
culture_operations 多言語対応のカルチャ管理
object_translation_operations モデル オブジェクトの翻訳管理
partition_operations テーブル パーティションの管理
perspective_operations パースペクティブの管理
named_expression_operations 名前付き式と Power Query パラメーターの管理
trace_operations Analysis Services イベントのトレースとキャプチャ

実際の操作例

本記事の執筆にあたり、Power BI Desktop のサンプル データ Financial Sample.xlsx を読み込んだだけのフラットな 1 テーブル モデルに対して、VS Code + GitHub Copilot + Power BI Modeling MCP Server で以下の操作を自然言語の指示だけで実行しました。

スタースキーマの構築: 「スタースキーマにして」と指示するだけで、AI がファクトテーブルから DimSegmentDimCountryDimProductDimDiscountBandDimDate の 5 つのディメンション テーブルを自動生成し、リレーションシップを一括作成しました。

ベストプラクティスの適用: 「モデリングのベストプラクティスに合わせて修正して」と指示すると、テーブルの Fact/Dim 命名規約への一括リネーム、FK 列と冗長列の非表示化、DimDate の日付テーブル マーク、MonthName の月番号ソート、Country 列の地理データ カテゴリ設定、数値列の書式・SummarizeBy 設定、全テーブルへの説明追加をまとめて実行しました。

メジャーの一括作成: 「スタースキーマにして」の指示時に基本メジャー 6 個(Total Sales、Total Profit 等)を自動作成。続けて「すべてのメジャーに対して前月と比較するメジャーを追加して」と指示すると、前月値(PM)と前月比変化率(MoM%)の 12 個を一括作成し、MoM 表示フォルダに自動分類しました。さらに「すべてのメジャーの日本語バージョンを作成して」と指示するだけで、全 18 メジャーの日本語版を一括生成しました。

ドキュメントの自動付与: 「すべてのテーブルと列の説明に日本語の説明を追加して」と指示し、6 テーブル・24 列に対して英語・日本語のバイリンガル説明を一括追加しました。

このように、従来は手作業で数時間かかるモデリング作業を、自然言語の対話だけで短時間に完了できます。

このセマンティック モデルの構造を文書化したmdファイルを作成してもらったので、興味のある方は開いてみてください。

financials_mcp セマンティック モデル 構造ドキュメント # financials_mcp セマンティック モデル構造ドキュメント(2026-04-03)

Power BI Desktop の financials_mcp セマンティック モデルの構造を文書化したリファレンスドキュメント。

  • モデル名: Model
  • モード: Import
  • カルチャ: ja-JP
  • 最終更新: 2026-04-02T08:23:38(構造変更)

1. テーブル一覧

テーブル名 種類 列数 メジャー数 説明
FactSales ファクト 13 36 売上トランザクションを格納。収益・原価・利益の数値を保持する
DimSegment ディメンション 2 0 顧客セグメント(Government, Midmarket, Channel Partners, Enterprise, Small Business)
DimCountry ディメンション 2 0 国・地域ディメンション。地理的分析に使用する
DimDiscountBand ディメンション 1 0 割引帯(None, Low, Medium, High)
DimDate ディメンション(日付テーブル) 5 0 日付ディメンション。タイムインテリジェンス分析用。モデルの日付テーブルとしてマーク済み
DimProduct ディメンション 1 0 製品ディメンション

上記のほか Power BI が自動生成する DateTableTemplate および LocalDateTable が存在するが、ユーザー定義の DimDate を優先して使用している。


2. テーブル詳細

2.1 FactSales
列名 データ型 説明
Segment String セグメント名(FK: DimSegment)
Country String 国名(FK: DimCountry)
Product String 製品名(FK: DimProduct)
Discount Band String 割引帯(FK: DimDiscountBand)
Units Sold Double 販売数量
Manufacturing Price Int64 製造原価(単価)
Sale Price Int64 販売価格(単価)
Gross Sales Double 総売上(割引前)
Discounts Double 割引額
Sales Double 売上(割引後)
COGS Double 売上原価
Profit Double 利益(Sales − COGS)
Date DateTime 取引日(FK: DimDate)
2.2 DimSegment
列名 データ型 説明
SegmentKey Int64 セグメントの代理キー
Segment String セグメント名
2.3 DimCountry
列名 データ型 説明
CountryKey Int64 国の代理キー
Country String 国名
2.4 DimDiscountBand
列名 データ型 説明
Discount Band String 割引帯(None / Low / Medium / High)
2.5 DimDate
列名 データ型 説明
Date DateTime 日付(主キー)
Year Int64
MonthNumber Int64 月番号(1〜12)。MonthName のソート用
MonthName String 月名(英語表記)
Quarter String 四半期(Q1〜Q4)
2.6 DimProduct
列名 データ型 説明
Product String 製品名

3. リレーションシップ

名前 From テーブル From 列 To テーブル To 列 カーディナリティ クロスフィルター アクティブ
Fact_to_DimSegment FactSales Segment DimSegment Segment Many → One 一方向 Yes
Fact_to_DimCountry FactSales Country DimCountry Country Many → One 一方向 Yes
Fact_to_DimDiscountBand FactSales Discount Band DimDiscountBand Discount Band Many → One 一方向 Yes
Fact_to_DimDate FactSales Date DimDate Date Many → One 一方向 Yes
Fact_to_DimProduct FactSales Product DimProduct Product Many → One 一方向 Yes
(自動生成) FactSales Date LocalDateTable Date Many → One 一方向 No(非アクティブ)

典型的なスター スキーマ構成。すべてのリレーションシップが FactSales を中心に放射状に接続されている。


4. メジャー一覧

すべてのメジャーは FactSales テーブルに定義されている。

4.1 基本メジャー(表示フォルダなし)
メジャー名 DAX 式 書式
Total Sales SUM(FactSales[Sales]) $#,##0.00
Total Profit SUM(FactSales[Profit]) $#,##0.00
Total Units Sold SUM(FactSales[Units Sold]) #,##0
Total COGS SUM(FactSales[COGS]) $#,##0.00
Total Gross Sales SUM(FactSales[Gross Sales]) $#,##0.00
Profit Margin DIVIDE(SUM(FactSales[Profit]), SUM(FactSales[Sales]), 0) 0.00%
4.2 前月比メジャー(表示フォルダ: MoM)
メジャー名 DAX 式 書式
Total Sales PM CALCULATE([Total Sales], DATEADD(DimDate[Date], -1, MONTH)) $#,##0.00
Total Sales MoM% VAR _current = [Total Sales] VAR _prev = [Total Sales PM] RETURN DIVIDE(_current - _prev, _prev) 0.00%
Total Profit PM CALCULATE([Total Profit], DATEADD(DimDate[Date], -1, MONTH)) $#,##0.00
Total Profit MoM% VAR _current = [Total Profit] VAR _prev = [Total Profit PM] RETURN DIVIDE(_current - _prev, _prev) 0.00%
Total Units Sold PM CALCULATE([Total Units Sold], DATEADD(DimDate[Date], -1, MONTH)) #,##0
Total Units Sold MoM% VAR _current = [Total Units Sold] VAR _prev = [Total Units Sold PM] RETURN DIVIDE(_current - _prev, _prev) 0.00%
Total COGS PM CALCULATE([Total COGS], DATEADD(DimDate[Date], -1, MONTH)) $#,##0.00
Total COGS MoM% VAR _current = [Total COGS] VAR _prev = [Total COGS PM] RETURN DIVIDE(_current - _prev, _prev) 0.00%
Total Gross Sales PM CALCULATE([Total Gross Sales], DATEADD(DimDate[Date], -1, MONTH)) $#,##0.00
Total Gross Sales MoM% VAR _current = [Total Gross Sales] VAR _prev = [Total Gross Sales PM] RETURN DIVIDE(_current - _prev, _prev) 0.00%
Profit Margin PM CALCULATE([Profit Margin], DATEADD(DimDate[Date], -1, MONTH)) 0.00%
Profit Margin MoM [Profit Margin] - [Profit Margin PM] 0.00 pp
4.3 日本語ラッパーメジャー(表示フォルダ: 基本)

英語メジャーへの参照として定義されている。日本語レポート向けの表示名を提供する。

メジャー名 DAX 式 書式
売上合計 [Total Sales] $#,##0.00
利益合計 [Total Profit] $#,##0.00
販売数量合計 [Total Units Sold] #,##0
原価合計 [Total COGS] $#,##0.00
総売上合計 [Total Gross Sales] $#,##0.00
利益率 [Profit Margin] 0.00%
4.4 日本語ラッパーメジャー(表示フォルダ: 前月比)
メジャー名 DAX 式 書式
売上合計 前月 [Total Sales PM] $#,##0.00
売上合計 前月比% [Total Sales MoM%] 0.00%
利益合計 前月 [Total Profit PM] $#,##0.00
利益合計 前月比% [Total Profit MoM%] 0.00%
販売数量合計 前月 [Total Units Sold PM] #,##0
販売数量合計 前月比% [Total Units Sold MoM%] 0.00%
原価合計 前月 [Total COGS PM] $#,##0.00
原価合計 前月比% [Total COGS MoM%] 0.00%
総売上合計 前月 [Total Gross Sales PM] $#,##0.00
総売上合計 前月比% [Total Gross Sales MoM%] 0.00%
利益率 前月 [Profit Margin PM] 0.00%
利益率 前月比 [Profit Margin MoM] 0.00 pp

5. メジャー依存関係

Total Sales ─────────┬─ Total Sales PM ─────── Total Sales MoM%
                     └─ Profit Margin ────┬── Profit Margin PM ─── Profit Margin MoM
                                          │
Total Profit ────────┬─ Total Profit PM ──── Total Profit MoM%
                     └─ Profit Margin (via SUM)
Total Units Sold ────── Total Units Sold PM ── Total Units Sold MoM%
Total COGS ──────────── Total COGS PM ──────── Total COGS MoM%
Total Gross Sales ───── Total Gross Sales PM ── Total Gross Sales MoM%

日本語ラッパーメジャー(売上合計, 利益合計 等)は、対応する英語メジャーへの単純参照のため上記ツリーの末端に位置する。


6. スキーマ概要図

┌─────────────┐
│  DimSegment │
│  ─────────  │
│  SegmentKey │
│  Segment    │◄──────┐
└─────────────┘       │
                      │ M:1
┌─────────────┐       │      ┌──────────────────────────────────────────┐
│  DimCountry │       │      │              FactSales                  │
│  ─────────  │       │      │  ──────────────────────────────────     │
│  CountryKey │       ├──────│  Segment, Country, Product,             │
│  Country    │◄──────┤      │  Discount Band, Units Sold,             │
└─────────────┘       │ M:1  │  Manufacturing Price, Sale Price,       │
                      │      │  Gross Sales, Discounts, Sales,         │
┌───────────────┐     │      │  COGS, Profit, Date                    │
│ DimDiscountBand│    │      │                                          │
│ ─────────────  │    │      │  [36 measures]                          │
│ Discount Band  │◄───┤      └──────────────────────────────────────────┘
└───────────────┘     │ M:1          │              │
                      │              │ M:1          │ M:1
┌─────────────┐       │      ┌───────┴──────┐  ┌───┴──────────┐
│  DimProduct │       │      │   DimDate     │  │ LocalDateTable│
│  ─────────  │       │      │   ────────   │  │ (非アクティブ)│
│  Product    │◄──────┘      │   Date (PK)  │  └──────────────┘
└─────────────┘              │   Year       │
                             │   MonthNumber│
                             │   MonthName  │
                             │   Quarter    │
                             └──────────────┘

データ プライバシーの考慮事項

MCP サーバーはローカルで動作し、既存の資格情報と権限を使用してセマンティック モデルに接続します。Power BI のセキュリティ制御はバイパスされません。ただし、MCP サーバーが取得したメタデータやクエリ結果は MCP クライアント(VS Code など)経由で LLM プロバイダーに送信される可能性があります。

AI エージェントをセマンティック モデルに接続する際は、予期しない変更が行われる可能性があるため、事前にモデルのバックアップを作成してください。


2 つの方法の比較

比較項目 ① DAX クエリ ビュー Copilot ② Power BI Modeling MCP Server
動作環境 Power BI Desktop / Fabric ポータル VS Code、Claude Desktop、Cursor など MCP 対応クライアント
操作方式 DAX クエリ ビュー内で Copilot と対話 自然言語プロンプトで AI エージェントが操作を実行
対象範囲 現在開いているモデルの DAX クエリ・メジャー Power BI Desktop、Fabric ワークスペース、PBIP ファイル
主な操作 DAX クエリ生成、DAX 説明、メジャー生成 テーブル・列・メジャー・リレーションシップ・RLS・翻訳等、モデル全体の CRUD
バルク操作 1 つずつ対話的に生成・追加 AI が一括操作(数百オブジェクトの一括リネーム・翻訳等)
実行結果の確認 DAX クエリをその場で実行し結果プレビュー可能 DAX クエリの実行・検証・ベンチマーク比較が可能
前提条件 Fabric 容量(F SKU)/ Premium 容量 + Copilot 有効化 VS Code + GitHub Copilot(または他の MCP クライアント)
学習コスト 低い(Power BI Desktop 内で完結) 中程度(VS Code + MCP の概念理解が必要)
適したユースケース メジャーの対話的な作成・検証、DAX の学習 大量のモデリング作業を自然言語で一気に自動化したい
ステータス GA(一般提供) パブリック プレビュー

使い分けガイド

2 つの方法は、それぞれ異なる強みを持っています。以下のシナリオ別に使い分けを検討してください。

シナリオ おすすめ
DAX に不慣れで、メジャーの書き方を学びたい ① DAX クエリ ビュー Copilot
個別のメジャーを対話的に作成・検証したい ① DAX クエリ ビュー Copilot
Power BI Desktop 内で完結させたい ① DAX クエリ ビュー Copilot
数十~数百のメジャーを一括で作成・リネームしたい ② Power BI Modeling MCP
テーブル・列・リレーションシップを含むモデル全体を構築したい ② Power BI Modeling MCP
モデルのドキュメントや翻訳を自動生成したい ② Power BI Modeling MCP
複数モデル間で DAX のベンチマーク比較をしたい ② Power BI Modeling MCP
VS Code + GitHub Copilot の開発環境を活用したい ② Power BI Modeling MCP

両方の方法は排他的ではなく、組み合わせて使うことで効率を最大化できます。たとえば以下のようなワークフローが考えられます。

  1. MCP でモデルのスキャフォールド(テーブル・列・リレーションシップ)を一括作成
  2. MCP で命名規則の統一やドキュメントの自動付与を実行
  3. DAX クエリ ビュー Copilot でビジネス ロジックの複雑なメジャーを対話的に作成・検証
  4. MCP でモデル全体のドキュメントを Markdown に出力してレビュー

まとめ

  • セマンティック モデルの AI 支援は、DAX クエリの生成からエージェント主導の一括モデリング操作へと広がっています。
  • DAX クエリ ビュー Copilot は、Power BI Desktop / Fabric ポータル内でメジャーの生成・検証を対話的に行える、手軽で学習コストの低いアプローチです。
  • Power BI Modeling MCP Server は、VS Code + GitHub Copilot 等の AI エージェントからセマンティック モデルを自然言語で操作できる、より自動化志向のアプローチです。
  • DAX クエリ ビュー Copilot は GA、MCP Server はパブリック プレビュー段階です。MCP Server は今後の GA に向けてツールや動作が変更される可能性があります。
  • 両者を組み合わせ、セマンティック モデルを Copilot で効率的に作成・整備し、データ エージェントや AI エージェントにおける活用につなげてみてください。

参考リンク

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?