Build a FinOps Dashboard in Power BI

Build a Power BI dashboard to investigate cloud cost anomalies and savings.

Introduction

30 Second Summary

A monthly cloud bill can look manageable until one hidden spike pushes spending far beyond plan. The next question is who owns the cost.

In this project, you will build an interactive FinOps cost anomaly dashboard from synthetic cost records in Microsoft Power BI Desktop. Your report turns an April spike into a prioritized savings recommendation backed by budget variance.

What You'll Build

Your finished report turns one click on April into a complete investigation from the responsible Checkout resource to a savings action supported by cost figures.

By the end of this project, you'll have:

  • A monthly cost trend that exposes the April spend of 12,700 USD.
  • An interactive investigation that traces the anomaly through Virtual Compute to Checkout's checkout-api-01 resource in region-in-1.
  • A portfolio-ready report that presents budget impact beside an executive recommendation. You can save it as FinOps-Cost-Anomaly-Dashboard.pbix.
  • Secret Mission: A conditionally formatted optimization backlog that ranks the highest savings opportunities.

Are there any prerequisites?

You need a PC running Windows 10 or Windows 11 that meets Power BI Desktop's published requirements.

The project runs locally, so you do not need an Azure account or a Power BI service license.

Before We Start

Before you begin, lock in the dashboard you are building and the decision it needs to support. This gives every chart and measure a clear purpose.

Set Up Power BI Desktop

A cloud cost investigation needs a supported local reporting environment. Without one, your cost records cannot become an interactive report.

Microsoft Power BI Desktop provides that workspace on Windows. You will confirm compatibility before installing the latest supported release.

In this step, get ready to:
  • Verify that your Windows PC meets the Power BI Desktop requirements.
  • Install the latest supported Power BI Desktop release.
  • Verify that the local reporting workspace is ready.
Confirm your PC is compatible

Power BI Desktop requires a supported Windows release with a 64-bit processor. Your PC also needs enough RAM and enough display space for every report control to remain visible.

What does Power BI Desktop require?

  • Windows 10 or Windows 11 provides the supported client environment for this project.
  • A 64-bit processor is required for the current desktop application.
  • At least 2 GB of available RAM is required. Microsoft recommends 4 GB or more.
  • A display resolution of 1440x900, 1600x900, or higher keeps the full interface accessible.
  • Press Windows+I to open Settings.
  • Select System in the navigation panel.
  • Select About.
  • Confirm that Windows specifications identifies Windows 10 or Windows 11.
  • Confirm that System type identifies a 64-bit operating system on an x64-based processor.
  • Confirm that Installed RAM shows 4 GB or more.
  • Return to System in the navigation panel.
  • Select Display.
  • Confirm that Display resolution shows 1440x900, 1600x900, or a higher resolution.

Does a compatibility check fall short?

A 32-bit PC cannot use the current 64-bit Power BI Desktop installer. Use a compatible Windows PC for this project.

If your display is below the supported resolution, select a higher value from Display resolution when your monitor offers one.

If you are unsure about a result, help me assess whether this PC can run Power BI Desktop.

Install Power BI Desktop

Microsoft releases Power BI Desktop monthly. Only the latest release receives support.

The Microsoft Store provides the standard installation path. Microsoft Download Center provides the current 64-bit executable when the Store is unavailable.

Why use Power BI Desktop locally?

Local report loading is available without a license. Local modeling and report authoring are also available without a license.

Publishing to the Power BI service uses a separate online workflow. This project stays local, so you do not need an Azure account or a Power BI service sign-in.

✔️ The latest release is installed

Power BI Desktop is already installed on your PC. Continue to the launch check below to confirm its version.

ⓧ I can use Microsoft Store

  • Press the Windows key to open Windows search.
  • Type Microsoft Store into Windows search.
  • Press Enter to open Microsoft Store.
  • Enter Power BI Desktop in the Store search field.
  • Select Power BI Desktop from the search results.

The installation can take a few minutes. A quiet progress screen during this wait is expected.

  • Select Install on the Power BI Desktop page.
  • Wait for Microsoft Store to finish the installation.

