How to document Power BI reports the right way
A complete documentation schema for Power BI reports, from business purpose to measures, models and changes.
Anyone who wants to document Power BI reports has to capture more than the visuals they contain. Good documentation describes why the report exists, who it is built for, which metrics it uses, and which models and refresh cycles it depends on.
This makes the report understandable even for people who did not build it. At the same time, the BI team can assess changes more accurately and keep reused measures consistent.
Start with a short report profile and link from there to the KPI and model definitions you use. That prevents the same calculation logic from being maintained separately in every report document.
What belongs in Power BI report documentation?
Documentation should connect three layers:
- Business context: purpose, audience, decisions, and owners
- Report structure: pages, visuals, filters, navigation, and usage notes
- Technical lineage: measures, semantic models, refresh, sources, and dependencies
When one layer is missing, predictable questions follow. A purely business-oriented fact sheet does not help with a failed refresh. A list of technical measures does not explain which decision the report supports.
The twelve core documentation fields
| Field | Guiding question |
|---|---|
| Report name | What is the report clearly called? |
| Purpose | Which decision or process does it support? |
| Audience | Who uses the report regularly? |
| Business owner | Who is responsible for content and priorities? |
| Technical owner | Who operates the model and the report? |
| Pages and navigation | Which areas does the report contain? |
| KPIs and measures | Which metrics are displayed or calculated? |
| Filters and security | Which default filters and access restrictions apply? |
| Source models | Which semantic models is the report based on? |
| Data currency and refresh | Up to when is source data included and how is the model refreshed? |
| Dependencies | Which sources, tables, and other reports are relevant? |
| Change history | Which business-relevant changes have been made? |
Add the report URL, workspace, and status right in the profile. A name and a screenshot alone are not enough to reliably tell development, test, and production apart.
Defining report purpose and audience
"Sales Dashboard" is not a purpose. Describe which decisions are made with the report. For example:
The report supports sales leadership and regional managers in the weekly assessment of pipeline, bookings, and target attainment.
The audience shapes the level of detail, timeliness, and permissions. An operational dashboard for account executives needs different filters and refresh times than a monthly report for the executive board.
Also document what the report is not suitable for. This prevents aggregated management figures from being used for operational, case-by-case decisions.
Separating business and technical owner
The business owner decides on KPI selection, definitions, and priorities. The technical owner is responsible for the model, refresh, and troubleshooting.
Both roles can sit with the same person in small teams. Separating the responsibilities is still useful: a technical change must not silently alter a business definition.
Describing pages, visuals, and navigation
A compact page overview is often enough:
| Page | Purpose | Key content |
|---|---|---|
| Executive Overview | Assess overall performance | Revenue, target attainment, forecast |
| Pipeline | Manage sales opportunities | Pipeline value, stages, conversion |
| Regions | Analyze differences | KPIs by region and team |
| Details | Investigate individual cases | Opportunities and accounts |
Only document special navigation, drillthroughs, tooltips, or bookmarks in detail when they matter for interpretation. The goal is orientation, not a pixel-perfect user manual.
Connecting measures and KPI definitions
DAX measures contain calculation logic, but not always an understandable business definition. For every decision-relevant measure, the following should be documented:
- the standard business name,
- meaning and scope,
- formula or DAX expression,
- unit and time period,
- owner and status,
- the tables and fields used,
- dependencies on other measures.
Technical helper measures can stay documented in the model. They do not all need to appear as business KPIs. This separation keeps a metrics catalog from being overloaded with intermediate calculations.
Filters, time logic, and permissions
Filters change what a report says. At a minimum, record:
- global and page-specific default filters,
- the date logic used,
- excluded test or internal records,
- currency and region settings,
- row-level security or other visibility restrictions.
A common mistake is a KPI definition that looks correct on paper while the report applies additional hidden filters. The definition and the actual report context must match.
Filters are not access control. A slicer describes the current selection; row-level security describes which data a role is allowed to see. Document both separately and test with the intended user role. Microsoft explains the distinction in the documentation on row-level security.
Refresh and data currency
Do not just document "daily," but also:
- the scheduled refresh time,
- the relevant time zone,
- the expected source availability,
- the responsible team,
- the behavior on failure,
- a visible indicator of data currency.
Distinguish the source data currency, the last successful model refresh, and the refresh of the visuals. Import models load a stored snapshot of data; DirectQuery reaches the source at query time. A freshly loaded visual therefore does not automatically guarantee current source data. Microsoft describes the technical variants under data refresh in Power BI.
A clear note might read, for example: "ERP data up to yesterday 23:59; model last refreshed today at 06:12, Europe/Berlin." That is more meaningful than "last refreshed today."
Source models and dependencies
Document the semantic model the report accesses, including its workspace and owner. If that model draws on further semantic models or data sources, capture them as upstream dependencies. This keeps the report and the model chain distinguishable.
For impact analysis, several kinds of relationship matter:
- Report uses measure.
- Measure depends on another measure.
- Measure uses table or field.
- Model sources data from a source.
- Report replaces or complements another report.
These relationships should be maintained in a structured way rather than as text only. How the model behind it is documented is covered in the guide document data models.
Keeping a useful change history
Not every color change needs a governance entry. Document changes that affect meaning, usage, or results:
- a new or removed KPI,
- changed calculation logic,
- new default filters,
- an adjustment to time or currency logic,
- a switch of the source model,
- a change of owner or status,
- replacement by another report.
Each entry should include the date, the person responsible, the reason, and the affected elements.
End-to-end example: sales management report
This fictitious example illustrates the scope of documentation, not an existing customer implementation.
Name: Sales Performance & Pipeline
Purpose: Weekly management of bookings, revenue, pipeline, and forecast at company and regional level
Audience: CRO, sales leadership, regional leads
Business owner: VP Sales Operations
Technical owner: BI Sales Team
Pages: Executive Overview, Pipeline, Forecast, Regions, Opportunity Details
Key KPIs: Net revenue, bookings, pipeline value, win rate, forecast accuracy
Default filters: Current fiscal year; internal test accounts excluded; group currency EUR
Source model: Sales Analytics Model
Refresh: Weekdays at 06:00 Europe/Berlin after the CRM replication completes
Dependencies: CRM Opportunity, ERP Sales Order, exchange rate table, and calendar dimension
Last business change: Since July, win rate uses the close date instead of the creation date. The change applies from July onward; earlier monthly figures are not recalculated retroactively in this example.
Acceptance case: two users see different values
Sales leadership sees 120 closed opportunities, a regional manager only 30. Before changing the formula, check the documentation in this order:
- Are both using the same production report version and the same model?
- Are the time period, date field, and applied filters identical?
- Does RLS restrict the regional manager to their region?
- Are the data currency and last successful refresh comparable?
- Does the visual calculate the rate in the current context, or does it use different measure logic?
The difference may be intentional from a business perspective. Good report documentation lets you explain that clearly before fixing what only looks like an error.
Review checklist
- Purpose and audience are described concretely.
- Business and technical owner are named.
- The page overview and important navigation are up to date.
- Decision-relevant measures have business KPI definitions.
- Default filters, time logic, and permissions are visible.
- Source models, tables, and measure dependencies are linked.
- Refresh time and behavior on failure are documented.
- Business-relevant changes are traceable.
- Outdated reports point to their successor.
- Documentation and the visible report do not contradict each other.
Common mistakes
Documenting only screenshots
Screenshots go stale quickly and are not searchable. Structured metadata stays usable for search and relationships.
Treating every DAX measure as a KPI
Helper measures have technical meaning but are not automatically business management figures.
Confusing model metadata with complete report documentation
A model import does not provide a full description of report pages, bookmarks, usage context, and business decisions. Add this information deliberately at the report level instead of inferring it from measure names.
Confusing refresh with data currency
A successful report run does not guarantee that all sources were current. Document the expected source availability and the visible data currency.
Keeping report variants without a lifecycle
Mark drafts and outdated reports. A catalog without status makes the search problem worse.
Frequently asked questions
Can MetricsMap inventory Power BI reports automatically?
No. There is currently no automated import of your report inventory. MetricsMap can import
.bim metadata from models and provides the foundation of KPIs, data models, and
relationships.
Are .pbix files supported?
The MetricsMap import described here uses .bim model metadata and does not parse
.pbix files. The documentation schema for the report can be applied manually
regardless of that.
Which Power BI content can be imported from .bim?
Tables, columns, relationships, and DAX measures as metadata. Raw data from the model is not stored.
Does every report page need to be documented separately?
A short overview is enough, as long as the purpose and key content are understandable. Detailed descriptions make sense for complex navigation, special filters, or critical workflows.
Conclusion
Power BI documentation connects report purpose, user context, and technical lineage. Start with owners, KPIs, filters, source model, and refresh. Add pages and changes in as much detail as your operations and decisions require.