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.
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
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).

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

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.

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

3. Add a card visual displaying total Profit.

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.
Now let’s jump into the Power BI Performance Analyzer itself:
- 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.

Recording a Session
- In the Performance Analyzer pane, click Start Recording.
- 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.
- Review the logs in the Performance Analyzer pane. Each visual is listed with timings for “DAX Query,” “Visual Display,” and “Other.”

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.
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.
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.
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.
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:
- DAX Optimization Techniques: Learn how to rewrite measures, reduce iterators, and leverage best practices so your formulas run faster—even on large datasets.
- 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.
- Improving Report Rendering & Visual Design: Minimizing overhead from fancy visuals, controlling the number of visuals on a page, and ensuring an optimal user experience.
- 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.