pbix-lineage について
pbix-lineageは、Power BIの.pbixレポートを解析し、データソースからクエリやモデルのフィールドを経てビジュアルに至る、たどれるリネージグラフを構築します。グラフのエクスポート、HTTP API、MCPアクセス、Pythonパイプライン生成にも対応しています。
主な機能
- 01ソースからビジュアルまでのリネージ追跡
- 02グラフノードの検索とたどり
- 03GraphMLとCSVへのエクスポート
- 04Pythonレポートパイプラインの生成
- 05REST APIとMCPエンドポイント
活用シーン
- 01ビジュアルのフィールドからソースを追跡
- 02データソースの下流への影響を調査
- 03グラフ分析用にリネージをエクスポート
MCP 対応
`/mcp/`のMCPサーバーから、グラフの検索、たどり、エクスポート、コード生成を利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🌐 PBIX‑Atlas
Power BI の完全なリネージグラフ — ソースからビジュアルのフィールドまで
PbixAtlas は、Power BI の .pbix ファイル向けの汎用リネージグラフです。ソースからビジュアルのフィールドまでを、1 つのたどることのできるグラフにまとめます。
source (HTTP, OData, SQL, file...) --> Power Query (M)
--> column / calculated column --> measure (DAX)
--> field displayed in a report visual
インストール
pip install pbix-atlas
# or
uv add pbix-atlas
クイックスタート
from pbix_atlas import LineageGraphBuilder, upstream, downstream, print_tree, find_nodes
graph = LineageGraphBuilder().build("my_report.pbix")
find_nodes(graph, "customer_name")
print_tree(graph, "visual_field::my_report.pbix::Page1::16::customer_name", direction="upstream")
print_tree(graph, "source::odata::example.com/odata/", direction="downstream")
エクスポート
from pbix_atlas import export_graphml, export_nodes_csv, export_edges_csv, graph_summary
graph_summary(graph) # {'query': 70, 'column': 183, ...}
export_graphml(graph, "lineage.graphml") # Gephi / yEd
export_nodes_csv(graph, "nodes.csv")
export_edges_csv(graph, "edges.csv")
コード生成 — スタンドアロンの Python パイプライン
レポートの全処理チェーン(ソース → 抽出 → Power Query → セマンティックモデル → Vizro ダッシュボード)を再現する単一の Python ファイルを生成します。M ソースはパターンマッチングではなく、組み込みインタープリターによって実行時に実行されます。未実装の関数は MRuntimeError を発生させます(無言のスタブはありません)。
pip install "pbix-atlas[codegen]"
pbix-atlas-codegen my_report.pbix -o pipeline.py
from pbix_atlas import generate_python_pipeline
generate_python_pipeline("my_report.pbix", "pipeline.py")
HTTP API / MCP サーバー
uv sync --extra api
uv run pbix-atlas # http://127.0.0.1:8080
- REST:
POST /graphs、/search、/upstream、/downstream、/tree、/export、/codegen - MCP(ストリーミング可能な HTTP):
http://127.0.0.1:8080/mcp/ - 環境変数:
PBIX_LINEAGE_HOST、PBIX_LINEAGE_PORT
アーキテクチャ
| モジュール | 役割 |
|---|---|
models.py | ノード/エッジの型と共通データ構造 |
sources.py | 物理ソースの検出(設定可能なパターン) |
pbix_model.py | pbixray から分離するアダプター |
m_lexer.py / m_parser.py | 組み込みの M トークナイザーとパーサー |
m_interpreter.py | M ランタイムインタープリターと標準ライブラリ |
dax_translate.py | DAX → Python(サポート対象のサブセット) |
dax.py | DAX 参照の解析 |
mquery.py | Power Query の依存関係(テーブルレベル) |
layout.py | 内部の Report/Layout 形式の解析 |
graph_builder.py | オーケストレーター:networkx.DiGraph を構築 |
navigation.py | 上流/下流のたどり、検索、エクスポート |
codegen.py | Python パイプラインのコード生成 |
api/app.py | FastAPI と MCP のマウント(FastMCP) |
サンプルファイル
- Retail Analysis Sample PBIX(Microsoft)
- Sales & Returns Sample v201912(Microsoft)
開発
uv sync --extra dev
uv run pytest
uv build
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。