Lineage answers two questions that come up in every BI estate. Forward: "if we change this database, what breaks?" — the impact-analysis question that precedes any migration or decommissioning. Backward: "where does this number actually come from?" — the trust question auditors and executives ask. Power BI has the metadata to answer both; it just does not hand it to you assembled.
The shape of Power BI lineage
The chain is: data source → semantic model → report → app audience. The critical nuance is that standard reports own no connections — they inherit everything from their model, so the model layer is where real lineage lives. Paginated reports are the exception: they connect to sources directly and must be mapped separately. Miss either rule and the lineage picture is quietly wrong.
Method 1 — The workspace lineage view
Every workspace has a built-in lineage view: a visual graph from sources through models to reports and dashboards. For understanding one workspace it is genuinely useful. Its limits: one workspace at a time, cross-workspace dependencies shown only as stubs, nothing exportable, and no way to search "everything touching server X" across the tenant.
Method 2 — Datasource and scanner APIs
The REST APIs expose the underlying facts — per-model and per-paginated-report data source entries with type and connection details, and the admin scanner API returns the same at tenant scale:
# Data sources of one semantic model
GET /v1.0/myorg/datasets/{datasetId}/datasources
# Direct connections of a paginated report
GET /v1.0/myorg/reports/{reportId}/datasourcesImpact analysis in practice
The working move is to invert the map: instead of asking each report where its data comes from, group all connections by server/database and read the list of affected models — then the reports on those models, then who actually uses those reports. That last join (lineage × usage) is what turns a migration plan from "notify everyone" into "these 12 reports matter, 30 are zombies we retire instead of migrating".
Continuous lineage mapping
PGR Sonar syncs data source connections for every semantic model and paginated report in the tenant as part of its regular catalog sync, joined to workspaces, reports and usage history. "What breaks if we move this database" stops being a scripting project and becomes a filter on a map that is already current — with the usage side attached, so you also know which of the affected reports anyone would miss.