Power BI Desktop now appears in Windows search. The Store installation keeps the application on Microsoft's current release channel.

ⓧ Microsoft Store is unavailable

Microsoft Download Center provides the same current 64-bit release as a standalone installer. A Windows permission request may appear when the installer starts.

The installer can take a few minutes to complete. Windows shows progress while it adds the application to your PC.

  • Run PBIDesktopSetup_x64.exe from your browser's download list.
  • Approve the Windows permission request if it appears.
  • Keep the default options on each installer screen.
  • Complete the installation.

Power BI Desktop now appears in Windows search. The standalone installer has added the local report authoring application to your PC.

Installation not completing?

If Microsoft Store stalls, close it before trying the installation again. The Download Center route provides a fallback when Store access is restricted.

If the standalone installer stops, confirm that you downloaded the 64-bit executable. Approve the Windows permission request when it reappears.

You can ask for help diagnosing your Power BI Desktop installation or ask the Power BI Community.

Verify the local reporting workspace

A successful installation must open into a usable report canvas. The version dialog confirms which Power BI Desktop release is running.

  • Press the Windows key to open Windows search.
  • Type Power BI Desktop into Windows search.
  • Press Enter to launch Power BI Desktop.
  • Dismiss any sign-in form using its close control.
  • Close the welcome content to reach a blank report canvas.

You can now see a blank report page without signing in. This confirms that local report authoring is available.

  • Select Home on the ribbon.
  • Select Enter data.

The dialog should include a Load button. Choose the matching result below.

✔️ I see Load

The Load button confirms that the Enter Data workflow is ready for the dataset in the next step.

  • Close the Enter Data dialog using its upper-right close control.

ⓧ Load is missing

  • Close the Enter Data dialog using its upper-right close control.
  • Select File.
  • Select Options and settings.
  • Select Options.
  • Select Preview features.
  • Clear New Power Query experience.

Why clear this preview feature?

The preview has a documented Enter Data limitation that can hide Load. Clearing the preview restores the workflow used in this project.

  • Apply the options change using the dialog's confirmation control.
  • Select Home on the ribbon.
  • Select Enter data.

You should now see Load in the Enter Data dialog. The data-entry workflow is ready.

  • Close the Enter Data dialog using its upper-right close control.

Before the final check, what should prove that the installed application can author a local report?

  • Select Help on the ribbon.
  • Select About.
  • Locate the Version line in the About dialog.

You will see a Power BI Desktop version in the dialog. The blank report remains visible behind it.

That confirms the local reporting environment is ready. No Azure account or Power BI service sign-in was required.

That setup hurdle is cleared. Next, you will load the synthetic cost records that expose the April spike.

Reveal the Cost Spike

Your local Power BI Desktop environment is ready. The blank report now needs cost records that can tell a financial story.

A total-spend number hides when the problem happened. You will use a synthetic FOCUS-aligned dataset to expose the abnormal month through a cost trend.

In this step, get ready to:
  • Import 18 synthetic cloud cost records into a table named Costs.
  • Summarize total spend with a card visual.
  • Chart monthly cost to reveal the spike.
Import the cost records

The dataset uses fields aligned with the FinOps Open Cost and Usage Specification. Its custom business fields connect technical costs to budgets, savings opportunities, and recommended actions.

  • Select Enter data from the Home ribbon.
  • Populate the grid by pasting the tab-separated dataset below:
