Creating Reports
Introduction
This lesson opens the domain Visualize and analyze the data (25–30% of the PL-300 skills measured, outline dated April 20, 2026). Under "Create reports" the official outline lists: identify and create appropriate visuals; format and configure visuals; use a custom visual; apply and customize a theme; configure conditional formatting; apply slicing and filtering; configure the report page; use the Analyze in Excel feature; choose when to use a paginated report; and create visual calculations and the Copilot narrative visual / report pages features. Questions are scenarios: a stakeholder needs to compare, rank, track a trend or show composition, and you pick the visual or setting. Microsoft does not publish the question count or the mix of question types; OnLevelUp mock exams use a 50-question practice length and an 80% practice target, neither of which is official or a conversion of the 700/1000 passing score.
After this lesson you will be able to choose a visual from the analytical question, format and theme a report, apply conditional formatting with rules, gradients and field values, configure slicers and the three levels of filters, decide between a Power BI report and a paginated report, and write a visual calculation.
Learning objectives
- Match an analytical task (comparison, trend, composition, distribution, relationship, ranking, single value, detail) to a visual.
- Configure axes, labels, legends, tooltips, titles and page settings.
- Import and edit a theme (JSON) and use custom visuals from AppSource.
- Apply conditional formatting to backgrounds, fonts, data bars, icons and web URLs.
- Use slicers and the filter pane (visual, page, report-level filters) and understand filter types.
- Explain when a paginated report is the right choice and what Report Builder offers.
- Create visual calculations and describe what the Copilot narrative visual and report-page creation do.
1. Choosing the right visual
Start from the question, not from the visual.
| Analytical task | Good visuals | Avoid |
|---|---|---|
| Compare categories | Clustered bar/column, bar with data labels | Pie with many slices |
| Trend over time | Line chart, area chart | Unordered bar chart for a time series |
| Part-to-whole | Stacked bar/column, treemap, donut/pie with ≤ 5 slices, 100% stacked | 3D charts |
| Ranking | Sorted bar chart, top N filter | Unsorted columns |
| Distribution / outliers | Histogram built with binning, box-plot custom visual, scatter | Table of raw numbers |
| Relationship between two measures | Scatter (bubble) chart | Line chart across unrelated categories |
| Flow / path | Sankey (custom), decomposition tree | Table |
| Bridge / change | Waterfall | Stacked columns |
| Progress to target | Gauge, KPI, bullet chart | Table |
| Single important number | Card, multi-row card, KPI | Chart with one bar |
| Detail records / exact values | Table, matrix | Pie |
| Geography | Map, filled map, Azure map, shape map | Table of countries |
| Combined scale (revenue and margin %) | Line and clustered column chart (dual axis) | Two charts with different axes side by side |
Built-in visual families: bar/column, line/area, ribbon, waterfall, funnel, scatter, pie/donut, treemap, maps, gauge, card/KPI, table/matrix, slicer, decomposition tree, key influencers, Q&A, smart narrative, paginated report visual, and Python/R visuals.
Design guidance that appears in exam scenarios: limit each page to the key message (fewer than about 8 visuals), place the most important visual top left, keep consistent colours (the same colour means the same thing everywhere), sort categorical bars by value, use titles that state the finding, and keep sufficient contrast.
Worked example: pick visuals for a sales manager
Scenario. A sales manager asks for a one-page report that shows (1) this month's revenue against a target of 1.2 M€, (2) monthly revenue for the last 24 months, (3) the five best-performing regions, and (4) revenue share of each product category.
Step 1 – (1) progress to target: a KPI or gauge visual with Revenue as the value, Target as the target, and the month as trend axis. A card cannot show the target.
Step 2 – (2) trend: a line chart with DimDate[Month] (sorted by month number) on the X-axis and Revenue on the Y-axis.
Step 3 – (3) ranking: a bar chart with Region on the axis and Revenue as values, filtered with Top N = 5 by Revenue in the filter pane, sorted descending.
Step 4 – (4) composition: a treemap or donut for category share (5–6 categories). A stacked bar would also work if comparing over time.
Why the other choices are worse. A gauge for the trend hides history. A pie for the region ranking makes comparisons by angle hard. A table gives exact values but no visual pattern.
2. Format and configure visuals
In the Visualizations pane, the Format tab (paint roller) controls a visual's appearance; the Build tab sets fields. Frequently tested options:
- Axes: start value (a truncated axis exaggerates differences), scale type (log), continuous vs categorical X-axis for dates, concatenate labels.
- Data labels, legends, tooltips, titles, subtitles, background, border, shadow, spacing.
- Sort axis: by the measure or by a field; ascending or descending.
- Small multiples: split one chart into a grid of charts by a field (for instance a line chart per region), keeping common scales.
- Tooltips: the default shows the fields; add fields in Tooltips or use a report page tooltip (page designed as a tooltip, covered in the next lesson).
- Alt text: description for accessibility.
- Summarization: a numeric column dropped in a visual is summarized (sum, average, min, max, count, distinct count, median). Prefer explicit measures.
- Show items with no data: displays categories with no values.
- Edit interactions and Sync slicers are covered in the next lesson.
Page configuration. In Format page: page size (16:9 default, 4:3, letter, tooltip, custom), page background and wallpaper, alignment, page information (name, allow use as tooltip, allow drillthrough), Page refresh (service only). Use the View → Gridlines / Snap to grid and Align/Distribute commands for tidy layouts.
Custom visuals. AppSource provides visuals certified or not by Microsoft. Insert via … → Get more visuals; you can also import a .pbiviz file. Considerations: organizational policy may restrict them; certified visuals have passed Microsoft's code requirements and can be used in export and email subscriptions; non-certified ones may not render in some scenarios.
Themes. A theme is a JSON file that sets colours, fonts and default visual formatting for the whole report. Apply with View → Themes, customize via Customize current theme, and save the JSON to reuse across reports. Themes keep a consistent brand and reduce per-visual formatting.
{
"name": "Contoso",
"dataColors": ["#1F4E79", "#2E86C1", "#F39C12", "#27AE60"],
"background": "#FFFFFF",
"foreground": "#252423",
"tableAccent": "#1F4E79"
}
3. Conditional formatting
Conditional formatting changes the appearance of values depending on data. Available for table and matrix cells (background, font colour, data bars, icons, web URL), and for many charts (data colours, plus lines and legends in newer releases).
Three style options:
| Style | How it works | Example |
|---|---|---|
| Gradient | Colour scale between a minimum and maximum (optionally a centre) | Heat map of sales by region |
| Rules | Colour or icon by value ranges, as numbers or percentages | Red below 80%, amber 80–100%, green above |
| Field value | Uses a colour (name, hex, RGB) returned by a measure or column | A measure returns "#C0392B" for late orders |
Options: format by Summarized value, Rules, Field value, apply to values only or values and totals, and set diverging colours. Icons can show arrows or traffic lights. Data bars display in-cell bars proportional to values. A web URL conditional format turns a field into a clickable link.
Field value is the most flexible: write a DAX measure with SWITCH ( TRUE (), [Margin %] < 0, "#C0392B", [Margin %] < 0.1, "#F39C12", "#27AE60" ), then pick it under Field value. This also allows colour logic reused across visuals.
4. Slicing and filtering
Slicers let users filter visually. Types: list, dropdown, tile/button, between (numeric range), relative date (last N days/weeks/months), relative time, hierarchy, and the date slicer with a timeline. Settings: single or multi-select, Select all, search box, orientation, Sync slicers across pages.
Filter pane. Filters apply at three scopes:
- Visual-level filters affect one visual.
- Page-level filters affect all visuals on the page.
- Report-level filters affect all pages.
Filter types: Basic (select values), Advanced (conditions such as "contains" or "is greater than", with AND/OR), Top N (top or bottom N by a measure), Relative date/time. You can also add a drillthrough filter and hide or lock filters, or set them to be non-editable in reading view.
Filter vs slicer: a slicer is visible and part of the design; a filter in the pane is applied by the author (or the reader opens the pane). Use filters to impose constraints (for example, exclude test data) and slicers for choices readers make.
Interactions. By default, selecting a data point in one visual cross-filters or cross-highlights the others. Edit interactions is the next lesson's topic.
Filter evaluation. Slicers and filters combine with AND. A measure that uses ALL or REMOVEFILTERS may ignore a slicer, which is a classic cause of "the slicer does nothing" questions.
5. Analyze in Excel and paginated reports
Analyze in Excel lets Excel users connect to a Power BI semantic model published in the service and build PivotTables on it, using the model's measures and security. It is available from the semantic model's menu (or Export → Analyze in Excel) and requires permissions on the model. It keeps one governed model rather than exported copies.
Paginated reports are pixel-perfect, print-oriented reports where all rows are shown over as many pages as needed, with headers and footers repeating. They are authored in Power BI Report Builder (also a Desktop application) using datasets, parameters, tables, matrices, lists, charts, and expressions. They are published to a workspace on Fabric or Premium capacity (or Premium Per User) and can be exported to PDF, Word, Excel, PowerPoint and CSV, or delivered by subscription.
| Need | Power BI report | Paginated report |
|---|---|---|
| Interactive exploration, slicers, cross-filtering | Yes | Limited (parameters only) |
| Invoice, statement, certificate, legal form | Poor | Yes |
| Print every row of a large table across pages | Poor | Yes |
| Fixed layout with repeating headers/footers | No | Yes |
| Rapid ad hoc authoring | Yes | Slower, more technical |
| Data sources | Semantic model, many connectors | Semantic models and many relational sources |
Rule of thumb for the exam: interactive analysis → Power BI report; formatted, printable, multi-page output with all rows → paginated report.
6. Visual calculations and Copilot features
A visual calculation is a DAX calculation defined on a visual, referencing the fields in that visual (including other visual calculations) without needing model measures. It is created in the visual: Calculations → New calculation (Desktop, edit mode). It produces results for that visual only and is not in the model, so it does not clutter the model or affect other visuals.
Running Total = RUNNINGSUM ( [Sales] )
Moving Avg 3 = MOVINGAVERAGE ( [Sales], 3 )
Share of Total = DIVIDE ( [Sales], COLLAPSEALL ( [Sales], ROWS ) )
Rank = RANK ( DENSE, ROWS )
Previous = PREVIOUS ( [Sales] )
Key points:
- Functions work over the visual's axes (
ROWS,COLUMNS) and have simplified syntax:RUNNINGSUM,MOVINGAVERAGE,PREVIOUS,NEXT,FIRST,LAST,RANK,COLLAPSE,EXPAND. - The calculation can be hidden from the visual output while being used by another.
- Visual calculations cannot be used by other visuals. If several reports need the logic, create a measure.
- Some visuals, such as paginated report visuals, do not support them.
- They can drive formatting, for example returning a hex colour for Field value formatting.
Compare with the other ways of calculating:
| Method | Lives in | Reusable | Best for |
|---|---|---|---|
| Measure | Model | Everywhere | Business metrics |
| Calculated column | Model (stored) | Everywhere | Row attributes, slicer fields |
| Quick measure | Model (generates a measure) | Everywhere | Fast templated DAX |
| Visual calculation | One visual | No | Running totals, moving averages, ranks in one chart |
Copilot in reports (current features). With Copilot enabled for the workspace (requires a supported Fabric/Premium capacity and tenant settings), report authors can ask Copilot to create a report page from the semantic model and a prompt, summarize the data, and add a narrative visual that generates a text summary of the report or page content and can be refreshed as data and filters change. Authors must review AI output for accuracy; narrative text should be checked against the visuals. For the exam, remember the roles: the Smart narrative visual produces rule-based text from visuals; the Copilot narrative visual generates text with AI, and both are editable by the author. Availability depends on tenant settings and capacity, so a question may hinge on the prerequisite ("Copilot is not available in the workspace; what must be enabled?").
Worked example: running total with a visual calculation
Scenario. A matrix shows monthly sales. The analyst wants a column with year-to-date accumulation, but the team does not want new measures in the shared model.
Step 1. Select the matrix, choose New calculation and write Sales YTD = RUNNINGSUM ( [Total Sales] ).
Step 2. The default axis is ROWS, so accumulation goes down the rows. Because months are rows, the total accumulates across months. To restart the accumulation at each year, place Year as a higher level in the rows and use the optional reset argument of the function (for example HIGHESTPARENT), as described in the visual calculations documentation.
Step 3. Format as number. The calculation exists only in this matrix.
Why the alternatives are worse. A model measure with TOTALYTD is reusable but alters the shared model; a calculated column cannot respond to filters; exporting to Excel loses interactivity.
7. Pitfalls and exam tips
- Pie/donut with many categories: use bars. 3D visuals: avoid.
- Dual axes can mislead; prefer a combo chart only when the scales are unrelated and clearly labelled.
- Field value conditional formatting needs a measure or column returning a valid colour string.
- Slicer ignored? Check relationships, interactions, and
ALLin the measure. - Printable pixel-perfect report with every row: paginated report, not a table visual.
- Visual calculations are per visual; measures are shared.
- Themes are the way to apply a corporate style to every visual at once.
- Exam tip: read what the stakeholder wants to do (compare, track, rank, print) before picking a visual.
8. Mini case study
Situation. Adventure Foods needs (a) an executive page where regions with margin below 10% are red, 10–15% amber and above 15% green across a matrix and a bar chart; (b) a monthly store statement of 30 pages with every transaction, a header with the store logo, printable as PDF and emailed automatically; (c) a ranking of the top 10 products with a running share of total; (d) all reports in the corporate palette.
Question. Which features do you use?
Solution, commented.
- (a) Create a DAX measure returning a hex colour with
SWITCH ( TRUE (), [Margin %] < 0.1, "#C0392B", [Margin %] <= 0.15, "#F39C12", "#27AE60" )and apply Field value conditional formatting to both visuals so the logic stays in one place. Rules would also work in one visual but must be repeated. - (b) A paginated report built in Report Builder with repeating header and a parameter for the store, published to a Premium/Fabric workspace and delivered by a subscription as PDF.
- (c) A bar chart with a Top N = 10 filter on product by revenue and a visual calculation (
RUNNINGSUMof the sales share) on the matrix. - (d) A theme JSON with the palette and fonts, applied to each report.
Why not the alternatives. A table visual cannot reliably paginate 30 pages with repeating headers for print. Conditional formatting by Rules would need to be duplicated in each visual. Manually recolouring every visual ignores the theme.
Key terms
- Visual calculation: DAX calculation defined on and scoped to one visual.
- Theme: JSON file defining the report's colours, fonts and defaults.
- Conditional formatting: data-driven appearance (gradient, rules, field value).
- Slicer: on-canvas filter control.
- Top N filter: filter keeping the highest or lowest N items by a measure.
- Paginated report: pixel-perfect, printable report authored in Report Builder.
- Analyze in Excel: connection from Excel to a published semantic model.
- Small multiples: repeated mini charts split by a field.
- Narrative visual: visual that generates text summarizing data.
Summary checklist
- I can choose a visual from the analytical question.
- I can format axes, labels, titles and page settings, and apply a theme.
- I can apply gradient, rules and field-value conditional formatting.
- I can use slicers and visual, page and report-level filters, including Top N.
- I can decide between a Power BI report and a paginated report.
- I can write a visual calculation and explain how it differs from a measure.
- I know what Analyze in Excel and the narrative/Copilot features do and their prerequisites.
Official sources
- Study guide for Exam PL-300: https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/pl-300 (opens in a new tab)
- Conditional formatting in Power BI visuals: https://learn.microsoft.com/en-us/power-bi/visuals/power-bi-visualization-conditional-formatting (opens in a new tab)
- Visual calculations overview: https://learn.microsoft.com/en-us/power-bi/transform-model/desktop-visual-calculations-overview (opens in a new tab)
- Add and edit visual calculations: https://learn.microsoft.com/en-us/power-bi/transform-model/desktop-visual-calculations-create (opens in a new tab)
- Power BI Report Builder: https://learn.microsoft.com/en-us/power-bi/paginated-reports/report-builder-power-bi (opens in a new tab)
