Microsoft Fabric Data Agent

はじめに
この記事はMicrosoft Fabric Data Agentを用いた Microsoft Fabricでのデータの処理×AI Agentによる分析と意思決定を実施します。
ここでは、FabricとAI Agent Serviceに焦点を当て、AI Agentによるビッグデータ分析を最小単位にて実施します。
2025/4/1 にAI Agent ServiceからMicrosoft Fabricのコネクタがリリースされました。
このUpdateにより、Microsoft Fabric Data Agentを使用して、OneLake内のデータをAI Agentが参照出来るアプリケーションが簡単に構築することが出来ます。
すなわち、Microsoft Fabric × Azure AI Agent Serviceを連携して、以下のフローを自動化することが出来ることになります。
データレイクによる情報収集→データウェアハウスでのデータ構造化→データマートで必要箇所のデータの区分分け→AIが必要となるデータ部分を参照し、最適な意思決定を実施→AI Agentを用いたアクションの実行
データ収集から構造化、分析、意思決定、アクションに至るまでのプロセスをいい感じにやってくれそうですね。
少し話はそれますが、データレイク・データウェアハウス・データマートの説明は以下になります。
ステージ | 主役 | 役割 (ざっくり⤴︎) | 例 (Azure) |
---|---|---|---|
① 集める | データレイク | ありのままを “全部貯める池” • 生ログ・画像・CSV・Parquet など多種多様 • スキーマ‑オン‑リード (読むときに意味づけ) • 安価で無限スケール |
Azure Data Lake Storage Gen2、Fabric OneLake |
② 整える | データウェアハウス | “精製工場” で統合・整形した高品質データ • フォーマット統一・欠損補完・型変換 • スキーマ‑オン‑ライト (書込時に定義) • 列指向・インデックスで高速集計 |
Azure Synapse Warehouse、SQL DW |
③ 届ける | データマート | “使いやすい売店” に小分けして配布 • 部門/業務特化 (販売、人事 など) • 要件に合わせて列・粒度を絞り込み • 自サービスでセルフ BI |
Fabric Data Mart、Power BI Datamart |
データレイクへのデータ蓄積とデータウェアハウスでのデータ構造化やデータマートの構築をFabricを使って行い、意思決定プロセスをAI Agent Serviceを用いてアプリケーション側で実施することが本記事の目標です。
ビッグデータ分析からAI Agentの利活用を検討されている方に参考になれば幸いです。
大目標
Microsoft FabricでOneLakeへ蓄積、Data Engineeringにて分析したデータをAI Agent経由でアプリケーションからAgentRAGを実施すること
目標とする構成
Microsoft Fabric データ エージェント利用の前提条件
Microsoft Fabric データ エージェント利用の為には以下の設定を実施する必要があります。
- F64以上の有料ファブリック容量リソースをという条件で使用する
- Fabric データ エージェントのテナント設定が有効になっている。
- Copilot テナント スイッチ が有効になっています。
- AI のクロス geo 処理が有効になっています。
- AI のクロスジオ格納が有効になっています。
- データを含む、ウェアハウス、レイクハウス、1 つ以上の Power BI セマンティック モデル、または KQL - データベースのうち少なくとも 1 つ。
- POWER BI セマンティック モデルのデータ ソースに対して、XMLA エンドポイントテナントスイッチ を介して Power BI セマンティック モデルが有効になります。
上記の設定をしていきます。
Microsoft Fabric データ エージェント利用の各種設定
F64以上の有料ファブリック容量リソースをという条件で使用する
こちらはAzureのFabric→スケール→サイズの変更からF64を選択
Fabric データ エージェントのテナント設定が有効になっている。
Fabricへアクセスして右上の歯車をクリックし、管理ポータルを選択
テナントの設定からCopilot と Azure OpenAI Serviceの箇所は全てOnに設定する
-
Copilot と Azure OpenAI テナント スイッチを有効にする をOnに設定
-
Azure OpenAI に送信されるデータは、容量の地理的領域、コンプライアンス境界、または国内クラウド インスタンスの外部で処理される可能性がある箇所も念の為Onへ設定
以下二つの設定もOnへ変更
- 容量は Fabric Copilot 容量として指定できます
- Azure OpenAI に送信されたデータは、容量の地理的リージョン、コンプライアンス境界、または国内クラウド インスタンスの外部に格納できます
Fabric データ エージェントのテナント設定を有効にするの設定を確認します。
[テナント設定] で、[Fabric データ エージェント] セクションを見つけます。
この設定を有効にするには、次のスクリーンショットに示すように、テナント設定 のオプションをオンにします。
XMLA エンドポイントを使用して Power BI セマンティック モデルの統合を有効にします。
Fabric データ エージェントは、XMLA (XML for Analysis) エンドポイントを使用して、Power BI セマンティック モデルのクエリと管理をプログラムで実行できます。 この機能を有効にするには、XMLA エンドポイントを正しく構成する必要があります。
[テナント設定]で、[統合設定] セクションに移動します。
次のスクリーンショットに示すように、[XMLA エンドポイントとオンプレミスのデータセットを使用した "Excel で分析" を許可する] を見つけて有効にします。
Fabric データ エージェントを作成
新しい Fabric データ エージェントを作成するには、まずワークスペースに移動し、[+ 新しい項目] ボタンを選択します。
次に、[すべてのアイテム] タブで、Fabric データ エージェントを選択
※2025/4/20 段階では、East US, East US2, South Central US, and West US のエリア且つF64のCUでFabricを起動していないと項目内に出てきません。
データエージェントに名前をつけてあげましょう。
Fabric データエージェントが参照するデータを選択
Fabric データ エージェントを作成した後は、レイクハウス、ウェアハウス、Power BI セマンティック モデル、KQL データベース など、最大 5 つのデータ ソースを任意の組み合わせで追加できます。 たとえば、5 つの Power BI セマンティック モデル、または 2 つの Power BI セマンティック モデル、1 つの lakehouse、1 つの KQL データベースを追加できます。
初めて Fabric データ エージェントを作成する場合は、名前を指定する際に OneLake カタログが自動的に表示され、ここからデータ ソースを追加できます。 データ ソースを追加するには、+データソース をクリックして、追加をクリック。
Fabric データエージェントの動作確認と公開
データ ソースを追加すると、Fabric データ エージェント ページの左側のペインにあるエクスプローラーに、使用可能なテーブルが選択したデータ ソースごとに設定されます。
今回選択したのは、私のzennの記事をNotebookからAPIで取得し、DataLakeに格納しています。
特徴を教えて!と質問すると、こんな感じでエクスプローラーで選択したデータソースを参照してAI が回答を考えてくれます。
では、画面上部の公開ボタンからData Agentを公開していきます。
こんな感じで公開されます。
Azure AI Agent ServiceとMicrosoft Fabric Data Agentを連携
では、AI Agent Service側からMicrosoft Fabricで公開したData AgentをAI Agentと連携させましょう。
AI Foundryにアクセスして、エージェントから新しいエージェントを作成
今回はFabric-Agentと名前をつけました。
ナレッジを+追加をクリック
Fabricを選択
作成したData Agentのコネクタを選択し接続ボタンをクリック
これでFabricとAI Agent Serviceの連携が完了です。
これをコードから呼び出す場合、コードは コードの表示
の箇所に記載してくれています。
import { AIProjectsClient } from "@azure/ai-projects";
import { DefaultAzureCredential } from "@azure/identity";
async function runAgentConversation() {
const client = AIProjectsClient.fromConnectionString(
"eastus2.api.azureml.ms;xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx;xxxxxxxxxxx",
new DefaultAzureCredential()
);
const agent = await client.agents.getAgent("asst_xxxxxxxxxxxxxxxxxxxx");
console.log(`Retrieved agent: ${agent.name}`);
const thread = await client.agents.getThread("thread_xxxxxxxxxxxxxxxxxxxxx");
console.log(`Retrieved thread, thread ID: ${thread.id}`);
const message = await client.agents.createMessage(thread.id, {
role: "user",
content: "Hello!"
});
console.log(`Created message, message ID: ${message.id}`);
// Create run
let run = await client.agents.createRun(thread.id, agent.id);
// Poll until the run reaches a terminal status
while (
run.status === "queued" ||
run.status === "in_progress"
) {
// Wait for a second
await new Promise((resolve) => setTimeout(resolve, 1000));
run = await client.agents.getRun(thread.id, run.id);
}
console.log(`Run completed with status: ${run.status}`);
// Retrieve messages
const messages = await client.agents.listMessages(thread.id);
// Display messages
for (const dataPoint of messages.data.reverse()) {
console.log(`${dataPoint.createdAt} - ${dataPoint.role}:`);
for (const contentItem of dataPoint.content) {
if (contentItem.type === "text") {
console.log(contentItem.text.value);
}
}
}
}
// Main execution
runAgentConversation().catch(error => {
console.error("An error occurred:", error);
});
是非ご活用ください。
これでBigDataの分析×AI Agentでのデータの分析及びアクションが可能となりました。
参考資料