ChargePeriodStart	ServiceProviderName	ServiceCategory	ServiceName	RegionName	SubAccountName	ResourceName	BillingCurrency	EffectiveCost	ListCost	Budget	SavingsOpportunity	Recommendation
2026-01-01	Nimbus Cloud	Compute	Virtual Compute	region-in-1	Checkout	checkout-api-01	USD	4200	5000	4300	700	Review commitment coverage
2026-01-01	Nimbus Cloud	Databases	Managed Database	region-eu-1	Data Platform	orders-db-01	USD	2800	3200	2800	300	Right-size database
2026-01-01	Nimbus Cloud	Storage	Object Storage	region-us-1	Shared Services	archive-store-01	USD	900	1100	900	150	Move cold data
2026-02-01	Nimbus Cloud	Compute	Virtual Compute	region-in-1	Checkout	checkout-api-01	USD	4300	5050	4400	750	Review commitment coverage
2026-02-01	Nimbus Cloud	Databases	Managed Database	region-eu-1	Data Platform	orders-db-01	USD	2850	3250	2850	300	Right-size database
2026-02-01	Nimbus Cloud	Storage	Object Storage	region-us-1	Shared Services	archive-store-01	USD	950	1150	950	150	Move cold data
2026-03-01	Nimbus Cloud	Compute	Virtual Compute	region-in-1	Checkout	checkout-api-01	USD	4500	5200	4400	800	Review commitment coverage
2026-03-01	Nimbus Cloud	Databases	Managed Database	region-eu-1	Data Platform	orders-db-01	USD	2900	3300	2900	300	Right-size database
2026-03-01	Nimbus Cloud	Storage	Object Storage	region-us-1	Shared Services	archive-store-01	USD	1000	1200	1000	150	Move cold data
2026-04-01	Nimbus Cloud	Compute	Virtual Compute	region-in-1	Checkout	checkout-api-01	USD	8700	9500	4500	2800	Investigate scale event and right-size
2026-04-01	Nimbus Cloud	Databases	Managed Database	region-eu-1	Data Platform	orders-db-01	USD	2950	3350	2950	300	Right-size database
2026-04-01	Nimbus Cloud	Storage	Object Storage	region-us-1	Shared Services	archive-store-01	USD	1050	1250	1050	150	Move cold data
2026-05-01	Nimbus Cloud	Compute	Virtual Compute	region-in-1	Checkout	checkout-api-01	USD	4700	5400	4600	850	Review commitment coverage
2026-05-01	Nimbus Cloud	Databases	Managed Database	region-eu-1	Data Platform	orders-db-01	USD	3000	3400	3000	300	Right-size database
2026-05-01	Nimbus Cloud	Storage	Object Storage	region-us-1	Shared Services	archive-store-01	USD	1100	1300	1100	150	Move cold data
2026-06-01	Nimbus Cloud	Compute	Virtual Compute	region-in-1	Checkout	checkout-api-01	USD	4800	5500	4650	900	Review commitment coverage
2026-06-01	Nimbus Cloud	Databases	Managed Database	region-eu-1	Data Platform	orders-db-01	USD	3100	3500	3100	350	Right-size database
2026-06-01	Nimbus Cloud	Storage	Object Storage	region-us-1	Shared Services	archive-store-01	USD	1150	1350	1150	150	Move cold data

What does this dataset contain?

  • The 18 records cover January through June 2026.
  • The ChargePeriodStart field places each charge into a monthly reporting period.
  • The EffectiveCost field holds the cost recognized for each record.
  • The Budget field provides a business spending target.
  • The SavingsOpportunity field estimates the value of an optimization.
  • The Recommendation field describes the next action.

This is a synthetic FOCUS-aligned subset for learning. It omits mandatory columns required for FOCUS conformance.

  • Set the table name to Costs.
  • Select Load.

Power BI returns to the report canvas after importing the table.

  • Expand Costs in the data pane.

You should see all 13 fields from the dataset header. Good progress. Your blank report now contains the cost records that drive the investigation.

Missing the imported fields?

  • Confirm that the table name is Costs.
  • Return to Enter data if the dataset landed in one column.
  • Paste the dataset again starting with the header row.
  • Return to the preview feature setting from the previous step if Load is missing.

Help me fix an incorrectly imported Power BI Enter Data table.

Add the total-cost card

An aggregation combines many records into one summary value. The card uses a sum to show the full cost represented by the dataset.

  • Select a blank area of the report canvas.
  • Select the Card visual in the Visualizations pane.

You should see an empty card appear on the report canvas.

  • Drag EffectiveCost from the Costs table into the card field well.
  • Keep the aggregation set to Sum.

