Identify Power BI Performance Bottlenecks Using the Performance Analyzer: A Step-by-Step Tutorial

This is a comprehensive, step-by-step tutorial on how to identify performance bottlenecks in Power BI using the built-in Performance Analyzer. It’s the first post in our “Power BI Performance Optimization” series, a deep dive into diagnosing and fixing slow reports, long refresh times, and suboptimal DAX queries. By the end of this tutorial, you’ll know how to use the Power BI Performance Analyzer to pinpoint what’s slowing down your dashboards—whether it’s inefficient DAX measures, heavy visuals, or data model design issues. Let’s get started! 

Explore B EYE’s Power BI Services

Why Performance Analysis Matters in Power BI

Power BI is recognized for its user-friendly interface and powerful analytical capabilities. Yet as your datasets grow in size and complexity, or as you layer on intricate DAX measures, you might encounter slower visuals, longer load times, or frustrating refresh delays. Left unchecked, these issues can derail end-user adoption; after all, if a report takes too long to load, your audience may stop trusting or using it altogether. 

That’s why performance analysis is critical. Identifying where the bottleneck lies — be it a single measure, a complex page design, or an overly large table — gives you the direction needed to optimize. You can then apply targeted fixes (which we’ll cover in upcoming posts) to make your Power BI solutions run smoothly at scale. 

Understanding the Power BI Performance Analyzer

The Performance Analyzer is a built-in feature of Power BI Desktop (latest version) that helps you: 

  • Monitor how long each visual takes to query and render 
  • Pinpoint slow DAX measures (DAX query time) 
  • Identify lengthy visual rendering processes (visual display time) 
  • Measure any “Other” overhead (including query preparation time) 

Once you enable it, the Performance Analyzer logs how long each report visual takes to load whenever you refresh or interact with the page. This breakdown is key to isolating whether your performance bottlenecks stem from: 

  • DAX Query: Calculations or formula logic running on the back end. 
  • Direct Query (available only if direct query is used as connection type): Time needed for retrieving the direct query from the source. 
  • Visual Display: Rendering or drawing the chart/visual on the screen (including the overhead of custom visuals). 
  • Other: Miscellaneous tasks like query preparation, internal processing, etc. 

Why Use the Built-In Tool Power BI Performance Analyzer?

While there are external tools, the Performance Analyzer is integrated and straightforward to use. It’s often your first line of defense for performance tuning because it tells you precisely which visuals or queries are hogging resources each time they load

Setting Up a Sample Report

To follow along step by step, we’ll use a publicly available dataset so you can replicate the process on your own machine. Microsoft provides a small “Financial Sample” Excel workbook that includes a few thousand rows of financial data, such as sales, profit, and discounts. It’s easy to load and sufficient for demonstrating the Power BI Performance Analyzer workflow. 

Get the Financial Sample

Download the “Financial Sample” Excel file from Microsoft’s official GitHub or from the Microsoft sample datasets page.

Save it locally to your machine.

Importing the Dataset

1. Open Power BI Desktop (latest version).

2. Click “Get Data” and select “Excel” (if using the Excel version of Financial Sample).

Power BI interface showing the “Add data to your report” screen with the “Import data from Excel” option selected. This step initiates the process of connecting to the Financial Sample dataset for further analysis. (B EYE Power BI Tutorial)

 

3. Browse to the Financial Sample file, select the relevant table/sheet, and Click “Load.”

Power BI interface displaying the Navigator window with the “Financial Sample” Excel sheet selected and previewed. The “Load” button is highlighted, indicating the next step to import the dataset for analysis. (B EYE Power BI Performance Analyzer Guide)

Building a Simple Report

Once loaded, you can create a few visuals to simulate a typical dashboard:

1. Create a clustered column chart showing Country on the x-axis and Sales on the y-axis.

 

Power BI interface with a clustered column chart displaying “Sum of Sales by Country” on the canvas. The x-axis shows countries like the United States, Canada, France, Germany, and Mexico, while the y-axis represents sales volume. The Country field is assigned to the x-axis and Sum of Sales to the y-axis in the Visualizations pane. (B EYE Power BI Guide – Chart Creation)

 

