Skills for Fabric 技術テスト実績レポート
Skills for Fabric 調査まとめ (2026-10版)で紹介したスキルを、Fabric の無料トライアル環境と Copilot CLI で実際に試した記録です。アイテム一覧の取得、サンプル CSV の取り込み、Delta テーブル化、月別集計までの操作と、途中でつまずいた点をまとめています。
- 実施日: 2026-10-08
- 目的: 個人の Azure アカウントから Fabric の無料トライアルを用意し、microsoft/skills-for-fabric を Copilot CLI で試す
- 情報源: 環境構築までの AI アシスタントとのやり取りの記録と、Copilot CLI でスキルを実行した際の操作ログ
1. 結果サマリ
| 項目 | 結果 |
|---|---|
| Entra テナント作成 | 成功(<ドメイン>.onmicrosoft.com、Entra ID Free) |
| Fabric トライアル容量 | 有効(SKU FTL4、Southeast Asia、Active) |
| ワークスペース | SkillTest を作成済みで、トライアル容量を割り当て済み |
| Fabric REST API への接続 | 成功(az login + az rest) |
| Lakehouse 作成 | 成功(lh_skilltest) |
| Skills for Fabric の導入 | 成功(fabric-skills@fabric-collection、24 スキル) |
| アイテム一覧、CSV 取り込み、Delta テーブル化、月別集計 | すべて成功 |
2. 環境情報
| 項目 | 値 |
|---|---|
| テナント ID | <テナントID> |
| プライマリドメイン | <ドメイン>.onmicrosoft.com |
ワークスペース SkillTest |
<ワークスペースID> |
| トライアル容量 ID | <容量ID>(作成は 2026-10-08 07:03 UTC。期限は約 60 日後の見込みで、ポータルで確認が必要) |
Lakehouse lh_skilltest |
<LakehouseID> |
| SQL エンドポイント | <SQLエンドポイントID> |
ノートブック ingest_sample_sales |
<ノートブックID> |
| 取り込みジョブ | <ジョブID> |
My workspace(Personal)と、Premium Per User - Reserved(PP3)の容量も API で見えていたが、テストでは使っていない。
3. 実施の時系列
3.1 アカウントと環境の準備(チャット)
- 課題: 個人アカウントだと Entra テナントがなく、Fabric トライアルを作れない。
- 方針: Microsoft 365 Developer Program のテナントか、自分の Entra テナントを使う案を提示した。この環境では、自分の Entra テナントを使う形で進んだ。
- テナントの作成: テナント ID
<テナントID>と<ドメイン>.onmicrosoft.comを確認した。 az loginの失敗: ユーザー名とパスワードをコマンドラインに渡す方式で実行すると、次のエラーになった。AADSTS50076(MFA が必須)- この方式は MFA 環境では使えない。
- 対処:
az login --tenant <ID> --allow-no-subscriptions --use-device-codeを案内し、ログインに成功した。- テナントに MSDN サブスクリプション(Visual Studio Ultimate)が見えていた。
- Fabric API の疎通確認
az account get-access-token --resource https://api.fabric.microsoft.comでトークンを取得できた(期限 17:40)。GET /v1/workspacesでMy workspaceとSkillTestが返った。SkillTestには容量が割り当て済みだった。
- 容量の確認:
GET /v1/capacitiesで、Trial-<日時>-...(FTL4、Active)を確認した。 - Lakehouse 作成(手動、
az rest)
結果はaz rest --method post --resource https://api.fabric.microsoft.com \ --url https://api.fabric.microsoft.com/v1/workspaces/<ワークスペースID>/lakehouses \ --body '{"displayName":"lh_skilltest"}'lh_skilltest(<LakehouseID>)の作成成功だった。
3.2 Skills for Fabric の導入
-
リポジトリ:
microsoft/skills-for-fabric(GitHub 検索で特定)。 -
導入コマンド(Copilot CLI):
/plugin marketplace add microsoft/skills-for-fabric /plugin install fabric-skills@fabric-collection -
結果: 24 スキルのインストールに成功した。
-
MCP サーバーの状態:
サーバー 状態 powerbi-modeling-mcp 起動に時間がかかった fabric-sqlendpoint 起動に時間がかかった FabricIQ 起動に時間がかかった github-mcp-server 接続失敗(Fabric とは無関係) この 3 つは、起動の待機がタイムアウトした後も継続して起動を試みていた。
3.3 Copilot CLI でのテスト
シナリオ 1: アイテム一覧(07:20)
-
プロンプト: 「SkillTest ワークスペース (<ワークスペースID>) のアイテム一覧を出して」
-
動作:
fabric-skills:FabricAdminエージェントがサブエージェントとして起動した。spark-cliスキルを読み込み、GET /v1/workspaces/{id}でワークスペースを確認した。- 続けて
GET /v1/workspaces/{id}/itemsで一覧を取得した。読み取りのみ。
-
結果:
名前 種類 ID lh_skilltest SQLEndpoint <SQLエンドポイントID>lh_skilltest Lakehouse <LakehouseID> -
補足: 全 API 呼び出しに、テレメトリ用ヘッダー
x-ms-fabric-skill: spark-cliが付いていた(スキルの必須仕様)。
シナリオ 2: CSV 作成と Delta テーブル化(07:21〜07:26)
-
プロンプト: 「lh_skilltest に、売上のサンプルCSVを作って取り込み、Delta テーブル sales にして」
-
経緯:
順 試行 結果 1 OneLake(DFS API)へ curlでFiles/samplesディレクトリを作成(Lakehouse を ID 指定)HTTP 400 2 同じ操作を Lakehouse を名前( lh_skilltest.Lakehouse)で指定して再試行HTTP 400 3 方式を変更: ノートブックを作ってその中で CSV 生成と取り込みを行う 成功 4 ノートブックの作成スクリプトで jqを使おうとしたjqが未導入で失敗。python3に切り替えて成功(HTTP 202)5 ノートブック実行の最初の API 呼び出し HTTP 411(Length Required)。ジョブは作られなかったことを確認した 6 本文なしの POST に Content-Length: 0を付けて再実行成功 -
作成したノートブック
ingest_sample_salesの処理内容:- 5 件の売上 CSV を
Files/samples/sales.csvに保存する。 spark.readで読み込み、sale_dateを日付型へ変換する。- Delta テーブル
salesにoverwriteで書き込む。
- 5 件の売上 CSV を
-
サンプルデータ:
sale_id sale_date product region quantity unit_price 1001 2026-10-01 Laptop Tokyo 2 120000.00 1002 2026-10-02 Monitor Osaka 3 35000.00 1003 2026-10-03 Keyboard Tokyo 5 8500.00 1004 2026-10-04 Mouse Nagoya 10 3200.00 1005 2026-10-05 Docking Station Osaka 2 18000.00 -
実行結果: ジョブ
<ジョブID>はNotStarted→InProgress→Completed。実行時間は約 49 秒(07:24:07〜07:24:56 UTC)。 -
検証:
sqldw-cliスキルに切り替えて SQL エンドポイントで確認しようとした。ただしsqlcmdが未導入で、MCP のfabric-sqlendpointも接続待ちだったため、SQL での件数確認は実施されなかった。取り込み完了はジョブのCompletedで確認した。
シナリオ 3: 月別集計(07:27 と 08:10)
-
プロンプト: 「sales テーブルを月別に集計して」(2 回実施)
-
動作:
spark-cliの consumption モードで、Livy API 経由の PySpark セッションを使った。sqldw-cliは使っていない。lh_skilltestの ID を名前から解決する。- idle の Livy セッションがあれば再利用し、なければ新規作成する(
Starter Pool)。作成した場合は終了時に削除する。 statementsに PySpark のコードを投入し、結果をポーリングする。
-
実行された集計コード:
from pyspark.sql import functions as F result = ( spark.table("sales") .groupBy(F.date_format("sale_date", "yyyy-MM").alias("sales_month")) .agg( F.count("sale_id").alias("transaction_count"), F.sum("quantity").alias("total_quantity"), F.round(F.sum(F.col("quantity") * F.col("unit_price")), 2).alias("total_sales"), ) .orderBy("sales_month") ) -
結果(2 回とも同じ):
月 売上件数 販売数量 売上金額 2026-10 5 22 455,500.00 手計算の確認: 240,000 + 105,000 + 42,500 + 32,000 + 36,000 = 455,500。一致した。
4. 「実行されたクエリの確認方法」についての訂正
チャットでは、SQL 分析エンドポイントの queryinsights.exec_requests_history で確認する方法を最初に案内した。ただしセッションログを確認すると、集計は SQL エンドポイントではなく Spark(Livy)で実行されていた。そのため、次のとおり訂正する。
queryinsightsには、今回の集計は記録されない。- 実行内容を確認できる場所:
- Copilot CLI のセッションログ。PySpark のコードがそのまま残っている。
- Fabric ポータルの「モニター」ハブ。ノートブックの実行ジョブ(
<ジョブID>)の履歴はここで確認できる。Livy の statement はノートブック実行と別枠の履歴になる可能性があり、表示されるかは未確認。
- SQL でも集計したい場合は、
fabric-sqlendpointMCP の接続を確認してから、sqldw-cliで再実行する。
5. 学び・注意点
うまくいった点
- Entra ID Free のテナントでも、Fabric トライアル容量を使えた。
- 自然言語の指示で、アイテム確認、取り込み、集計まで進められた。
- 失敗時にスキルが原因に応じて方式を切り替えた。
- OneLake の直接アップロードで 400 が出た場合は、ノートブック方式に切り替えた。
jqが未導入の場合は、python3に切り替えた。
つまずき・環境依存
| 事象 | 原因・対処 |
|---|---|
az login で AADSTS50076 |
MFA が必須。パスワード渡しは不可。デバイスコード認証に切り替えた |
| OneLake DFS への PUT が HTTP 400 | 原因は未特定。ノートブック方式で回避した |
| HTTP 411 | 本文なし POST に Content-Length: 0 が必要 |
rg、jq、sqlcmd が未導入 |
代替コマンド(grep、python3)で対応。SQL での検証は未実施 |
| MCP サーバーの起動が遅い | 今回のテストには影響しなかった |
セキュリティ上の注意
- パスワードの平文入力: チャットとシェルの履歴に、ユーザーのパスワードが平文で残った。パスワードを変更し、
~/.bash_historyから該当行を削除する(本レポートにはパスワードを記載していない)。 - 本レポートの ID 類(テナント ID など)は機密情報ではないが、共有範囲には配慮する。
- スキルが実行するコマンドは、実行前に内容を確認する運用が望ましい。
後片付け・次のステップ
- トライアルは 60 日間の見込み。期限後は容量が停止する。
sales、ingest_sample_sales、lh_skilltestは残したままになっている。不要になったらSkillTestワークスペースごと削除する。- 未試行のもの:
sqldw-cli(SQL エンドポイント経由の検証と集計)- Power BI 系(
powerbi-authoring) - FabricIQ
- 他のスキル(24 個のうち、今回使ったのは
spark-cliとsqldw-cliの読み込みのみ)
6. 付録: 再現手順(要約)
# 1. ログイン(MFA 対応)
az login --tenant <テナントID> --allow-no-subscriptions --use-device-code
# 2. 疎通確認
az rest --method get --resource https://api.fabric.microsoft.com --url https://api.fabric.microsoft.com/v1/workspaces
az rest --method get --resource https://api.fabric.microsoft.com --url https://api.fabric.microsoft.com/v1/capacities
# 3. Lakehouse 作成(上記 3.1 を参照)
# 4. Copilot CLI でスキル導入
# /plugin marketplace add microsoft/skills-for-fabric
# /plugin install fabric-skills@fabric-collection
# 5. プロンプトでテスト
# - SkillTest ワークスペース (<ワークスペースID>) のアイテム一覧を出して
# - lh_skilltest に、売上のサンプルCSVを作って取り込み、Delta テーブル sales にして
# - sales テーブルを月別に集計して