The card should display 54,950 or 54.95K.

  • Open the Format pane for the card.
  • Set the visual title to Total Effective Cost.

The first summary is working. You can now see the scale of total spend at a glance.

Seeing the wrong total?

  • Confirm that the card uses EffectiveCost from the Costs table.
  • Confirm that the aggregation is Sum.
  • Clear any report filters before comparing the total.

Help me troubleshoot an incorrect Power BI card total.

Build the monthly trend

The card establishes total spend. A monthly time series reveals the point that departs from the surrounding pattern.

  • Select a blank area of the report canvas.
  • Select the Line chart visual in the Visualizations pane.

You should see an empty line chart appear beside the card.

  • Drag ChargePeriodStart from the Costs table to the X-axis field well.
  • Drag EffectiveCost to the Y-axis field well.

The chart should now display six monthly points connected by a line.

  • Keep the EffectiveCost aggregation set to Sum.

Each point now represents the combined effective cost for one month.

  • Open the Format pane for the line chart.
  • Set the visual title to Monthly Effective Cost.

Before you inspect the highest point, which month do you expect to break the pattern?

  • Check the value displayed by the Total Effective Cost card.
  • Hover over the highest point in the line chart.
  • Read the date in the chart tooltip.
  • Read the cost in the chart tooltip.

You should see 54,950 or 54.95K on the card. The highest point is 2026-04-01 at 12,700.

That spike is the first visible clue in your FinOps investigation. You have proven when the unexpected increase happened.

Does the line chart look different?

  • Confirm that ChargePeriodStart is on the X-axis.
  • Confirm that EffectiveCost is on the Y-axis.
  • Confirm that the cost aggregation is Sum.
  • Clear any page filters before checking the monthly totals.

Help me troubleshoot the monthly cost line chart.

Your report now exposes the timing of the cost anomaly. Next, you will trace that spike to its service, accountable team, region, and resource.

Trace the Spike to Its Owner

Your Power BI cost trend has exposed April as the unusual month. The report now needs enough detail to turn that signal into an investigation.

The trend cannot tell Finance which team owns the increase. It also cannot identify the resource that caused it.

Cloud cost allocation links spend to an accountable team. The visuals you add here will expose the service, region, and resource behind the increase.

In this step, get ready to:
  • Add month and team slicers for focused investigation.
  • Rank services by total effective cost.
  • Build a detail table that connects the spike to its owner.
Add investigation filters

A slicer narrows the connected visuals on your report page. The date slicer isolates a month.

The team slicer isolates an accountable group. Together, these controls support a focused investigation.

  • Click a blank area of the report canvas.
  • Select Slicer in the Visualizations pane.

You will see an empty slicer frame on the report canvas.

  • Drag ChargePeriodStart from the Costs table into the slicer's field well.

You will see dates from January through June 2026 ready for selection.

  • Click another blank area of the report canvas.
  • Select Slicer in the Visualizations pane.

You will see a second empty slicer frame on the report canvas.

  • Drag SubAccountName from the Costs table into the second slicer's field well.

You will see Checkout, Data Platform, and Shared Services as accountable-team options.

Rank services by cost

A service ranking shows where the spend is concentrated. Bar length makes the largest cost driver easy to compare with the others.

  • Click a blank area of the report canvas.
  • Select Clustered bar chart in the Visualizations pane.

You will see an empty horizontal chart frame on the report canvas.

  • Drag ServiceName from the Costs table into the category field well.

The chart now has a category for each service in the cost dataset.

  • Drag EffectiveCost into the value field well.

You will see one bar for Virtual Compute, one for Managed Database, and one for Object Storage.

  • Open the sort control in the chart header.
  • Choose the sum of EffectiveCost as the sort field.
  • Choose descending order.

Virtual Compute now sits at the top of the chart. The remaining services follow from highest cost to lowest cost.

Bars not sorted by cost?

  • Select the bar chart before opening its sort control.
  • Confirm that EffectiveCost uses the Sum aggregation.
  • Confirm that the chart uses descending order.

Help me fix a Power BI bar chart that is not sorting by cost.

Trace April to the cost driver