2. Add a slicer for Segment so you can filter the data by segment.

Power BI report interface displaying a clustered column chart titled “Sum of Sales by Country,” with an added slicer on the left filtering data by Segment. The slicer includes checkboxes for Channel Partners, Enterprise, Government, Midmarket, and Small Business. The Segment field is highlighted in the Data pane, and the slicer visualization icon is selected in the Visualizations pane. (B EYE Power BI Training – Slicer Implementation)

3. Add a card visual displaying total Profit.

Power BI dashboard displaying a card visual showing total profit as “16.89M” above a clustered column chart of sales by country. The Profit field is selected in the Data pane and added to the card visual, which is highlighted in the Visualizations pane. A segment slicer is also visible on the left, allowing users to filter by business segment. (B EYE Power BI Tutorial – Profit Insight with Card Visual)

We now have a minimal but functional report page. In more complex, real-world scenarios, you’d have multiple pages, complex DAX measures, and many visuals. The steps here, however, apply universally — whether your report is basic or advanced. 

Enabling and Using the Power BI Performance Analyzer

Now let’s jump into the Power BI Performance Analyzer itself:

  1. Go to the “View” tab in the Power BI Desktop ribbon. Check “Performance Analyzer.” This opens a pane (usually on the right side of the canvas) where you can start recording performance logs.
Power BI Desktop interface showing the “View” tab selected on the ribbon and the “Performance Analyzer” checkbox enabled. The Performance Analyzer pane is visible on the right side of the canvas, ready to record visual performance logs. A clustered column chart displays sales by country, and a card visual shows total profit. (B EYE Power BI Optimization Tutorial – Enabling Performance Analyzer)

Recording a Session

  1. In the Performance Analyzer pane, click Start Recording.
  2. Refresh the visuals by clicking Refresh visuals (or make an interaction, like selecting a slicer value). Power BI will log how long each visual takes to load or update.
  3. Review the logs in the Performance Analyzer pane. Each visual is listed with timings for “DAX Query,” “Visual Display,” and “Other.”
Power BI Desktop showing the Performance Analyzer pane actively recording visual load times. The “Start recording” and “Refresh visuals” buttons are highlighted, and individual performance breakdowns for DAX query, visual display, and other components are listed per visual. The canvas includes a total profit card and a clustered column chart of sales by country. (B EYE Performance Optimization Tutorial – Recording Session in Performance Analyzer)

Tip: Hover over each visual name in the list to see details. You can also expand each visual’s timings to see a breakdown.

Saving the Logs

If you want deeper analysis:

Click “Export” under each visual’s detailed timings to save the logs as a JSON file. This can be imported later into tools like DAX Studio or used for further offline analysis.

Interpreting Power BI Performance Analyzer Results

With Performance Analyzer recording, each visual that refreshes will appear in the list.

Now, let’s clarify what each timing category means:

DAX Query Time

  • This is the time spent executing the DAX query for the visual. If this number is high, it often suggests complex or inefficient DAX measures, or large amounts of data being processed. 
  • If your DAX Query Time is consistently higher than other visuals, you might need to optimize your measure logic (e.g., rewriting measures, reducing iterators, or adjusting the data model so that queries are simpler). 

Visual Display Time

  • This is how long it takes for the visual to render on-screen after the query results are returned. 
  • Large or complex visuals, custom visuals with heavy graphics, or visuals drawing thousands of data points can push Visual Display Time up. In some cases, the visual’s overhead might be more significant than the DAX query time. 
  • If you see a visual with a low DAX Query but a high Visual Display time, it suggests the query is quick, but the visual’s rendering is the culprit. 

Other Time

  • This encompasses everything that isn’t directly covered by the DAX query or rendering. It can include overhead in retrieving the data from the in-memory model, query preparation, or some internal processes. 

Diagnosing Common Bottlenecks

