lineage-analysis について
lineage-analysisは、アクセス可能なPower BIワークスペースを調べ、セマンティックモデルに接続するレポートを見つけるスキルです。変更影響の確認や依存関係の監査に使え、検出したレポートをワークスペース別にまとめます。
主な機能
- 01セマンティックモデルに紐づくレポートの検索
- 02アクセス可能なワークスペースの並列スキャン
- 03ワークスペース別の結果整理
- 04JSON形式での結果出力
活用シーン
- 01モデル変更前のレポート影響確認
- 02共有モデルを利用するレポートの監査
- 03複数ワークスペースにある想定外またはテスト用レポートの発見
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ data-goblin/ power-bi-agentic-development --skill lineage-analysisインストール後、Claude Code で/lineage-analysisを入力して読み込まれたか確認します。
同梱ファイルscripts/get-downstream-reports.py
詳細
系統系列の分析
テナント全体で、セマンティックモデルから接続されているすべてのレポートへの下流依存関係を追跡します。管理者権限は不要です。ワークスペースの投稿者アクセス権があれば十分です。
使用する場面
- セマンティックモデルの変更または削除の前に、影響を把握する
- モデルに接続されているレポートと、その保存場所を監査する
- 本番モデルに接続されている孤立したレポートやテストレポートを特定する
- ワークスペースをまたいだ依存関係をマッピングする
下流レポート
scripts/get-downstream-reports.py を実行し、セマンティックモデルにバインドされているすべてのレポートを見つけます。
# By workspace and model name
python3 scripts/get-downstream-reports.py "Workspace Name" "Model Name"
# By dataset GUID directly
python3 scripts/get-downstream-reports.py --dataset-id <guid>
# JSON output for further processing
python3 scripts/get-downstream-reports.py "Workspace" "Model" --json
要件: azure-identity、requests(pip install azure-identity requests)。DefaultAzureCredential で認証します(az login、マネージド ID、または環境変数で動作します)。
仕組み: ユーザーがアクセスできるすべてのワークスペースを一覧表示し、各ワークスペースのレポートを並列(8 ワーカー)で照会して datasetId を確認します。結果はワークスペースごとにまとめられます。通常、約 100 のワークスペースであれば 10 秒以内に完了します。
権限: スキャンするワークスペースで投稿者以上の権限が必要です。アクセス権のないワークスペースのレポートは表示されません。テナント全体を網羅するには、テナント管理者のトークンと --dataset-id フラグを使用し、代わりに admin/reports API を利用してください。
制限事項
レポートだけが利用者ではありません。 セマンティックモデルは、次のものからも利用できます。
- Analyze in Excel ワークブック(.xlsx のライブ接続)
- 複合モデル(DirectQuery を介して連鎖する他のセマンティックモデル)
- 探索(Power BI サービスでのアドホックなビジュアル探索)
- Fabric ノートブック(Spark または sempy 経由の接続)
- Fabric データエージェント
- ページ分割されたレポート(.rdl)
- モデルを参照するデータフロー
- XMLA 経由で接続するサードパーティツール
このスクリプトで検出できるのは Power BI レポートのみです。これら以外の項目タイプも含めて依存関係をすべてマッピングするには、Fabric 系列 API(fab api "admin/groups/{id}/lineage")または Power BI サービス UI の系列ビューを使用してください。
多数のモデルを一度に扱う用途には適していません。 このスクリプトは実行のたびに、アクセス可能なすべてのワークスペースをスキャンします。数十件のセマンティックモデルをループで処理すると、API 呼び出しが過剰に発生し、スロットリングのリスクがあります。多数のモデルを一括で棚卸しするには、テナント管理者アクセスが利用可能な場合は管理者スキャン API(fab api "admin/workspaces/getInfo")を使用するか、手早く管理者権限なしで一覧を取得するには、ワークスペース横断カタログの fab find ... -P type=SemanticModel を使用してください。どちらの方法でも、レポートとモデルの依存関係は解決されません。fab find と OneLake カタログでは系列を確認できません。そのためには、ワークスペースごとのスキャン(このスクリプトの方式)か、公式の Power BI 系列管理者 API(fab api "admin/groups/{ws-id}/lineage")が引き続き必要です。
結果の解釈
| フィールド | 意味 |
|---|---|
レポート形式 PBIR | 最新の形式で、JSON として編集できます |
レポート形式 PBIRLegacy | レガシー形式で、直接編集するには PBIR への変換が必要です |
| 想定外のワークスペースにあるレポート | コピー、フォーク、または共有モデルを参照するシンレポートの可能性があります |
| 下流レポートが多数ある | 影響の大きいモデルです。変更には関係者との調整が必要です |
関連スキル
semantic-model-- モデルの設計、構築、更新、レビュー(品質、メモリ、DAX、設計)refreshing-semantic-model-- モデルの更新を開始および監視するfabric-cli(fabric-cli プラグイン)--fabCLI によるワークスペースと項目の管理