The service ranking identifies the expensive service. A detail table ties that service to its owner.

  • Click a blank area of the report canvas.
  • Select Table in the Visualizations pane.

You will see an empty table frame on the report canvas.

  • Drag ResourceName from the Costs table into the table's field well.
  • Drag SubAccountName into the table's field well.

The table now pairs each resource with its accountable team.

  • Drag RegionName into the table's field well.
  • Drag ServiceName into the table's field well.

Each row now includes the region and service behind the resource.

  • Drag EffectiveCost into the table's field well.

The investigation table now displays cost beside each resource's ownership details.

Before you select April, which service do you expect to lead the cost ranking?

  • Select 2026-04-01 in the ChargePeriodStart slicer.

Your total-cost card now shows 12,700 or 12.7K. The bar chart ranks Virtual Compute at 8,700.

Managed Database sits at 2,950. Object Storage sits at 1,050.

The table traces Virtual Compute to checkout-api-01. It identifies Checkout as the accountable team.

The region is region-in-1. You have closed the ownership gap behind the April anomaly.

Not seeing the April cost driver?

  • Confirm that 2026-04-01 is selected in the ChargePeriodStart slicer.
  • Check that the bar chart aggregates EffectiveCost as Sum.
  • Check that the table contains ResourceName, SubAccountName, RegionName, ServiceName, and EffectiveCost.

Help me troubleshoot why my April Power BI report does not show the expected owner breakdown.

The anomaly now has an owner. Next, you will quantify its budget impact.

Turn Findings into a FinOps Decision

Your April view traced the cost spike to Virtual Compute. The Checkout team owns the affected resource.

The investigation names an owner, but ownership alone does not show Finance how far spending exceeded budget. It also leaves the value of the next action hidden.

Now you'll use DAX measures in Power BI Desktop to calculate four financial KPIs. The resulting cards turn the technical finding into a FinOps decision.

In this step, get ready to:
  • Create measures for cost, budget, variance, and savings opportunity.
  • Build USD-formatted KPI cards for the April investigation.
  • Connect the cost driver to its recommended action and financial value.
Create the financial measures

A DAX measure calculates a result from the report's current filter context. With April active, each formula returns an April-specific KPI.

  • Right-click the Costs table in the Data or Fields pane.
  • Select New measure.

You'll see an editable measure definition ready for its formula.

  • Define total cost by replacing the editable formula with this definition:
Total Cost = SUM(Costs[EffectiveCost])

How Does Total Cost Work?

  • The SUM(Costs[EffectiveCost]) expression adds the effective costs that remain after report filters are applied.
  • The active month slicer makes the measure calculate April's total.
  • Commit the measure by pressing Enter.

You'll see Total Cost listed under the Costs table.

Total Cost Not Listed?

  • Select the Costs table before creating the measure.
  • Check every bracket in the formula.
  • Press Enter after entering the complete definition.

Help me find why my Total Cost measure is missing from the Costs table.

  • Right-click the Costs table again.
  • Select New measure.

A second editable measure definition is ready for the budget calculation.

  • Define total budget by replacing the editable formula with this definition:
Total Budget = SUM(Costs[Budget])

How Does Total Budget Work?

  • The SUM(Costs[Budget]) expression adds the budget values inside the active filter context.
  • This gives the April cost a planned-spend baseline.
  • Commit the measure by pressing Enter.

You'll see Total Budget listed under the Costs table.

Total Budget Not Listed?

  • Confirm the formula uses the Budget column from the Costs table.
  • Check that the measure name appears before the equals sign.

Help me troubleshoot my Total Budget DAX measure.

  • Right-click the Costs table again.
  • Select New measure.

A third editable measure definition is ready to compare actual cost with budget.

  • Define budget variance by replacing the editable formula with this definition:
Budget Variance = [Total Cost] - [Total Budget]

How Does Budget Variance Work?

  • The formula subtracts Total Budget from Total Cost.
  • A positive result shows how much actual spending exceeded the plan.
  • Commit the measure by pressing Enter.

You'll see Budget Variance listed under the Costs table.

