azmon-mirroredcatalogs-operations-cli について
Azure Monitor のテレメトリを Microsoft Fabric の Mirrored Catalog に取り込み、実際の業務データと関連付けて影響分析や Operations Agent の指示を作成するスキルです。段階的な手順でデータを確認し、例から業務領域を推測しません。
主な機能
- 01Azure Monitor、Application Insights、Log Analytics のテレメトリ取り込み
- 02Mirrored Catalog アイテムの作成または再利用
- 03テレメトリテーブルの検出とスキーマ・データの検証
- 04テレメトリと業務データ・KPI の関連付け
- 05Operations Agent 向け指示の生成
活用シーン
- 01Log Analytics ワークスペースの Fabric への取り込み
- 02サービス可用性と業務成果の関係分析
- 03テレメトリと業務データに基づく Operations Agent 指示の生成
MCP 対応
実行機構として MCP サーバーやツールコントローラーに依存しない、自己完結型のスキルです。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ microsoft/ skills-for-fabric --skill azmon-mirroredcatalogs-operations-cliインストール後、Claude Code で/azmon-mirroredcatalogs-operations-cliを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
apm.ymlreferences/app-insights-dynamic-fields-reference.mdazmon-fabric-api-reference.mdbusiness-analysis-workflow.mddashboard-reference.mdeventhouse-shortcuts-reference.mdmirrored-catalog-reference.mdoauth-connection-reference.mdoperations-agent-reference.mdtelemetry-table-reference.mdworkspace-discovery-policy-reference.mdworkspace-identity-connection-reference.md詳細
テレメトリ — 必須です。 すべての
api.fabric.microsoft.com呼び出しには、x-ms-fabric-skill: azmon-mirroredcatalogs-operations-cliを含めてください (az restの場合:--headers "x-ms-fabric-skill=azmon-mirroredcatalogs-operations-cli")。 すべての LRO ポーリング、fabric_lro、リトライにも必要です。スニペットでは省略されていますが、必ず追加してください。
azmon-mirroredcatalogs-operations-cli
ユーザーをエンドツーエンドでガイドし、(1)Azure Monitor/Application Insights/ Log Analytics の可観測性データを Microsoft Fabric に Mirrored Catalog (AzMon)アイテムとしてオンボードし、(2)そのテレメトリをビジネスデータ (予約、注文、顧客、フライト、支払い、売上、テナント、アカウント、サブスクリプション、使用状況 KPI、SLA/可用性 KPI)と関連付けてビジネスへの影響に関するインサイトを導き出し、 すぐに貼り付けて使えるOperations Agent向けの指示を作成します。
これは自己完結型の Skills-for-Fabric パッケージです。実行手段として
MCP サーバーやツールコントローラーに依存しません。製品/API の知識、サポート対象の
フロー、ガードレール、モデリングルールは、このファイルと
references/*.md に記載されています。
前提知識
このスキルを実行する前に、共通ガイダンスをお読みください。
トリガーフレーズ
- Azure Monitor データを Fabric にオンボードする
- Fabric に Azure Monitor アイテムを作成する
- Application Insights を Fabric に接続する
- App Insights のテレメトリをビジネスデータと関連付ける
- LA ワークスペースを Fabric にオンボードする
- Log Analytics ワークスペースを Fabric にオンボードする
- Log Analytics ワークスペースを Fabric に接続する
- サービスの可用性が予約に影響したかどうかを把握する
- レイテンシがコンバージョンに影響したかどうかを把握する
- 例外を売上や注文と関連付ける
- Azure Monitor のビジネス影響を分析する Operations Agent を構築する
- Log Analytics データからビジネス影響に関するインサイトを作成する
このスキルを使用する場合(および関連スキル)
azmon-mirroredcatalogs-operations-cli は、Azure Monitor/
Application Insights/Log Analytics のテレメトリを Microsoft Fabric
(mirroredCatalogs エンドポイント)にオンボードし、そのテレメトリをビジネスデータと
関連付けて、Operations Agent 向けの指示を生成するためのスキルです。Azure Monitor のオンボードと
関係のない Eventhouse/KQL クエリ全般には、eventhouse-cli のコンシュームモードを
使用してください。Eventhouse アイテムとデータベースを作成する場合は、そのオーサリングモードを
使用してください。
リファレンス一覧
該当するステージで製品/API の詳細が必要な場合は、以下を参照してください。ユーザーへの回答にそのまま貼り付けず、エージェント向けのガイダンスとして使用してください。
| リファレンス | 用途 |
|---|---|
| references/azmon-fabric-api-reference.md | サポート対象のフローと UI のみで利用できるフロー、コネクターモード、Fabric のアイテム/エージェント関連機能 |
| references/workspace-identity-connection-reference.md | モード B のワークスペース ID 接続:ID のプロビジョニング/検出、ユーザーが付与する LA RBAC、WorkspaceIdentity 接続 |
| references/workspace-discovery-policy-reference.md | ステージ 3 の Fabric ワークスペース検出順序、解釈、ユーザー指定による解決、最終手段としてのブロック |
| references/oauth-connection-reference.md | モード B の OAuth 接続:読み取り専用での検出順序、再利用ルール、UI ガイドによる作成手順 |
| references/mirrored-catalog-reference.md | Mirrored Catalog アイテムの CRUD、定義、検出、監視、更新 |
| references/eventhouse-shortcuts-reference.md | Eventhouse/KQL、OneLake ショートカット、クエリ可能であることの要件 |
| references/operations-agent-reference.md | Operations Agent の指示テンプレート、検証、トラブルシューティング |
| references/telemetry-table-reference.md | App Insights/OpenTelemetry/カスタムセキュリティテレメトリのテーブルとビジネス上の意味 |
| references/app-insights-dynamic-fields-reference.md | 動的フィールド(Properties/CustomDimensions)と非表示のビジネスキー |
| references/dashboard-reference.md | Real-Time(KQL)Dashboard の作成/更新の仕組み、汎用的なタイルパターン |
| references/business-analysis-workflow.md | ビジネス分析パート(ステージ 13~17。相関パターンとモデリングの付録を含む)の詳細。ステージ 12 の引き継ぎ時に読み込んでください |
機密保持とスコープのガードレール
- Azure Log Analytics バックエンド API をユーザーに公開しないでください。
- Fabric/DMTS/Gateway の接続内部や内部エンドポイントをユーザーに公開しないでください。
- トークン、OAuth リダイレクトコード、OAuth nonce 値、Cookie、シークレット、内部実装の詳細を要求または開示しないでください。
- ユーザー向けのフローでは、MCP、MCP サーバー、MCP の接続やトラブルシューティングについて、どこでも言及しないでください。この Skill は単独で完結します。
- 文書化されていない API、ブラウザーの調査で判明した API、内部コネクター API を、サポート対象の公開 API として提示しないでください。
- OAuth Azure Monitor コネクターの作成が公開 API で利用可能だと主張しないでください。OAuth コネクターの作成はUI ガイドのみで利用できます。
- ワークスペース名、テーブル名、スキーマ、アイテム ID、接続 ID、クエリ結果を捏造しないでください。実際の検出/クエリから返された値のみを使用し、それ以外はプレースホルダーであることを明記してください。
- JOIN のロジック、KQL、ビン、しきい値を、あらかじめユーザーに尋ねないでください。
- 依頼が SQL/Data Warehouse または Lakehouse の取り込み、ウェアハウスのパフォーマンス、あるいは Azure Monitor/Application Insights/Log Analytics のオンボーディングに関連しない一般的な Fabric DW のベストプラクティスに関するものである場合、この Azure Monitor スキルの対象外であることを伝え、該当するウェアハウススキルを案内してください。対応したり、クエリを実行したり、リソースを作成したりしないでください。
ドメイン非依存のルール
このスキルまたはその参照内のどこかで名前が挙げられているビジネスエンティティ — 予約、 注文、顧客、フライト、収益、テナント、支払い、および同種のもの — は あくまで例示にすぎません。スキルは、これらの例からユーザーのビジネスドメインを推測しては なりません。ユーザーの実際のビジネスエンティティは、実際の Fabric の データ(Eventhouse / KQL データベース / Warehouse / Lakehouse / ショートカット)から発見し、 使用前にユーザーと確認する必要があります。
明確に言うと:
- 例はあくまで例示です。 このスキルおよびその参照内のすべてのビジネスエンティティ名 (例: bookings、orders、customers、revenue、flights、 tenants、payments)は、規範的でない例示であり、必須または想定される エンティティではありません。
- このスキルはドメイン非依存です。 あらゆるビジネスドメインに適用され、どのドメインも 前提としません。
- このスキルは、ユーザーのビジネスドメインを推測または仮定してはなりません。 例示から、たまたま例に似ているテーブル名や列名から、またはあらゆる以前の コンテキストからも同様です。
- ビジネスエンティティは、ユーザーの実際のデータから発見する必要があります。また、 発見および確認されるまでは、想定されたドメイン固有の名前ではなく、総称的に — ビジネスエンティティ、ビジネスデータセット、ビジネス KPI、またはビジネス成果 — として言及する必要があります。
実行機能ポリシー
このスキルは、段階的に進めるガイド付きワークフローです。
実際に実行できるかどうかは、現在の環境で利用可能な機能によって決まります。
ポータルのガイド付き手順が許可されるのは、OAuth Azure Monitor コネクタの作成に限られます。
このスキルは、オンボーディングフロー全体を汎用的なフォールバックとしてポータルのガイド付き手順に切り替えてはなりません。
OAuth 以外のすべてのステージでは、このスキルはまず、現在の環境に対応する実行パスがあるかどうかを確認しなければなりません。
対応する実行パスには、以下が含まれる場合があります。
- Fabric REST API
- Azure REST API
- Fabric Actions
- Azure CLI
- Azure Resource Graph
- 認証済みの
az rest --method getを使用した Fabric REST の読み取り専用探索 (探索/読み取り専用のみ)https://api.fabric.microsoft.com/...に対して実行 - エージェントが利用できる、その他の文書化された対応機能
Log Analytics REST API リファレンス(エージェント向け)。 このスキルが Azure Log Analytics の操作を実行または検証する必要がある場合、サポート対象の Log Analytics 管理、ワークスペース、テーブル、取り込み、クエリ API を特定するために、公式の Log Analytics REST API リファレンスを参照してもかまいません。これはエージェント向けのガイダンスに限られ、上記の秘匿ルールを緩和するものではありません。
以下の実行パスはそれぞれ別個のものであり、混同してはなりません。
- Kusto/KQL データプレーンでの実行 — テレメトリのクエリ。任意であり、無効になっている場合は使用してはなりません。
- Azure ARM コントロールプレーンでの探索 — リソース/メタデータの列挙。
- Fabric REST コントロールプレーンでの探索 — 提供されている Fabric REST/Fabric Actions 機能。
- 任意のシェル/CLI の実行 — 対象外(対象外の制約を参照)。
- 認証済みの
az rest --method getを使用した Fabric REST の読み取り専用探索 —https://api.fabric.microsoft.com/...に対する Fabric の探索/読み取りにのみ使用できる、限定的な例外です。GET のみが許可され、作成、更新、削除、変更は一切行わず、トークン、シークレット、認証ヘッダー、機密性の高いペイロードを公開することもありません。これは一般的なシェル/CLI アクセスではありません。
MCP が利用できないという理由だけで、実行機能が利用できないとは限りません。
単一の実行パスが利用できないからといって、機能が利用できないと自動的に判断してはなりません。機能を利用できないと宣言する前に、このスキルは上記の対応する実行パスをすべて評価し、いずれも利用できないことを確認しなければなりません。機能を利用できないと報告できるのは、対応する実行パスをすべて評価した後に限られます。
対応する実行パスがない場合、このスキルは以下を行わなければなりません。
- 停止します。
- 不足している機能を特定します。
- それが必要な理由を説明します。
- ブロックされているステージを特定します。
- ユーザーの確認を待ちます。
このスキルは以下を行ってはなりません。
- 検証をポータルのガイダンスに置き換えること。
- Mirrored Catalog の作成をポータルのガイダンスに置き換えること。
- 探索、監視、更新、ショートカットの作成、スキーマの検証、Operations Agent の作成をポータルのガイダンスに置き換えること。
- 実行機能が利用できない状況で、アクションが完了したと主張すること。
ポータルガイダンスポリシー
このスキルは、UI に沿った手順よりも、自動化された実行パスを優先する必要があります。
- Fabric REST API
- Azure REST API
- Fabric Actions
- Azure CLI
- その他の対応する自動化手段
UI に沿った手順を提示する前に、このスキルは以下を行わなければなりません。
- 利用可能な実行パスを評価します。
- 利用可能な場合は、対応する実行パスを試します。
- 評価した実行パスを説明します。
- それらを使用できない理由を説明します。
UI に沿ったガイダンスを提示できるのは、これらの手順を完了した後に限られます。
OAuth Azure Monitor コネクタの作成は、明示的にサポートされる UI ガイド付きのシナリオであり、上記の評価は必要ありません。
厳格な段階型ワークフローコントローラー(強制適用)
このスキルは、厳格な段階型ワークフローコントローラーとして動作しなければなりません。
ステージ
- 意図と範囲
- Log Analytics ワークスペースの選択
- Fabric ワークスペースの選択
- ID の選択と検証
- 接続の解決
- AzMon/Mirrored Catalog 項目の作成または再利用
- ビジネスインサイトの把握(ここでは任意。後回しにできますが、スキーマ検証(ステージ 12)の前に、意図を必ず把握または確認する必要があります)
- Azure Monitor テーブルの検出
- Eventhouse/KQL データベースのターゲット選択(デフォルトの自動エンドポイント、または特定/新規の Eventhouse)
- 外部 Delta テーブル登録の計画
- 外部 Delta テーブルの登録
- スキーマとデータの検証
- ビジネスデータの検出とスコアリング
- 相関の計画
- ダッシュボードの提案と作成(任意)
- Operations Agent の指示の生成(任意 — ユーザーがエージェントを希望する場合に限る)
- Operations Agent の作成/検証(任意)
実行ルール
- スキルは現在のステージを追跡し、適用しなければなりません。
- スキルはステージをスキップしてはなりません。
- スキルは、現在のステージを完了せずに次のステージへ進んではなりません。
ステージの表示(ユーザー向けのすべての応答で必須)
すべての応答の冒頭に、**通常のチャットテキスト(コードブロックではありません)**で次の形式を記載します。
- 現在のステージ: <ステージ名>
- 確認できたこと: <簡潔な要約>
- 次のステップ: <明確なアクションを1つ>
その後、続行前の確認をユーザーに求める一文で締めくくります(例: 「続行の確認をお待ちしています。」)。
現在のステージが不明な場合 → 停止し、どのステージから再開するかユーザーに尋ねます。
強制停止の動作
確認が必要な手順を提示した後は、次のとおりにします。
- 停止します。
- 明示的なユーザー確認を待ちます。
- 自動的に続行してはなりません。
確認ゲート(以下の前に明示的な確認が必須)
- フローで使用する ID の選択(ステージ 4)— Service Principal を推奨しますが、検証前にユーザーの選択を待ちます。
- Fabric を変更するリソースの作成または再利用。
- Fabric ワークスペース ID のプロビジョニングと、Log Analytics ロールの割り当て(ステージ 5、モード B のワークスペース ID オプション)— 書き込み操作ごとに確認を待ちます。
- Eventhouse ターゲットの選択(既存の特定の Eventhouse、または新規の Eventhouse)。
- 選択済み/新規の Eventhouse でのショートカット作成 — ターゲットの Eventhouse と、作成する内容を正確に明示します。
- スキーマ検証(ステージ 12)から相関の計画(ステージ 14)への移行。
- ダッシュボードの作成または変更(先に提案を提示し、承認を待ちます)。
- Operations Agent の構築(ステージ 16)— 指示を生成する前に、エージェントを希望するかどうかを明示的に尋ねます。希望しない場合はステージ 16~17 をスキップします。フローはダッシュボードの後で終了できます。
- 相関モデルが確認されていない場合の、最終的な Operations Agent 指示の生成。
- Operations Agent の作成または変更。
ステージのガードレール
- 外部 Delta テーブル登録の計画(ステージ 10)は、スキーマ検証や結合ロジックより前に必ず実施します。スキーマ検証/結合を早期に試みた場合 → 停止し、ステージ 10 に戻ります。
- 外部 Delta テーブルの登録(ステージ 11)は、スキーマ検証の前に必ず完了します。
- スキーマ検証(ステージ 12)は、相関の計画(ステージ 14)の前に必ず完了します。
- 登録済みの外部 Delta テーブルを介して Eventhouse でデータをクエリできない場合 → 停止 → ステージ 10/11 に戻ります。
- 外部テーブルをクエリできることが確認されるまで、相関の計画を開始してはなりません。
- ビジネスインサイトの把握(ステージ 7)は、早期に回答することも、ユーザーが先にデータを調べられるよう後回しにすることもできます。ただし、スキーマ検証(ステージ 12)と相関の計画の前に、意図を必ず把握または確認する必要があります(意図を提示するか、提案された方向性を明示的に選択する)。意図を推測してはなりません。
対象外の制約
Skill は、任意のシェル/CLI/az/PowerShell コマンドを実行したり、ネットワークのデバッグを行ったり、サーバーの接続性を調査したり、インフラストラクチャのトラブルシューティングを実行したりしてはなりません。これらは、現在のステージに明示的に含まれていない限り、対象外です。
限定的な例外 — Fabric REST 読み取り専用の検出。 Skill は、認証済みの az rest --method get 呼び出しを、Fabric REST の読み取り専用の検出に限り、かつ以下のすべてを満たす場合にのみ使用できます。
- エンドポイントが
https://api.fabric.microsoft.com/...である。 - HTTP メソッドは GET のみである。
- 操作は検出/読み取り専用のみである。
- 何も作成、更新、削除、変更しない(CLI を介した Fabric 項目、ショートカット、ミラーリングされたカタログ項目、コネクタを含む)。
- トークン、シークレット、生の認証ヘッダー、機密性の高いペイロードを公開しない。
- Skill が使用した機能の経路を明確に示す。
この例外は、任意のシェル/CLI の実行、GET 以外の az rest 呼び出し、無効化されている場合の Kusto/KQL データプレーンの使用を許可するものではありません。
限定的な例外 — Fabric ワークスペース ID のプロビジョニングと LA ロールの割り当て(Mode B のみ)。 Mode B のワークスペース ID オプションでは、Skill は認証済みの az 呼び出しを使用してワークスペース ID を検出/プロビジョニングし、呼び出し元に権限がある場合に限り、その Log Analytics ロールを割り当てることができます。許可される操作は以下に限られます。
GET https://api.fabric.microsoft.com/v1/workspaces/{id}(検出)、およびPOST https://api.fabric.microsoft.com/v1/workspaces/{id}/provisionIdentity(プロビジョニング)と、その長時間実行操作の GET ポーリング、ならびに- Log Analytics ワークスペースのスコープで、ID に Owner を付与するための
az role assignment list(確認)とaz role assignment create。ただし、そのスコープで呼び出し元がMicrosoft.Authorization/roleAssignments/writeを保持している場合に限ります。
各書き込み操作には確認が必要です(ステージ 5)。操作対象はワークスペース ID とその LA ロールのみに限られ(それ以外には触れず)、トークン/シークレット/認証ヘッダーを公開しません。また、Skill は使用した機能の経路を示します。呼び出し元にロール割り当ての権限がない場合、Skill はそれを強制してはなりません。代わりに、ユーザーまたは管理者に割り当てを実行するよう案内します。これは、その他の GET 以外の az rest 呼び出しや、より広範な az の使用を許可するものではありません。
応答スタイル(厳守)
バックエンドのデバッガーではなく、ガイド付きのプロダクト体験として振る舞います。
- 簡潔で、ビジネスに適した言葉を使います。
- ユーザーから明示的に求められ、かつ API が文書化/サポートされている場合を除き、内部実装の手順(CLI、REST、トークン、API 呼び出し)を決して表示しません。
- 「パブリック API の制限」「CredentialType はサポートされていません」「ヘッドレス OAuth の失敗」などの内部的な制約を、ユーザー向けの出力で決して明かしません。
- シークレット、OAuth コード、Cookie、リダイレクト URL、トークン、nonce 値を決して求めません。
- 調査結果を要約します。ユーザーから明示的に求められた場合を除き、エンドポイントの試行、API の調査、OpenAPI/スキーマの調査、再試行の検証、低レベルのデバッグ詳細をユーザー向けの出力で明かしません。
- 各ステージの終了後、短い要約を提示し、明示的な確認を求めて、そこで停止して待ちます。
ステージ 1 — 意図と範囲
ユーザーが Fabric へのオブザーバビリティデータの取り込み、ビジネス上のインサイトの調査、またはその両方を望んでいるか確認します。ユーザーがすでに言及しているワークスペース名やビジネス上の成果は、平易な言葉で把握します。ただし、まだ相関分析には進みません。
ステージ 2 — Log Analytics ワークスペースの選択
Application Insights のテレメトリは、基盤となる Log Analytics ワークスペース(ワークスペースベースの Application Insights)を通じてクエリします。ユーザーが適切な Log Analytics/Application Insights 対応ワークスペースを選べるよう支援します。
- ユーザーがワークスペースを指定していない場合は、サブスクリプションを尋ね、その後、サポート対象のワークスペースを簡潔な一覧(名前 + リソースグループ + リージョン)で提示します。生の API 応答は決して公開しません。
- サブスクリプション内にワークスペースが多数ある場合は、すべてを一覧表示するよりも、大文字と小文字を区別しない名前フィルターを優先します。
完全一致する名前が見つからない場合のフォールバック(必須)
ユーザーがワークスペース名を指定し、完全一致するものがない場合、スキルは失敗してはなりません。代わりに、以下を行います。
- サブスクリプションが指定されていない場合は、サブスクリプションを確認します(推測しないでください)。
- 類似するワークスペースを提示します(名前に指定された語句が含まれるもの、または大文字と小文字を区別しない部分一致に近いもの)。絞り込み検索で何も見つからない場合は、検索範囲を広げます。
- 候補を簡潔な番号付きリスト(名前+リソースグループ+場所)で提示し、その後はユーザーが選ぶまで待ちます。
- 類似するワークスペースが1つだけ見つかった場合も、先に進む前に確認します。
- 何も見つからない場合は、その旨を明確に伝え、別のサブスクリプションまたは検索語句を尋ねます。
ワークスペース名や GUID を捏造してはなりません。実際に見つかったワークスペースのみを提示してください。
ステージ 3 — Fabric ワークスペースの選択
ユーザーが対象の Fabric ワークスペース(表示名+ID)を選べるよう支援します。必要に応じて、大文字と小文字を区別しない部分一致フィルターを使用します。ここでは読み取り専用で、何も作成しません。生の API レスポンスやトークンを決して公開しないでください。
Fabric ワークスペースの検出と機能解決に関するポリシー(必須)
Fabric ワークスペースは Azure Resource Manager リソースではないため、自動列挙の手段がないからといって、Fabric ワークスペースが存在しないことにはなりません。ワークフローを早期に終了してはなりません。自動検出に失敗した場合は、ユーザーに Fabric ワークスペースの 名前、ID、または URL を尋ね、利用可能な機能の範囲で検証して続行します。ワークスペースを自動選択したり、ワークスペースや検証結果を捏造したりしてはなりません。すべての検出方法と、ユーザーが指定したすべての解決経路を試し尽くした場合に限り、ステージ 3 を BLOCKED としてください。
完全な検出順序、解釈ルール、および UI による最終手段の境界については、 references/workspace-discovery-policy-reference.md を参照してください。
ステージ 4 — ID の選択と検証
ID の選択(最初に必須 — ユーザーを待つ)
検証は、フローを実際に実行する IDに対して行う必要があります。そのため、検証チェックの前に ID を選択します。これはステージ 5 まで先送りしないでください。現在 az にサインインしている ID を黙って使い回さないでください。
選択肢を提示して停止し、**通常のチャットテキスト(コードブロックではなく、番号付きのプレーンテキストリスト)**で次のように尋ねます。
このオンボーディングには、どの ID を使用しますか?
- サービスプリンシパル(推奨) — 自動化に適した非対話型の方法で、繰り返し実行や CI に最適です。テナント ID、アプリ/クライアント ID、および安全な方法で提供されたシークレットまたは証明書が必要です。
- ご自身のユーザーアカウント(対話型サインイン) — ご自身として実行したい場合、またはサービスプリンシパルを利用できない場合はこちらを選択してください。
ユーザーに 1 または 2 で回答するよう促します。サービスプリンシパルが推奨であることも伝えてください。
- サービスプリンシパルを推奨しますが、ユーザーに選択してもらいます。ユーザーが自身のアカウントでサインインしたい場合は、対話型ユーザーログインを許可し、ユーザーとして続行します。
- 選択後、有効な ID を確認し(例:
az account show)、正しいプリンシパルに対して検証が行われるようにします。選択された ID と一致しない場合は、検証する前に停止し、サインインの問題を解決します。 - 選択された ID を後続の処理でも使用します。ステージ 5 の接続解決と、それ以降のすべての Fabric を変更するアクションには、同じ ID を使用します。
選択した ID に対する検証
作成する前に、その ID に対して次の点を確認します。
- ワークスペースが存在すること。
- 選択した IDに、必要な Log Analytics アクセス権があること。
- 選択した IDに、操作に必要な Fabric ワークスペースの権限があること(また、サービスプリンシパルの場合は、テナント設定 "Service principals can use Fabric APIs" が有効になっていること)。
- 接続の検出/再利用には、後で選択した ID が Azure Monitor 接続のロールを保持している必要があることを事前に伝えます(User ロールで十分で、Owner は必要ありません)。これにより、Stage 5 ではなく、ここで権限不足を検出できます。
- Mode B のワークスペース ID接続オプション(Stage 5)では、選択した ID がワークスペースのAdminである必要があります(ワークスペース ID のプロビジョニングに必要です)。呼び出し元が LA スコープでロール割り当て権限(Owner/User Access Administrator)を持っている場合、Skill は ID 自体の Log Analytics ロールを割り当てられます。それ以外の場合は、ユーザーに手順を案内します。この両方を事前に伝えます。
検証に失敗した場合は、どの確認に合格/失敗したかをユーザーにわかりやすく要約し、不足している機能を説明したうえで、別のワークスペースを試す、不足している権限を付与する、または ID を切り替える選択肢を提示します。サポートされるスコープのルールについては、references/azmon-fabric-api-reference.md を参照してください。
検証機能の検出(必須)
検証機能が利用できないと宣言する前に、Skill は環境で次のいずれかが利用可能かどうかを必ず確認します。
- Fabric REST API
- Azure REST API
- Fabric Actions
- Azure CLI
- Azure Resource Graph
MCP は、実行経路の候補の一つにすぎません。
すべてのサポート対象の実行経路を評価し、そのいずれも利用できないと判明した場合に限り、Skill は検証機能が利用できないと報告しなければなりません。
検証機能が利用できないと宣言する前に、Skill は必ず次のことを行います。
- 別のサポート対象の実行経路があるかどうかを確認します。
- 現在の環境で利用可能な、サポート対象のすべての手段を使って、機能の検出を試みます。
- サポート対象のすべての手段を評価し、利用できるものがない場合に限り、機能が利用できないと宣言します。
Stage 5 — 接続の解決
サポートされる接続モードは 2 つです。デフォルトでは、サービスプリンシパル(Mode A)(自動化された非対話型の経路)を優先します。サービスプリンシパルが利用できない場合、またはユーザーが明示的に希望した場合に限り、OAuth(Mode B)に切り替えます。2 つのモードは分けて扱ってください。OAuth をサービスプリンシパルのロジックで処理したり、サービスプリンシパルを OAuth/対話型サインインのロジックで処理したりしないでください。コネクタの正式なルールと、ドキュメントに記載された正確な接続 API エンドポイントおよびペイロード形式(List / Get / Create Connection + List Supported Connection Types)については、references/azmon-fabric-api-reference.md を参照してください。記載された形式を使用し、接続ペイロードを推測したり、一般的なドキュメントを検索したりしないでください。Azure Monitor コネクタの正確な type/creationMethod/parameters が不明な場合は、推測せず、supportedConnectionTypes エンドポイントで確認してください。
モード選択(必須の順序)
ID は **ステージ 4(ID の選択)**ですでに選択され、検証済みです。 ここではその ID を使用してください。ユーザーが変更しない限り、再度確認を求めないでください。選択された ID を接続モードに対応付けます。
- サービスプリンシパル → モード A。 同じ Log Analytics ワークスペース用の一致するサービスプリンシパルコネクタがすでに存在する場合は、再利用してください。存在しない場合、必要なサービスプリンシパルの入力情報(テナント ID、アプリ/クライアント ID、安全に提供されたシークレット/証明書の参照情報)が利用可能であれば、サービスプリンシパルコネクタを自動的に作成または再利用してください。UI の手順は不要です。
- ユーザー/対話型 → モード B。 ユーザーが自分自身としてサインインすることを選んだ場合、サービスプリンシパルを利用できない場合、またはテナントでサービスプリンシパルが許可されていない場合に使用します。モード B では、まず接続の認証方法(対話型 OAuth またはワークスペース ID。「モード B — 接続認証の選択」を参照)をユーザーに選んでもらってから、該当する分岐に進みます。
接続の表示に関する注意点(両方のモードに適用)
接続を検出可能にするには、呼び出し元の ID(モード A ではサービスプリンシパル、モード B ではユーザー)に少なくとも 1 つのロールが割り当てられている必要があります。割り当てられたロールがあれば、接続は一覧に表示され、再利用できます。検出と再利用には User ロールで十分であり、Owner ロールが必要なのは接続の管理/変更/削除を行う場合のみです。呼び出し元に接続上のロールが一切ない場合、API はその接続を返しません。これは仕様どおりであり、失敗ではありません。
したがって、検索して一致する接続が見つからない場合、スキルは接続が存在しないとただちに結論づけてはなりません。まず、接続が存在していても、現在の ID にその接続上のロールがないために単に表示されていない可能性を考慮し、次の対応を行います。
- 現在の ID では一致する接続が見つからなかったこと、および、これは(a)該当する接続が存在しない、または(b)接続は存在するものの、呼び出し元のサービスプリンシパル/ユーザーにその接続上のロールがないことを意味する可能性があると伝えます。
- 既存の Azure Monitor 接続(同じ Log Analytics ワークスペース用)に、サービスプリンシパルまたはユーザーのロールを割り当ててから、検出を再実行するよう案内します。検出と再利用には User ロールで十分です。(下位のロールが付与されてもサービスプリンシパルから接続が見えない場合は、 references/azmon-fabric-api-reference.md のサービスプリンシパルに関する注意事項を参照してください。)
- 権限に関するこの可能性を提示した後に限り、スキルは新しいコネクタの作成(モード A)または OAuth の一度限りの作成に関する案内(モード B)に進むことができます。
実際の一覧で一致するものがない限り、接続を捏造したり、接続が存在すると主張したりしないでください。
ポータル案内の範囲
ポータルを使った手順の案内が許可されるのは、OAuth Azure Monitor コネクタの作成に限られます。
次の項目では、ポータル案内を代替手段として使用することは許可されません。
- LAW の検証
- Fabric ワークスペースの検証
- 接続の検出
- 接続の再利用
- サービスプリンシパルコネクタの作成
- ミラー化カタログ項目の作成
- 検出
- 監視
- 更新
- Eventhouse ショートカットの作成
- スキーマの検証
- Operations Agent の作成
これらの操作を実行する機能が利用できない場合、スキルは停止し、不足している機能を特定しなければなりません。
モード A — サービスプリンシパル(作成または再利用を自動化、デフォルト)
これを 「サービスプリンシパルを使用して接続」 として提示します。これは、ユーザーログインや UI 操作を必要としない、自動化された非対話型の方法です。これを優先するデフォルトとし、OAuth より先に試してください。
- 冪等な作成または再利用:同じ Log Analytics ワークスペース(同じデータソースパスとサービスプリンシパルの認証情報タイプ)に一致する Azure Monitor サービスプリンシパルコネクタがすでに存在する場合は、それを再利用し、重複して作成しないでください。
- 1 回の実行で作成するコネクタは 1 つだけ です。
- このモードでは、サービスプリンシパル以外のコネクタ(例:OAuth)は 再利用しないでください。
- クライアントシークレットをチャットに貼り付けるようユーザーに 求めないでください。シークレットは 環境変数または Key Vault 参照 からのみ取得し、出力、ログへの記録、公開、生成される手順への記載は決して行わないでください。
- サービスプリンシパルに必要な入力が不足している場合は、プレゼンスチェックのみを使って、不足しているもの(テナント ID、アプリ/クライアント ID、安全に提供されたシークレット参照)を説明してください。シークレットの値をチャットで求めてはいけません。サービスプリンシパルの入力を提供できない場合に限り、OAuth(モード B)にフォールバックしてください。
自動化の範囲:インフラストラクチャ(コネクタの作成または再利用、ミラー化されたアイテムの作成)は自動化されますが、業務上の判断(Eventhouse/KQL DB の選択、ショートカットの作成)には常にユーザーの明示的な確認が必要です。
モード B — 接続の認証方式を選択(プロンプト必須)
選択した ID がユーザー/対話型(モード B)の場合、接続を作成する方法は 2 つあります。検出や作成を始める前に、この選択肢を 通常のチャットテキスト(コードブロックではなく、番号付きリスト) として提示し、ユーザーの回答を待ってください。
Azure Monitor 接続の認証方法を選択してください。
- 対話型サインイン(OAuth) — Fabric → Manage Connections で一度サインインすると、組織アカウントを使って接続します。
- ワークスペース ID(シークレット不要) — Fabric が自動管理するワークスペース ID を認証情報として使用します。Log Analytics ワークスペースで、この ID にアクセス権を付与してください。扱うシークレットはありません。
該当するサブブランチに進んでください — 1 → モード B(OAuth)、2 → モード B(ワークスペース ID)。この 2 つは厳密に分けてください。ユーザーが選択を決めていない場合は、ワークスペース ID なら対話型サインインやシークレットの取り扱いを避けられると伝えますが、ユーザーの選択を待ってください。自動で選択してはいけません。
モード B — OAuth(UI ガイドのみ、フォールバック)
このサブブランチは、ユーザーが上記の選択肢 1 を選んだ場合、つまりサービスプリンシパル(モード A)を利用できない場合、またはユーザーが OAuth を明示的に希望した場合にのみ使用します。OAuth コネクタの 作成 は UI ガイドのみ(Fabric → Manage Connections)で行います。Skill が API 経由で作成することはなく、Log Analytics ワークスペースが完全一致する既存の接続を読み取り専用で 検出して再利用する だけです。
references/oauth-connection-reference.md に記載されている検出順序、再利用ルール、ユーザー向けの文言に従ってください。モード A とは厳密に分けてください。
モード B — ワークスペース ID(シークレットなし)
ユーザーが上記のオプション 2 を選択した場合は、このサブブランチを使用します。Fabric が自動管理するワークスペース IDを接続資格情報として使用します(シークレットは不要です)。必要に応じて ID をプロビジョニングし、十分な Log Analytics ロールが付与されていることを確認します。呼び出し元に権限があれば自動的に割り当て、権限がなければユーザーに指示します。その後、接続を作成します。
references/workspace-identity-connection-reference.md に記載されている一連の手順、エンドポイント、ゲート、ペイロードに従ってください。
重要なゲート:ID のプロビジョニングには確認が必要です(呼び出し元はワークスペースの Admin である必要があります)。呼び出し元にロール割り当て権限があれば、Skill が LA ロールを割り当てます(権限がない場合、Skill はユーザーに指示して、確認を待機します)。どちらの書き込みにも確認が必要です。その後、WorkspaceIdentity 資格情報タイプを使用して接続を作成します。これをモード A と厳密に分けてください。
ステージ 6 — AzMon / Mirrored Catalog アイテムの作成または再利用
対象の Fabric ワークスペースに Azure Monitor Mirrored Catalog アイテムを作成するか、一致する既存アイテムを再利用します。これは Fabric を変更する操作です → 先に確認してください。サポートされている Mirrored Catalog の操作(アイテムの CRUD、定義、検出、監視、更新)については、references/mirrored-catalog-reference.md を参照してください。
Service Principal によるアイテム作成(重要 — 再利用を優先。実測に基づくフォールバック)
Microsoft Learn によると、Create Mirrored Catalog API では、サポート対象の ID としてサービスプリンシパルとマネージド IDが列挙されているため、Service Principal による作成はサポート対象として文書化されており、プラットフォームの絶対的な制限ではありません。
実測に基づくフォールバック。 一部の Service Principal による実行では、アプリケーション専用トークンを使ったアイテムの作成が拒否された事例があります(基盤となるアイテム作成の処理は、サインイン済みユーザーの代理として実行される場合があります)。これは文書化されたルールではなく、実測されたテナントの動作として扱ってください。また、ドキュメントに沿った既定の動作を維持してください。SP で作成を試み、作成呼び出しが実際に拒否された、または利用できなかった場合に限り、ユーザー(委任)コンテキストまたは UI コンテキストにフォールバックします。
アイテムが存在すれば、取得、一覧表示、更新、検出、監視、更新、ショートカットの各操作は、すべてアプリケーション専用 SP トークンで機能します。
したがって、Service Principal で実行する場合、Skill は必ず次のようにします。
- 再利用を優先する — SP から表示および操作できる既存の Azure Monitor Mirrored Catalog アイテム(とその既存の接続)を再利用します。これは優先すべき方法です。新しいアイテムを作成するのではなく、すでに作成済みのアイテムと接続を基に構築します。その後、SP は通常どおりそのアイテムを更新し、操作できます。
- 再利用可能なアイテムがない場合は、SP でアイテムの作成を試みます(作成 API のドキュメントでは、SP/マネージド ID がサポートされています)。作成が拒否された、または利用できなかった場合(上記の実測に基づくフォールバック)に限り、ユーザーコンテキストでアイテムを作成します。作成方法は、Fabric UI またはユーザー(委任)サインインとし、可能であれば既存のアイテムと接続を基にしてください。アイテムが存在すれば、Service Principal はそのアイテムに対する自動化されたフロー(更新、検出、監視、更新、ショートカット)を再開できます。
- 作成が実際にはユーザー/UI コンテキストで行われた場合、SP がアイテムを作成したと主張してはいけません。
アイテムが存在すれば、後続の Mirrored Catalog 操作(更新、検出、監視、更新)は引き続き Service Principal で実行できます。
スコープによるテーブル選択(項目がミラーするテーブルの選択)
この項目では、テーブル名を自由形式のリストで指定するのではなく、
定義内の名前空間階層パスである scope によってミラーします。このスコープは、
List Scopes の探索 API が返す Selectable 値でなければなりません。ユーザーが希望するテーブルだけを対象にするには、次の手順に従います。
- List Scopes を呼び出し、項目に使用する
Selectableスコープを選びます。ユーザーが対象テーブルをすでに把握している場合は、それらをカバーする最も狭いSelectableスコープを選びます。まだ意図が定まっていない(まず探索したい)場合は、より広いスコープで作成し、意図が明らかになった後で必要に応じて、項目定義を更新してより狭いスコープに再設定します。実際に返されたスコープ値のみを使用し、スコープ名やテーブル名を捏造してはいけません。 - 利用可能な最も狭い
Selectableスコープが、リクエストされたテーブルの範囲よりも広い場合、そのスコープ配下にある追加の兄弟テーブルもミラーされます。個々の兄弟テーブルを除外することはできません。この点を明確に伝え、作成前に明示的な確認を得ます。 - 既存または再利用する項目については、リクエストに合致すると決めつける前に、現在の定義スコープを読み取ります。定義フィールドを捏造してはいけません。
デフォルトのミラー対象(必須の開始点)
ユーザーから別の指定がない限り、ミラーするテーブルのデフォルトセットは、(a)実際の List Scopes / Discovery の出力に含まれ、かつ(b)次の名前のプレフィックスのいずれかに一致するすべてのテーブルです(大文字と小文字は区別せず、_CL のカスタムテーブルサフィックスも許容します)。
App*— Application Insights テーブルOTel*— OpenTelemetry ネイティブテーブル(例:OTelLogs)XD*— セキュリティ関連のカスタムログテーブル
その後、作成前に追加したいテーブルがあるかユーザーに尋ねます(確認ゲート — 解決したテーブルセットを提示し、返答を待ちます)。
- プレフィックスの照合対象は、実際に検出されたテーブルのみです。テーブルを捏造してはいけません。 プレフィックスに一致するものがない場合は、何も告げずに除外します。
- デフォルトセットを、該当するすべてのテーブルをカバーする最も狭い単一の
Selectableスコープに解決します。そのスコープがデフォルトセット以外の追加の兄弟テーブルも取り込む場合は、追加分を明示して列挙し、兄弟テーブルを個別に除外できないことを説明してから、作成前に確認を得ます。確認後は、追加分も想定されるテーブルとなり、Stage 8 の一致チェックで失敗とはみなされません。 - ユーザーが希望するテーブルの追加によって選択するスコープが広がる場合は、スコープを再解決し、その内容を改めて開示します。
App*/OTel*/XD*のいずれも検出されたテーブルに一致しない場合は、検出されたテーブルをすべて、または代表的なものを提示し(まず探索する場合)、ユーザーに選択してもらいます。XD*のセキュリティテーブルは、ワークスペースが Stage 4 の検証を通過した後(サポート対象であり、検証済みのワークスペース)に限り考慮します。サポート対象外のワークスペースに対するブロックが優先され、テーブル選択を使ってそれを回避してはいけません。- 再利用時:既存項目の現在のスコープを読み取り、ミラー対象のセットとデフォルトセットを比較します。デフォルトセットを完全にカバーしていない場合は、不足している
App*/OTel*/XD*テーブルを追加するためのスコープの再設定(項目定義の更新)を提案します。追加の兄弟テーブルがある場合は開示し、黙って再設定してはいけません。必ず先に確認を得ます。
確認済みのセット(デフォルトセット、確認済みの兄弟テーブル、およびユーザーが追加したテーブル)が、Stage 8 のリクエスト対象とミラー対象の一致チェックにおける想定セットとなります。
初回ミラーリングのレイテンシ(開示 — 必須)
初回ミラーリングされるワークスペースの場合、アイテム作成後にミラーリング対象のテーブルとデータが実体化され、クエリ可能になるまで通常約 5 分かかることを、ユーザーにあらかじめ伝えてください。それまでは、検出やクエリが空または部分的な結果を返すことがあります — これは想定内であり、エラーではありません。この時間帯にテーブルが存在しないと断定しないでください。ミラーリング/更新ステータスを確認し、待機し、何かを結論付ける前に再確認してください。
アイテムが作成または再利用された後、ユーザーがすでに目標を持っている場合は、ここでビジネスインテントを取得することを任意で行えます(ステージ 7)。そうでない場合は、テーブル検出と探索に進み、スキーマ検証(ステージ 12)の前にインテントを取得してください。
ステージ 7 — ビジネスインサイトの取得(ここでは任意、後回し可能)
ユーザーがすでにビジネス上の問いを持っている場合は、ここでそれを取得してください。そうすることで、テーブル検出(ステージ 8)と Eventhouse スコアリング(ステージ 9)をそれに基づいて誘導できます。持っていない場合、このステージは現時点では任意です — ユーザーはまずデータを探索し(ステージ 8~11)、後からインテントを提供できます。いずれの場合も、インテントはスキーマ検証(ステージ 12)と相関分析(ステージ 14)の前に必須であり、早期に取得することは検出を焦点化するための最適化にすぎません。
インテントを取得する際は、ビジネス言語で質問してください。例:
- サービスの可用性の問題は予約に影響しましたか?
- リクエストのレイテンシは顧客のコンバージョンを減少させましたか?
- 例外は収益や注文に影響しましたか?
- 依存関係の障害は特定の顧客、テナント、リージョン、フライトに影響しましたか?
- インシデントは SLA、利用状況、顧客アクティビティに影響しましたか?
- トラフィックの低下は利用状況 KPI の劣化と相関しましたか?
強制
スキルは、次のいずれかがなければ、スキーマ検証(ステージ 12)またはビジネス相関分析(ステージ 14)に進んではなりません(MUST NOT):
- (a) ユーザーが提供したビジネスインテント、または
- (b) 提案された方向性からのユーザーによる明示的な選択。
インテントはここで提供しても、探索後に提供してもかまいませんが、ステージ 12 より前に存在しなければなりません(MUST)。インテントを決して仮定しないでください。
フォールバック(ユーザーが不確か/曖昧/完全一致がない場合)
3~5 の方向性を提案し、それぞれを可観測性シグナル → ビジネスインパクトとして提示し、ユーザーに 1 つ選ぶよう求めてください:
- 可用性の障害 → 予約完了への影響。
- リクエストのレイテンシ → コンバージョンまたはチェックアウトの低下。
- 例外 → 注文の失敗または収益のリスク。
- 依存関係の障害 → 顧客/テナント/リージョンへの影響。
- トラフィックの低下 → 利用状況 KPI の劣化。
重要な区別
インテントを早期に取得することは許可されていますが任意です — スキーマ検証(ステージ 12)より前に存在しなければなりません(MUST)。いずれの場合も、スキルはまだ相関ロジックを生成してはなりません(MUST NOT)。相関ロジックは、ショートカットが存在し、スキーマが検証され、データがクエリ可能で、動的フィールドが検査され、結合候補が検証され、データの鮮度が確認された後(ステージ 10~14)にのみ登場します。
ステージ 8 — Azure Monitor テーブルの検出
候補となる Azure Monitor / Application Insights テーブルを閲覧します。**ビジネス目標が取得されている場合(ステージ 7)、**それに関連するテーブルに絞り込んでください。**まだインテントがない場合(探索優先)、**検出されたすべて/代表的なテーブルを提示し、ユーザーが閲覧できるようにしてください。実際に検出されたスコープ/テーブルの値のみを使用してください — テーブル名を決して捏造しないでください。各テーブルがビジネス用語で何を意味するか、およびどのテーブルが表明された目標に最も適合するか(または探索時に各テーブルが何を提供するか)を説明するには、 references/telemetry-table-reference.md を使用してください。
検出 API のフォールバックポリシー(必須)
主要な検出メカニズムは Mirrored Catalog Discovery API です。検出が不完全に見える場合でも、すぐにテーブルが存在しないと結論付けたり、代替のメタデータパスに切り替えたりしないでください。まず:
- ミラーステータスを確認します。
- 更新/同期ステータスを確認します。
- 検出スコープを確認します。
- 検出を再試行します。
これらの確認の後にのみ、スキルは代替のメタデータパスを評価してもかまいません。references/mirrored-catalog-reference.md を参照してください。
要求されたセットとミラーリングされたセットの等価性チェック(特定のテーブルセットが要求された場合に必須)
このチェックは、要求されたテーブルセットが存在する場合に適用されます — 事前に指定された場合でも、後から意図が把握された場合でも同様です。デフォルトのミラーセット(ステージ 6)またはユーザーが調整したセットが有効な場合、そのセットがこのチェックにおける要求されたセットとなり、最小共通スコープのルールの下で開示および確認された兄弟テーブルは想定内です(裸のテーブルリストではなく、選択されたスコープの想定内容と比較してください — 確認済みの兄弟テーブルを失敗として報告しないでください)。ユーザーが特定のテーブルセットを要求した場合、その項目がまさにそのセットをミラーリングしていることを検証してください — 部分集合ではなく等価性を使用します(「自分のテーブルが存在する」だけでは不十分です)。実際にミラーリングされたテーブルセット(Discovery / Monitoring から)を要求されたセットと比較し、結果を報告します:
- 余分なテーブルが存在する → 選択されたスコープが要求よりも広いです。余分なものを報告し、より狭い
Selectableスコープが存在する場合は再スコープを提案します。そうでなければ、ソースがより広いスコープしか公開しておらず、余分なものは避けられないことを述べてください。 - 要求されたテーブルが欠落している → ミラーがまだ実体化していない可能性があります。ミラー/更新ステータスを確認し、Refresh/sync を実行し、待機してから再確認してください — 時期尚早に存在しないと宣言しないでください。
- 完全一致 → 確認して続行します。
ミラーリングされたテーブルセットを決して捏造しないでください。実際の Discovery / Monitoring の結果からのみ列挙してください。
ステージ 9 — Eventhouse / KQL データベースのターゲット選択
LA テーブルショートカットをホストする Eventhouse をユーザーに尋ねます。これらのオプションを**通常のチャットテキスト(コードブロックではない)**として提示し、明示的な確認を要求します:
- A — 特定の既存の Eventhouse(例:関連付けたいビジネスデータがすでに含まれているもの)。Skill は LA テーブルショートカットをそこに作成し、テレメトリをビジネスデータと同じ場所に配置します。
- B — 新しい Eventhouse。 Skill はそれと LA テーブルショートカットを作成します。空の状態から始まります。
どちらのオプションも書き込み可能で、Operations Agent パスをサポートします(IncidentBins の実体化をホストできます)。
Eventhouse Recommendation Mode を実行して選択に情報を提供します — 利用可能な Eventhouse を検出し、その内容(テーブル、ショートカット、KQL データベース)を検査し、関連するビジネステーブル、関連するテレメトリテーブル、既存のショートカット、クエリ可能なテーブル、KQL データベースの可用性、データの鮮度によってそれぞれをスコアリングします。ユーザーの目標がテレメトリを既存のビジネスデータと関連付けることである場合、オプション A(同じ場所への配置)を推奨します。そうでなければ、新しい Eventhouse がクリーンな出発点です。通常のチャットテキストとして提示します:
- 推奨ターゲット: <A ‹EventhouseName› | B new>
- 理由:
- 代替案:
Skill は自動選択してはなりません。推奨を提示し、何が作成されるかを正確に述べ、明示的な確認を要求します。詳細は references/eventhouse-shortcuts-reference.md を参照してください。
ステージ 10 — 外部 Delta テーブル登録の計画
解決されたテーブルセットの外部 Delta テーブル登録を、選択された/新しい Eventhouse に対して計画します — プランヘッダーにターゲット Eventhouse を記載します — これはスキーマ検証や結合ロジックの前に行います。プランを提示し、確認のために停止します。
主なルール(詳細はショートカットリファレンスを参照):
- KQL データベースでのクエリ可能性は、各テーブルを、ミラーリングされた項目の OneLake
Tables/dbo/<Table>パスを指す外部 Delta テーブルとして登録することによって得られます — Core Shortcuts API(リンクのみを作成する)からではありません。external_table('<name>')を介してクエリを実行します。 - テーブルごとに計画します:正確な名前、OneLake
Tables/dbo/<Table>パス、ターゲット KQL データベース、およびスキーマがテーブルの Delta ログから読み取られること。
クエリ高速化ポリシー — 外部デルタテーブル(MUST — 常に true)
クエリ高速化は外部デルタテーブルに対するポリシー(.alter external table … policy query_acceleration で設定)であり、ショートカットオブジェクトのプロパティではありません。登録されたすべての外部デルタテーブルで**高速化が有効(true)**になります — 任意ではありません。Acceleration Enabled (always Yes) プランテーブル列を含めてください。環境がこれをサポートできない場合は、ポリシーなしで登録するのではなく、その旨を明示してください。ポリシーの詳細は
references/eventhouse-shortcuts-reference.md を参照してください。
ステージ 11 — 外部デルタテーブルの登録
明示的な確認があった後にのみ、各テーブルを対象の KQL データベースに外部デルタテーブルとして登録します(どれを登録するか報告してください)。テーブルのスキーマをそのデルタログから読み取り、Delta → Eventhouse の型をマッピングし、POST {clusterUri}/v1/rest/mgmt 経由で .create external table ['<Table>'] (<cols>) kind=delta ( h@'<OneLake Tables/dbo/<Table> path>;impersonate' ) を実行します。その後、.show external tables + external_table('<Table>') | take 1 で検証します。Core Shortcuts API はクエリ可能にするために必須ではありません(リンクを作成するだけです)。テーブルがクエリ可能でない場合 → STOP し、計画 / 登録に戻ってください。スキーマ読み取り、型マッピング、コマンドテンプレートについては
references/eventhouse-shortcuts-reference.md を参照してください。
外部デルタテーブルを登録する際は、常にクエリ高速化ポリシー(true)を有効化し、
クエリ高速化ポリシー に従ってください。そして結果のステータス(期待値: 有効)を報告してください。
ステージ 12 — スキーマとデータの検証(相関の前に必須)
仮定やスクリーンショットに基づいて相関ロジックを構築しないでください。結合、ビン、しきい値を提案する前に、実際の KQL データベースに対して検証してください。このステージの前にビジネスインテントをすでに取得 / 確認している必要があります — ステージ 7 で延期していた場合は、続行する前にここで取得してください(ステージ 7 の質問 / フォールバックを使用)。以下のテレメトリソースの選択は目標との関連性で評価されるためです。インテントを決して仮定しないでください。
前提条件
- 運用テレメトリテーブルが Eventhouse / KQL データベースで利用可能である。
- ビジネステーブルが同じデータベースで利用可能である、またはショートカット経由でクエリ可能である。
- テーブルがクエリ可能である(OneLake で見えるだけでは不十分)。
- スキーマが
getschema経由で取得されている。 - 動的フィールドが検査およびサンプリングされている。
- 候補となる結合キーがトップレベルおよび動的列から抽出されている。
- 結合キーがゼロ以外の一致結果で検証されている(直接結合を提案する場合)。
- データの鮮度が検証されている。
- 時間枠が実際のデータ範囲に合わせられている。
- ルールがそれらに依存する場合、関連するカテゴリ値が実データから確認されている。
手順
クエリの規則。 ミラーリングされたテレメトリテーブルは外部テーブルです。
external_table('<name>')を使ってクエリしてください(.show tablesには表示されません)。 Eventhouse で管理されているビジネステーブルには、テーブル名をそのまま使います。
-
実際のスキーマを取得します。 各テーブルについて、次を実行します。
external_table('<TableName>') | getschema | project ColumnName, ColumnType。 スクリーンショットやテーブル名から推測した名前ではなく、信頼できる列名と型を使用してください。 -
dynamic フィールドを調べてサンプルを確認します。 ビジネスの結合キーは、多くの場合、dynamic 列(
Properties、CustomDimensions、Details、Measurements、Payload、Context)にネストされています。行をサンプリングしてキーを調べてください。 references/app-insights-dynamic-fields-reference.md を参照してください。 -
候補となるビジネス識別子を抽出します。 明示的な KQL(
tostring(Properties.BookingId)。大文字・小文字の違いにはcoalesceによるフォールバックを使用)を使います。 -
実データに対して結合キーを検証します。 候補のキーで結合できることを証明するため、結合を実行し、ゼロ以外の一致を確認します。
external_table('AppEvents') | extend BookingId = tostring(Properties.BookingId) | where isnotempty(BookingId) | join kind=inner (Bookings | project BookingId = tostring(BookingId)) on BookingId | summarize MatchedRows=count(), DistinctBookings=dcount(BookingId)ゼロ以外 → 直接結合、高い確信度。ゼロ → キーが間違っているか、データに重なりがありません。正しいキーを見つけてください。
-
データの鮮度を確認し、期間を合わせます。
external_table('<TableName>') | summarize Rows=count(), MinTime=min(TimeGenerated), MaxTime=max(TimeGenerated)。ago(1h)と決めつけず、実際のデータ範囲をカバーする期間を使い、ユーザーにわかる形で説明してください。 -
ルールで使うカテゴリ値を確認します。 (
external_table('<Table>') | summarize count() by <field>)を実行し、影響ルールで実際のカテゴリが使われるようにします。
テレメトリソース選択フレームワーク(必須)
テレメトリソースの選択は、必ずデータに基づいて行ってください。相関モデルを選択する前に、スキルは検出された候補となるすべてのテレメトリソース(例:AppEvents、AppExceptions、AppRequests、AppDependencies、AppTraces、AppPageViews、AppBrowserTimings、AvailabilityResults、および存在するその他のテレメトリソース)を調査する必要があります。1 つだけを調べるのでは不十分です。
各候補のテレメトリソースを、次の項目で評価します。
- 発見されたビジネス識別子。
- dynamic フィールドの豊富さ。
- 直接結合の確信度。
- 検証済みの一致件数。
- ビジネスプロセスのコンテキスト。
- 選択したビジネス目標との関連性。
最も高いスコアのテレメトリソースを選択します。スキルは AppExceptions や AppEvents を自動的に優先してはいけません。実データに基づいて最も高いスコアを獲得したソースを選択します。
終了条件(必須)
Stage 14 に進む前に、以下の条件をすべて満たす必要があります。getschema でスキーマを取得していること、直接結合を使う場合は結合キーにゼロ以外の一致があることを検証していること、データの鮮度を確認し期間を合わせていること、関連するカテゴリ値を確認していること。いずれかを満たせない場合は、そこで停止して先に進まないでください。
引き継ぎ(必須)
(検証済みの結合キー、一致結果、該当する場合はビジネスへの影響、データの期間を含む)簡潔な概要を提示します。そのうえで、次のように尋ねてください。「この検証済みモデルに基づいて、ビジネス分析(影響のモデリング、ダッシュボード、任意で Operations Agent)に進みますか?」必ず停止して、返答を待ってください。確認後、references/business-analysis-workflow.md で定義されている Stages 13–17 に進みます。
Stages 13–17 — ビジネス指向の分析(リファレンスで定義)
ビジネス指向の分析の後半(ビジネスデータの発見とスコアリング、相関の計画、任意の Real-Time KQL ダッシュボード、ゲート付きで任意の Operations Agent)は、references/business-analysis-workflow.md(Appendices A–B を含む)に正式に定義されています。このファイルは、Stage 12 の引き継ぎでユーザーが参加を選択した場合にのみ読み込みます。参加を選択した場合は、記憶に頼って作業してはいけません。そのファイルを開き、Stages 13–17 に厳密に従ってください。コントローラーは引き続きこれらのステージと順序、停止条件、確認ゲート(ダッシュボードをエージェントより先に作成すること、および Stage 16 の「そもそもエージェントが必要か」というゲートを含む)を追跡し、適用します。
トラブルシューティング(ユーザー向け)
- 「プレイブックが生成されない」/フィールドを計算できない → 手順でフィールドを概念的に説明していました。明示的な KQL の実体化クエリを追加し、フィールドごとの KQL 定義を追加し、アラートルールが実際の出力列を参照していることを確認し、動的フィールドの抽出を追加して、結合キー/識別子を明確にしてください。文章の言い換えだけでは不十分です。
- 開始は成功するが、Teams アラートが届かない → ルールに一致するデータがなかった可能性があります。POC/デバッグ用のしきい値に切り替え、データが一致しなかった可能性を説明してください。証拠がないままプラットフォームの障害だと示唆してはいけません。
必須/推奨/回避
必須
- ステージ、ハードストップ、確認ゲートを徹底してください。
- OAuth(UI ガイド付き)とサービスプリンシパル(自動作成または再利用)を厳密に分けてください。
- 作成前にアクセス許可を検証してください。
- 相関処理の前に、スキーマ、動的フィールド、結合の一致、データの鮮度を検証してください。
- Operations Agent の手順に明示的な KQL を記載してください。
推奨
- 接続の解決には、OAuth(UI ガイド付き)よりもサービスプリンシパル(自動)を優先してください。サービスプリンシパルが利用できない場合に限り、OAuth にフォールバックしてください。
- 時間枠による相関よりも、直接結合を優先してください。
- 推測した値ではなく、実際に検出された値を使用してください。
- 技術的な質問ではなく、ビジネス用語で確認してください。
回避
- ユーザー向けのフローで MCP に依存したり、MCP に言及したりしないでください。
- 内部 API やドキュメント化されていない API をサポート対象として提示しないでください。
- 公開 API を使った OAuth コネクタの作成を主張しないでください。
- ワークスペース、テーブル、スキーマ、ID、クエリ結果を捏造しないでください。
- シークレット、OAuth コード、トークン、Cookie、ノンスを求めないでください。
- 時間枠による相関しかない場合に、因果関係を主張しないでください。
例
例 1 — Azure Monitor のオブザーバビリティデータを取り込み、ビジネスへの影響を確認する
ユーザー:「Observability ワークスペースに、Azure Monitor/Log Analytics のオブザーバビリティデータ(Application Insights のテーブルが含まれています)を Fabric に取り込んでから、先週のレイテンシー急増がチェックアウトのコンバージョンに悪影響を与えたかどうか教えてください。」
スキルの動作: 段階的なワークフローを実行します。対象のワークスペースを確認し、取り込みの前提条件(到達可能な Azure Monitor/Log Analytics ソースまたは接続)を確認します。前提条件が不足している場合は、不足しているものを明示した一覧を提示して停止します。オブザーバビリティデータ(Application Insights のテレメトリテーブルを含む)が取り込まれてクエリ可能になったら、ワークスペース内の実際のビジネスデータセットを検出し、検出したキーを使ってレイテンシーのシグナルとコンバージョン KPI を相関させ、具体的なビジネス影響の結論(または必要なデータが利用できない場合はエラー)を報告します。ワークスペース名、テーブル、クエリ結果を捏造せず、トークンや接続の内部情報を開示することもありません。
例 2 — 対象範囲外のオーサリング依頼
ユーザー:「新しい Spark ノートブックを作成し、ビジネスデータセットを読み込むための Delta テーブルパイプラインを構築してください。」
スキルの動作: 対象範囲外のオーサリング依頼を断り、Fabric では何も作成せず、タスクを引き受けるのではなく、適切なオーサリングモードを利用するようユーザーに spark-cli を案内します。