/lineage-analysis
Trace relationships between semantic models and downstream reports across Fabric workspaces. Automatically invoke when the user asks to "find downstream reports", "show report lineage", "impact analysis", "what depends on this dataset", "cross-workspace lineage", "which reports
$ npx -y skills add data-goblin/power-bi-agentic-development --skill lineage-analysis --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/lineage-analysis
Context preview
The summary Claude sees to decide when to auto-load this skill.
Trace relationships between semantic models and downstream reports across Fabric workspaces. Automatically invoke when the user asks to "find downstream reports", "show report lineage", "impact analysis", "what depends on this dataset", "cross-workspace lineage", "which reports
SKILL.md
lineage-analysis.SKILL.mdname: lineage-analysis
description: Trace relationships between semantic models and downstream reports across Fabric workspaces. Automatically invoke when the user asks to "find downstream reports", "show report lineage", "impact analysis", "what depends on this dataset", "cross-workspace lineage", "which reports are connected", "get model dependencies", or mentions model-to-report dependency tracing.
Lineage Analysis
Trace downstream dependencies from a semantic model to all connected reports across the tenant. No admin permissions required -- workspace contributor access is sufficient.
When to Use
- Before modifying or deleting a semantic model, to understand impact
- Auditing which reports are connected to a model and where they live
- Identifying orphaned or test reports connected to production models
- Cross-workspace dependency mapping
Downstream Reports
Run `scripts/get-downstream-reports.py` to find all reports bound to a semantic model.
# 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
**Requirements:** `azure-identity`, `requests` (`pip install azure-identity requests`). Authenticated via `DefaultAzureCredential` (works with `az login`, managed identity, or environment variables).
**How it works:** Lists all workspaces the user can access, then queries each workspace's reports in parallel (8 workers) checking `datasetId`. Groups results by workspace. Typically completes in under 10 seconds for ~100 workspaces.
**Permissions:** Workspace contributor or higher on any workspace to be scanned. Reports in workspaces without access will not appear. For full tenant coverage, use the `--dataset-id` flag with a tenant admin token and the `admin/reports` API instead.
Limitations
**Reports are not the only consumers.** A semantic model can also be consumed by:
- Analyze in Excel workbooks (.xlsx live connections)
- Composite models (other semantic models chaining via DirectQuery)
- Explorations (ad-hoc visual explorations in the Power BI service)
- Fabric notebooks (connecting via Spark or sempy)
- Fabric data agents
- Paginated reports (.rdl)
- Dataflows referencing the model
- Third-party tools connecting via XMLA
The script only discovers Power BI reports. For full dependency mapping including these other item types, use the Fabric lineage APIs (`fab api "admin/groups/{id}/lineage"`) or the lineage view in the Power BI service UI.
**Not appropriate for many models at once.** The script scans all accessible workspaces per invocation. Running it in a loop over dozens of semantic models will generate excessive API calls and risk throttling. For bulk inventory across many models, use the admin scan API (`fab api "admin/workspaces/getInfo"`) when tenant-admin access is available, or the cross-workspace catalog via `fab find ... -P type=SemanticModel` for a quick non-admin list. Neither alternative resolves report-to-model dependency edges; `fab find` and the OneLake catalog do not expose lineage. For that you still need either a per-workspace scan (this script's approach) or the official Power BI lineage admin API at `fab api "admin/groups/{ws-id}/lineage"`.
Interpreting Results
| Field | Meaning | |-------|---------| | Report format `PBIR` | Modern format, editable as JSON | | Report format `PBIRLegacy` | Legacy format, needs conversion to PBIR for direct editing | | Reports in unexpected workspaces | May indicate copies, forks, or thin reports pointing at a shared model | | Many downstream reports | High-impact model -- changes require coordination |
Related Skills
- **`semantic-model`** -- Design, build, refresh, and review models (quality, memory, DAX, design)
- **`refreshing-semantic-model`** -- Trigger and monitor model refreshes
- **`fabric-cli`** (fabric-cli plugin) -- Workspace and item management via `fab` CLI
Read more
name: lineage-analysis description: Trace relationships between semantic models and downstream reports across Fabric workspaces. Automatically invoke when the user asks to "find downstream reports", "show report lineage", "impact analysis", "what depends on this dataset", "cross-workspace lineage", "which reports are connected", "get model dependencies", or mentions model-to-report dependency tracing.
Lineage Analysis
Trace downstream dependencies from a semantic model to all connected reports across the tenant. No admin permissions required -- workspace contributor access is sufficient.
When to Use
- Before modifying or deleting a semantic model, to understand impact
- Auditing which reports are connected to a model and where they live
- Identifying orphaned or test reports connected to production models
- Cross-workspace dependency mapping
Downstream Reports
Run `scripts/get-downstream-reports.py` to find all reports bound to a semantic model.
# 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
**Requirements:** `azure-identity`, `requests` (`pip install azure-identity requests`). Authenticated via `DefaultAzureCredential` (works with `az login`, managed identity, or environment variables).
**How it works:** Lists all workspaces the user can access, then queries each workspace's reports in parallel (8 workers) checking `datasetId`. Groups results by workspace. Typically completes in under 10 seconds for ~100 workspaces.
**Permissions:** Workspace contributor or higher on any workspace to be scanned. Reports in workspaces without access will not appear. For full tenant coverage, use the `--dataset-id` flag with a tenant admin token and the `admin/reports` API instead.
Limitations
**Reports are not the only consumers.** A semantic model can also be consumed by:
- Analyze in Excel workbooks (.xlsx live connections)
- Composite models (other semantic models chaining via DirectQuery)
- Explorations (ad-hoc visual explorations in the Power BI service)
- Fabric notebooks (connecting via Spark or sempy)
- Fabric data agents
- Paginated reports (.rdl)
- Dataflows referencing the model
- Third-party tools connecting via XMLA
The script only discovers Power BI reports. For full dependency mapping including these other item types, use the Fabric lineage APIs (`fab api "admin/groups/{id}/lineage"`) or the lineage view in the Power BI service UI.
**Not appropriate for many models at once.** The script scans all accessible workspaces per invocation. Running it in a loop over dozens of semantic models will generate excessive API calls and risk throttling. For bulk inventory across many models, use the admin scan API (`fab api "admin/workspaces/getInfo"`) when tenant-admin access is available, or the cross-workspace catalog via `fab find ... -P type=SemanticModel` for a quick non-admin list. Neither alternative resolves report-to-model dependency edges; `fab find` and the OneLake catalog do not expose lineage. For that you still need either a per-workspace scan (this script's approach) or the official Power BI lineage admin API at `fab api "admin/groups/{ws-id}/lineage"`.
Interpreting Results
| Field | Meaning | |-------|---------| | Report format `PBIR` | Modern format, editable as JSON | | Report format `PBIRLegacy` | Legacy format, needs conversion to PBIR for direct editing | | Reports in unexpected workspaces | May indicate copies, forks, or thin reports pointing at a shared model | | Many downstream reports | High-impact model -- changes require coordination |
Related Skills
- **`semantic-model`** -- Design, build, refresh, and review models (quality, memory, DAX, design)
- **`refreshing-semantic-model`** -- Trigger and monitor model refreshes
- **`fabric-cli`** (fabric-cli plugin) -- Workspace and item management via `fab` CLI
Power BI AI skills and Power BI agents for Claude Code and GitHub Copilot: a plugin marketplace of Power BI skills, subagents, and hooks for semantic models, DAX, TMDL, reports, and AI dashboards. Includes Microsoft Fabric skills and Fabric agents. Weekly updates.
Repo: data-goblin/power-bi-agentic-development
Other skills on power-bi-agentic-development.
- /deneb-visuals
Deneb visual creation, Vega/Vega-Lite spec authoring, and Deneb best practices for PBIR reports. Automatically invoke whenever the user mentions "Deneb" in any context, or asks about Vega/Vega-Lite specs in Power BI, Deneb cross-filtering, Deneb interactivity, pbiColor theme
Open skill - /powerbi-custom-visuals
Power BI custom visual (.pbiviz) development with the pbiviz toolchain and its MCP server. Automatically invoke when the user mentions "custom visual", "pbiviz", "develop a Power BI visual", "powerbi-visuals-tools", "IVisual", "capabilities.json", "visual formatting model",
Open skill - /python-visuals
Python visual creation and matplotlib/seaborn patterns for PBIR reports. Automatically invoke when the user mentions "Python visual", "matplotlib in Power BI", "seaborn in Power BI", "pythonVisual", or asks to "create a Python visual", "add a matplotlib chart", "write a Python
Open skill - /r-visuals
R visual creation and ggplot2 patterns for PBIR reports. Automatically invoke when the user mentions "R visual", "ggplot2", "ggplot in Power BI", or asks to "create an R visual", "add an R chart", "write an R visual script", "inject an R script into Power BI".
Open skill - /svg-visuals
SVG generation via DAX measures and extension measures with ImageUrl data category for inline visualizations in PBIR reports. Automatically invoke when the user mentions "SVG visual", "DAX sparkline", "SVG measure", "inline graphics with DAX", "ImageUrl data category",
Open skill - /executing-spark
Execute arbitrary Python or PySpark code on Fabric Spark compute without creating a notebook artifact; ephemeral Livy sessions with full Delta table access. Automatically invoke when the user asks to "run PySpark in Fabric", "create a Livy session", "execute Python on Fabric
Open skill