Budget Variance Not Working?

  • Confirm Total Cost exists before creating this measure.
  • Confirm Total Budget exists before creating this measure.
  • Check that both measure names use matching square brackets.

Help me troubleshoot my Budget Variance DAX measure.

  • Right-click the Costs table once more.
  • Select New measure.

The final editable measure definition is ready to quantify optimization value.

  • Define savings opportunity by replacing the editable formula with this definition:
Savings Opportunity = SUM(Costs[SavingsOpportunity])

How Does Savings Opportunity Work?

  • The SUM(Costs[SavingsOpportunity]) expression adds the potential savings inside the current filter context.
  • This KPI gives Finance a financial value for the optimization work.
  • Commit the measure by pressing Enter.

You'll see Savings Opportunity listed under the Costs table.

Savings Opportunity Not Listed?

  • Confirm the formula references the SavingsOpportunity column without a space.
  • Check that every parenthesis closes before pressing Enter.

Help me troubleshoot my Savings Opportunity DAX measure.

✔️ Awesome, I've got everything!

Great. Confirm all four measures are listed under the Costs table.

ⓧ I'd like to double check the full code

Compare each measure in your model with these four definitions.

Total Cost = SUM(Costs[EffectiveCost])

Total Budget = SUM(Costs[Budget])

Budget Variance = [Total Cost] - [Total Budget]

Savings Opportunity = SUM(Costs[SavingsOpportunity])

Strong progress. Your model can now translate the April anomaly into budget impact and optimization value.

Build the KPI cards

KPI cards give a reviewer one financial answer at a glance. The active date slicer keeps every card focused on April.

  • Confirm 2026-04-01 remains selected in the ChargePeriodStart slicer.
  • Select Card in the Visualizations pane.
  • Drag Total Cost from the Costs table into the card's field well.

You'll see a populated card for the April total cost.

  • Select another Card in the Visualizations pane.
  • Drag Total Budget into the new card's field well.

You'll see a second card for April's planned spending.

  • Select another Card in the Visualizations pane.
  • Drag Budget Variance into the new card's field well.

You'll see a third card showing the gap between actual cost and budget.

  • Select one more Card in the Visualizations pane.
  • Drag Savings Opportunity into the new card's field well.

You'll see a fourth card for the value of available optimization work.

  • Select Total Cost in the Data or Fields pane.
  • Set its format to USD through the ribbon's measure formatting controls.

The Total Cost card now uses a currency display.

  • Select Total Budget in the Data or Fields pane.
  • Set its format to USD through the ribbon's measure formatting controls.

The Total Budget card now uses the same currency format.

  • Select Budget Variance in the Data or Fields pane.
  • Set its format to USD through the ribbon's measure formatting controls.

The Budget Variance card now presents the overspend as a financial amount.

  • Select Savings Opportunity in the Data or Fields pane.
  • Set its format to USD through the ribbon's measure formatting controls.

All four KPI cards now present their values in the same currency.

Cards Not Responding to April?

  • Confirm 2026-04-01 remains selected in the date slicer.
  • Clear any team selection in the SubAccountName slicer.
  • Confirm each card uses a measure instead of a raw table column.

Help me troubleshoot KPI cards that do not match the April filter.

Connect the driver to an action

The investigation table already shows who owns each cost driver. Adding the recommendation and savings measure turns each row into an action that can be prioritized.

  • Select the existing cost driver investigation table on the report page.
  • Drag Costs[Recommendation] into the table's field well.
  • Drag the Savings Opportunity measure into the table's field well.

The table now connects each resource to a recommended action. It also shows the estimated value of that action.

Before the final check, ask yourself which KPI you expect to expose the size of April's overspend.

  • Confirm 2026-04-01 remains selected in the date slicer.
  • Compare the four KPI cards.
  • Inspect the checkout-api-01 row in the investigation table.

What Should I See?

  • The Total Cost card shows 12,700.
  • The Total Budget card shows 8,500.
  • The Budget Variance card shows 4,200.
  • The Savings Opportunity card shows 3,250.
  • The checkout-api-01 row is assigned to Checkout.
  • The resource is located in region-in-1.
  • Its Virtual Compute cost is 8,700.
  • Its savings opportunity is 2,800.
  • Its recommendation is Investigate scale event and right-size.