Once you have the timings, you can prioritize which visuals or queries to tackle first. For example: 

  • High DAX Query, Low Visual Display: Focus on optimizing the measure(s). Possibly rewrite or simplify DAX. 
  • Low DAX Query, High Visual Display: Evaluate the complexity of the visual. Are you plotting 50,000 points in a scatter plot? Using a custom visual that’s inefficient? Perhaps consider splitting the visual into multiple simpler ones or pre-aggregating data. 
  • Everything is High: Could be overall data model complexity or poor relationships. Next steps might involve reviewing the data schema, as well as each measure and visual to see if they collectively drive up the refresh time. 

Investigating Slow Slicers or Filters

Slicers often have minimal DAX overhead unless they’re connected to large dimension tables with complex relationships. If your slicer is slow, double-check whether it’s referencing a high-cardinality column or whether there’s an underlying measure used in a slicer’s custom filtering logic. Sometimes, it could be an “Other” time issue—like the overhead of cross-filtering multiple visuals simultaneously. 

Considering Data Model Issues

Power BI Performance Analyzer won’t directly tell you if your data model is poorly structured (that’s a deeper conversation we’ll explore in a future post). However, if every visual seems slow, or if you notice consistently high DAX times across the board, that’s a red flag your data model may be too complex or missing best practices (e.g., a star schema). Keep that in mind as you interpret the results. 

Brief Case Study: How a Quick Diagnosis Saved Hours

One of B EYE’s clients, retail company, had a Power BI dashboard with 15+ visuals—KPIs, pie charts, bar graphs, and a map. The initial load time was over 20 seconds, and each slicer selection caused a 10-second refresh. 

  • Using the Power BI Performance Analyzer, they discovered that one measure, used across three visuals, accounted for 80% of the total DAX query time. 
  • Further investigation revealed that the measure used nested iterators over a table with hundreds of thousands of rows. 
  • By rewriting the measure to avoid row-by-row iterators and using a simple aggregation plus a CALCULATE statement, they reduced the measure’s DAX query time from 14 seconds to 1 second
  • As a result, the entire dashboard load dropped to about 5 seconds, which drastically improved end-user satisfaction. 

This quick real-world example shows how one small fix uncovered by Performance Analyzer can yield big payoffs. In the rest of this series, we’ll teach you how to perform similar optimizations—whether it’s rewriting DAX, restructuring your data model, or tweaking visuals to load faster. 

Next Steps with Power BI Performance Analyzer and Future Posts in This Series

By using the Power BI Performance Analyzer, you turn guesswork into data-driven diagnostics. No more blind guesses about why a page is slow: you have clear evidence of which visuals or queries need attention. In the next posts, we’ll show you exactly how to fix common performance issues—so keep this tool handy and stay tuned! 

If you found this helpful, consider bookmarking or sharing it with your team. Power BI performance tuning becomes much simpler when everyone knows how to spot the root cause of slow reports. See you in the next installment! 

Identifying performance bottlenecks is only the first step. Once you know which visuals or queries are slowing your report, you can apply targeted fixes. Here’s what we’ll be covering in our upcoming posts: 

  1. DAX Optimization Techniques: Learn how to rewrite measures, reduce iterators, and leverage best practices so your formulas run faster—even on large datasets. 
  1. Optimizing Data Models for Large Datasets: From building a proper star schema to reducing model size, we’ll show you how to structure data for maximum speed and scalability. 
  1. Improving Report Rendering & Visual Design: Minimizing overhead from fancy visuals, controlling the number of visuals on a page, and ensuring an optimal user experience. 
  1. Power BI Performance Best Practices & Advanced Techniques: A final wrap-up of advanced tuning tactics, capacity settings, and environment-level optimizations. 

Stay tuned for these deep dives. As you use the Power BI Performance Analyzer to gather intel on your own projects, you’ll be perfectly positioned to apply the optimizations we’ll discuss next. 

Have Power BI Questions? Ask an Expert

We hope this tutorial helps you pinpoint bottlenecks quickly so you can start optimizing your Power BI reports. If you have more specific questions or a particularly stubborn performance problem, our expert consultants at B EYE are here to help. 

Author
Marta Teneva
Marta Teneva, Head of Content at B EYE, specializes in creating insightful, research-driven publications on BI, data analytics, and AI, co-authoring eBooks and ensuring the highest quality in every piece.

Related Articles

Discover the
B EYE Standard