Why Executives don't use your report

You know the dashboard I mean. Seven pages. Twelve slicers. A matrix visual that stretches past the fold. Someone spent three weeks building it and the CFO opens it once, screenshots page two, and never comes back.

This week we're building the opposite of that. One page. Three KPI cards. One trend. One slicer. The kind of report a stakeholder actually bookmarks, because every time they open it they find the number they came for in under five seconds.

Let's go.

The Brief

Before you touch Power BI Desktop, write these four things on a sticky note:

  1. Who opens this? (One person, or one role. Not "the leadership team.")
  2. What decision does it support? (If the answer is "awareness", start over.)
  3. What three numbers matter most? (Not five. Three.)
  4. What's the one cut they care about? (Time? Region? Product line?)

If you can't answer all four, you're not ready to build. Go ask. The thirty-minute conversation saves you three weeks of rework.

The 720p Canvas Reality Check

Power BI's default canvas is 1280 x 720. Your exec's laptop screen is 1920 x 1080, but after Teams sidebars, browser chrome, and the Power BI service navigation pane, they're looking at roughly 1200 x 650 of usable pixels.

That's your real canvas. Plan for it. Anything that requires scrolling on a 14-inch laptop is dead on arrival.

Open Power BI Desktop. View tab, Page Settings. Keep it at 16:9, 1280 x 720. Don't get clever with custom sizes until you've done this fifty times.

The Layout

Grab your notebook. Sketch four rectangles:

  • Top strip (full width, about 80px tall): Report title, last-refreshed timestamp, one slicer
  • KPI row (full width, about 140px tall): Three equal cards
  • Trend area (about 60% width, fills the rest): One line chart
  • Context area (about 40% width, same height as trend): Either a small ranked bar chart OR a short commentary text box

That's it. Resist the urge to fill the white space. White space is not wasted space. White space is what makes the three numbers readable.

Build the Measures First

Open your model. Create a measures table if you don't have one (right-click in the Fields pane, New Measure, then home the measure to a blank table called _Measures).

Write three base measures and their comparisons:

Revenue = SUM(Sales[Amount]) Revenue PY = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])) Revenue YoY % = VAR _curr = [Revenue] VAR _prev = [Revenue PY] RETURN DIVIDE(_curr - _prev, _prev)

Repeat for your other two KPIs. Margin and customer count are common. Whatever your sticky note says.

The KPI Cards

Use the new Card visual (the one introduced in 2024, not the legacy Card or the old KPI visual). Three of them, evenly spaced across the row.

For each card:

  • Reference label: the measure name, small, muted colour
  • Value: the measure, large, bold, high contrast
  • Secondary reference: the YoY % with a conditional colour rule (green above 0, red below 0, neutral grey between -1% and 1%)

One card. Three pieces of information. No sparkline, no gauge, no arrow icons you found on a free icons site. The conditional colour on the YoY is your arrow.

The Trend

Line chart. One line. Maximum two if you're comparing current year to prior year.

Turn off the legend if you only have one line (the title tells you what it is). Turn off gridlines. Turn off the Y-axis title. Keep the Y-axis numbers, formatted with the K/M shorthand.

Data labels on the last point only. This is a setting in the format pane under Data labels, Series, Customize series.

The Slicer

One slicer. Put it in the top strip, right-aligned. Date range. Use the between slicer style, not the dropdown, not the tile row of twelve months.

If the exec needs to filter by region or product, that's a second report. Or a sync-slicer-driven drill-through. Not a second slicer on this page.

The Refresh Timestamp

In the top strip, next to the title:

Last Refreshed = "Refreshed " & FORMAT(MAX('Date'[Date]), "d mmm yyyy h:mm AM/PM")

Put it in a Card visual, small font, muted colour. This does two things. It tells the exec the data is current. And it shuts down the "is this live?" email before it gets sent.

The Publish and Subscribe Step

Publish to the service. Create an app (not a workspace link, an app). Send the exec the direct URL to the single page, not the workspace.

Then the move that actually makes it stick: set up an email subscription for them. Monday 7am. Direct link in the body, not a PDF attachment. The PDF is a screenshot they'll scroll past. The link is a habit.

What to Cut Before Shipping

Before you call it done, open the report and cut one thing. Not "review for things to cut." Cut one specific thing. A label you didn't need, a second metric on a card, a slicer you added "just in case."

The dashboard that gets opened is the one that answers the question before the exec has to ask it. Everything else is noise.