That's the decision layer working. Finance can see the budget impact while Engineering gets a specific optimization action.

April Figures Do Not Match?

  • Confirm the date slicer includes only 2026-04-01.
  • Clear any active selection in the team slicer.
  • Confirm the table uses the Savings Opportunity measure instead of the source column.

Help me find why my April KPI cards or investigation table show different values.

Your report now quantifies the overspend and identifies the highest-value response. Next, you'll polish the page so a reviewer can understand that story in under a minute.

Polish the Portfolio Story

Your April investigation already traces the spike to Checkout's Virtual Compute resource. Now you will turn that working report into a portfolio story inside Power BI Desktop.

A technically correct report can still make the incident hard to spot. Clear visual hierarchy makes the cost spike obvious.

A short executive finding quantifies the business impact. It turns the analysis into a FinOps recommendation a reviewer can understand in under a minute.

In this step, get ready to:
  • Create a consistent visual hierarchy for the dashboard.
  • Add the executive finding with a data disclosure.
  • Save the polished report as a local PBIX file.
Style the dashboard for quick scanning

A consistent theme removes visual noise. A compact row of DAX measure cards lets a reviewer compare the business impact at a glance.

  • Apply one built-in theme from the ribbon's theme gallery to the existing report page.
  • Drag the four DAX measure cards into one row near the top of the page.

The theme now gives the page one visual system. The KPI row establishes its top-level summary.

  • Resize the four KPI cards to equal widths.
  • Select the existing Monthly Effective Cost line chart.
  • In the Format pane, replace its title with When did cost spike?.

The monthly trend now frames the April peak as the first investigation question.

  • Select the existing Cost by Service clustered bar chart.
  • In the Format pane, replace its title with Which service caused it?.

The service breakdown now directs attention to the source of the increase.

  • Select the Total Cost card.
  • Replace its title with What did we spend?.
  • Select the Total Budget card.
  • Replace its title with What was the budget?.
  • Select the Budget Variance card.
  • Replace its title with How far over budget?.
  • Select the Savings Opportunity card.
  • Replace its title with How much could we save?.

The card row now moves from actual spend through variance to opportunity.

  • Select the existing cost driver investigation table.
  • Replace its title with Who owns it and what happens next?.
  • Review the question-led titles across the full report page.

You should see a clear path from the monthly spike to its owner. The KPI row keeps the financial impact in view.

Titles or cards look uneven?

  • Resize any mismatched card with its sizing handles.
  • Select any visual whose title did not change.
  • Update the selected visual's title in the Format pane.

Help me fix uneven cards or missing titles in my Power BI dashboard.

Add the executive finding

The executive finding turns the charts into a decision a reviewer can repeat. The FOCUS disclosure makes the dataset boundary clear.

  • Add a Text box to the existing report page from the ribbon.
  • Place the text box beneath the KPI row.
  • Enter April cost rose to $12,700, which was $4,200 above budget..
  • Continue the first line with Virtual Compute owned by Checkout contributed $8,700..
  • Complete the first line with Prioritize the $2,800 compute optimization opportunity, then review commitment coverage..

The first line now states the anomaly's financial impact. It also names the accountable team.

  • Start a second line in the same text box.
  • Enter Synthetic data as the first disclosure phrase.
  • Add FOCUS-aligned subset after it using semicolon punctuation as the separator.
  • Add values in USD. after it using the same punctuation as the separator.
  • Resize the text box until both lines are fully visible.

You can now read the incident summary directly on the page. The disclosure clearly identifies the data as a synthetic learning subset.

Save and verify the portfolio file

A local PBIX file preserves the model behind your report. It also keeps the interactive dashboard ready for another demonstration.

  • Select File in Power BI Desktop.
  • Select Save As.
  • Select your Windows Desktop folder as the save location.
  • Enter FinOps-Cost-Anomaly-Dashboard.pbix as the file name.
  • Select Save to create the local report file.

You should see FinOps-Cost-Anomaly-Dashboard.pbix in the Power BI Desktop title bar. The report stays on your PC.

Cannot find the saved report?

  • Repeat Save As if the expected file name is missing from the title bar.
  • Use the Windows file browser to confirm the file exists on your Desktop.

Help me find or save my local Power BI report.

Before you reopen the report, do you expect the saved page to answer the four executive questions without extra explanation?

  • Close Power BI Desktop.
  • Open your Desktop folder in the Windows file browser.
  • Double-click FinOps-Cost-Anomaly-Dashboard.pbix to reopen it in Power BI Desktop.
  • Select 2026-04-01 in the existing ChargePeriodStart slicer.
  • Remove any active team filter from the existing SubAccountName slicer.

The saved dashboard is now open with the full April investigation in view.

  • Use the monthly trend to answer what changed.
  • Use the service chart with the investigation table to identify ownership.
  • Use the KPI cards to quantify the budget impact.
  • Use the executive finding to identify the next action.

What should I see?

Your monthly trend peaks in April at 12,700.

Your KPI row shows a budget of 8,500. The variance card shows 4,200 above budget.

Your service chart identifies Virtual Compute at 8,700. The table assigns checkout-api-01 to Checkout.

The Savings Opportunity card shows 3,250 across April. The executive finding prioritizes the 2,800 compute opportunity.

That is the portfolio story complete. Your saved report now moves from anomaly to accountable action on one page.

Secret mission

Build an Optimization Backlog Heatmap

Your dashboard explains one cost anomaly. Extend it with a ranked optimization backlog that makes the largest April savings opportunity visually dominant.

Clean Up Your Resources

Clean Up Your Resources

Your finished dashboard runs entirely in Power BI Desktop on your Windows PC with no ongoing cloud costs. Choose whether to keep it ready, pause your work, or delete the local report file.

Resources you used:

  • The local FinOps-Cost-Anomaly-Dashboard.pbix report file containing your dashboard and Optimization Backlog page.

Keep everything running

No action is needed. Choose this if you are still refining the dashboard or preparing to demonstrate it.

  • Keep FinOps-Cost-Anomaly-Dashboard.pbix in its current save location.
  • Leave the report open in Power BI Desktop while you continue working.
  • Use the April filter whenever you want to demonstrate the anomaly investigation.

Pause - I'll come back to this later

Close Power BI Desktop to free up memory. Your saved report remains on your PC for the next session.

  • Close the Power BI Desktop window.
  • Use Windows search to find FinOps-Cost-Anomaly-Dashboard.pbix when you are ready to return.
  • Open the saved file to resume your investigation.

Delete - I don't want to use this again

This option removes the local project report. Power BI Desktop stays installed for other reports.

Deleting the file removes your only local copy. Make a backup first if you may want the dashboard later.

  • Close the Power BI Desktop window.
  • Use Windows search to find FinOps-Cost-Anomaly-Dashboard.pbix.
  • Select the report file in the search results.
  • Delete the selected report file.
  • Open the Windows location for deleted files through system search.
  • Select FinOps-Cost-Anomaly-Dashboard.pbix in that location.
  • Delete the selected report file permanently.
  • Search Windows for FinOps-Cost-Anomaly-Dashboard.pbix again.

You should see no matching report file. That confirms your local dashboard has been removed.

Nice Work!

Nice Work!

Mission complete! Your saved FinOps-Cost-Anomaly-Dashboard.pbix is an interactive FinOps cost anomaly dashboard in Power BI Desktop that turns April's overspend into an accountable optimization decision.

You've learned how to:

  • Build an interactive cost trend from a FOCUS-aligned synthetic dataset that exposes the April anomaly.
  • Investigate unexpected spend with interactive slicers that identify Checkout as the accountable team.
  • Create DAX measures that convert actual cost into budget variance. Use the result to prioritize a savings recommendation.
  • Secret Mission: Build a conditionally formatted optimization backlog that ranks savings work by financial value.

Ready to quiz yourself?