Consolidating report elements for improved performance

I was recently brought into a report design review to see what we could do about performance of the report page load. The model was optimized and the DAX was running very quickly, but they were seeing 25+ second page load times.

At a glance the page appeared to have quite a few visuals, including a bunch of cards. Using the Performance Analyzer, we were able to determine that not only were there a ton of visual elements, there were also many design specific elements, such has shapes and backgrounds, and text boxes. It turned out there were over 160 elements on the page.

Every element on the page has a cost

You would think that a shape alone would not cost any performance, but due to javascript being single threaded, there is a limit on how many elements can render concurrently. The limit is highly dependent on Browser and your PC.

If you take a look at the Performance Analyzer and expand a particular element, you will see an “Other” bucket. This Other bucket captures the time spent waiting for other objects to render. The more elements on the page, the bigger the Other bucket.

After reviewing the customer report, we came up with ideas on how to consolidate the visual elements and the report design elements to limit the number of visuals and decrease our “Other” bucket. In this case in particular, after implementation we saw a 70% performance improvement, taking render times from 25-30 seconds down to 5-8 seconds.


I mocked up a less extreme example to share the steps we took so could share the concepts here

To start, here is my “Before” view:

Step 1. Consolidate Card Visuals

A well formatted Matrix can give you the same look and feel as a bunch of individual cards, while improving performance by limiting the number of visuals on the page, as well as benefiting from DAX fusion for more optimal queries.

While the formatting will be very specific to your reporting needs, this should provide an idea of ways to implement this idea.

I have two sets of cards in this case that can be converted to Matrices, but each one has dramatically different formatting options.

Starting with the left side set of cards and text labels:

Create a new Matrix and drag the measures needed into Values in the visualization pane in the order in which you want them displayed vertically:

Now go change the Style of your matrix to “None” in the formatting pane

The most critical part to this formatting is to change your Values to “Show on Rows”

By switching this toggle on, we move the matrix from displaying horizontally to vertically.

We also want to remove the Outline on our Row Headers and Column headers so we do not have extra lines on the matrix:

Next you will want to resize your Row Headers and Values to feel more like Cards. For example, larger fonts for the values with your row headers acting as the labels. In this case I used 20 for the values and 10 for the Row headers.

Next we will go to the Grid section and add some padding to our rows to space this out a bit:

While formatting is not as exact, we are able to get very close:

The next set of cards to tackle is the horizontal one up top:

Formatting of this one is pretty straight forward. Drag your metrics into values:

Now change style to None and remove all Outlines like we did on the previous matrix

In this case, rather than worrying about padding we need to set our column width manually by clicking and dragging to gain the separation we want.

It is also important to turn off Auto-size column width, and size your columns with enough room to handle your range of values. You don’t want to end up with numbers that run off. You will also want to Center your column header alignment:

Similar to the previous matrix, increasing the size of the values will give it that card look and feel.

Our last step for this matrix is to use the “Field Formatting” to Center our alignment for each metric:

Now that our Cards are consolidated, we can move on to the design elements

Step 2. Move everything you can to the background

At a glance is is hard to notice, but this report page has 7 elements that are strictly for design.

Red boxes denote an element in the report

By using the methods from my post on Backgrounds, we are able to convert those 7 elements into a single background.

Once we bring in the background with our new matrices, we have moved from 25 elements on the page down to 5 without sacrificing any content



And the results in the Performance Analyzer are staggering:


There is no decisive answer to the question of “How many elements is too many?” Each report build is different and each set of users have different expectations for performance. It is important to weigh performance and insights and find a good balance. Taking advantage of the techniques in this post will pack more insights into your reporting without sacrificing performance.


Themeable Backgrounds for Power BI

I came up with this concept while working on the front end of the Regional Emergency response solution. When trying to templatize some work that was done for a specific customer, I realized that the accent color I had applied would not look good when branding for other customers – as dark logos did not show up well against a dark blue background.

Transparency in PowerPoint

To get around the branding issue, I switched from dark blue to White accents in the banner…. and hated it. I went with this version for a couple days, and then one night at around midnight an idea popped into my head…

What if I cut out sections of my background image and let the page background show through??? I was excited to try it out so I shot out of bed and headed to the computer. It was a little painful at first to land the shapes how I wanted to, but it worked!

How to build your background in PowerPoint with Transparent Elements

If you are not familiar with my process for building backgrounds, check out my post on Background Concepts to get started.

Merging Shapes

Start off by building your complete background with your ideal accents. I will keep this one simple so it is easy to follow, but you can get very advanced using these techniques.

Next, Select your underlying shape (big rectangle in this case) and your accent shapes. Be intentional with your click order here, as PowerPoint will use the formatting of the first selected object in the next step.

With your objects selected, go to the Shape Format options in the ribbon and Select Merge Shapes and combine

You are now left with a big rectangle underlying that has cut-out transparency

Bring your new background into Power BI Desktop

You can now edit your accent colors by adjusting your Page Background color in the visualizations pane:

If you have really complicated shapes you can look at using the other Merge Shape functions, such as Fragment.

Hope this is helpful! Check out the background gallery to download this background example and more.


Matrixed Report Navigation

I was recently tasked with revamping the Microsoft 365 Usage Analytics template app, as it was created several years ago and could benefit from many of the new features in Power BI.

When I initially opened the report the first thing I noticed is that it was 26 tabs. 26 tabs is a LOT of tabs. When a report is structured with this many tabs, it can lead to a linear consumption experience where to end user goes through each tab in sequence to wade through the information, and navigating to a specific piece of information can be a challenge.

We did a quick inventory of the 26 tabs, and decided on a “Matrixed Navigation” that would consolidate tabs and make for a better user experience. At the end of the day, we ended up with 5 Topics or “Categories” of depth and built in navigation to let users navigate the vast amount of content in the report within these categories. This was achieved by looking at commonalities in each tab and consolidating at the right depth to make for the most seamless user experience.

Pre-Built Matrixed Navigation Template

I have found that using this Matrixed navigation approach has been successful when working with really heavy Reports that cross many topics and depths of content, so I wanted to share an example PBIX that has all of the Navigation components built in and ready to be used!

As I mentioned in my post on In-Page Navigation, prior to Visual grouping, I would never have suggested using this kind of navigation, as it was far too tedious to achieve, and hard to update when things needed adjustment. Luckily, when developing the redesign of the Usage analytics reporting, Visual grouping was in test so I was able to utilize it in the build and discovered some really cool functionality when combining Visual groups with Bookmarks

How It works

The template has two forms of navigation: Page Navigation for “Categories” that control the depth, and In-Page Navigation to allow users to work through their content within the same level of depth

For Categories, we are simply navigating from page to page with bookmarks that only include the “Current Page” option selected:

For the template, I refer to my In-Page Navigation “Stages”. The way these bookmarks work is by hiding/unhiding the Selected visual groups, and correlating buttons while keeping “Data” unselected to avoid any funny business if slicers are brought into the picture.

Since we are effectively hiding/unhiding the groups, rather than the individual items, we can modify what is included in the group without needing to update any bookmarks

How to Implement the Template

Start by Downloading the template here

Once you have the report template and your data, you can build the Stages out. There are currently placeholders in each stage to create our groups so that all of the bookmark plumbing could be achieved ahead of time.

Add your visuals to the page, then drag the elements into your Stage 1 Visual Group

After building out the remaining visuals for my Stage 1, I can delete the placeholder shapes and retain the group:

No Bookmark updates are needed at this point! You can now modify your button text as it applies to the report, and navigate to your “Stage 2” with a Ctrl+Click to begin building out your next section.

From here, you can repeat the same process as the above. If you only have 2 or 3 “Stages”, you can remove any unnecessary buttons, and modify the Background in PPT to make your “Tab” structure look nice and clean.

See Background Gallery for PPT file and this post on how to use backgrounds if you not yet familiar


Not all report content makes sense to navigate in this way. I usually reserve these methods for very large reports that are not only broad in content, but have varying levels of depth.


When creating a report with a large amount of Buttons, it is very important to modify the Tab Order so that it has a logical flow for keyboard navigation. I have set this up in the template, but when you bring in new visuals you will have to ensure that the tab order is adjusted to give the buttons the correct order. This is easy to achieve in the Selection Pane:


Matrixed report navigation can give end users a much cleaner experience than tabs when working with a high volume of data than Tabs. Try it out and let me know how you like it!

Quick Links

Download the Template

Background Gallery


In-Page Navigation for Performance and User Experience


This concept came about while I was working on a Power BI report for the 2018 Ryder Cup. I was attempting to build out an experience to match a design that a professional web/app designer had created free form without knowing what could be done in Power BI.

The key objective was to make an extremely User friendly touch screen experience for use by the Captain and Vice Captains of the US team.

It was an extremely tedious process to achieve this back then and I would have never suggested others to try it… until Visual Grouping was released a couple months back changed the game.

In this post, I will give examples of in-page navigation, step by step instructions on how to implement it in Power BI, and demonstrate why it is valuable.

What is it?

In-Page navigation utilizes buttons and bookmarks to create navigation within a page. It can be extremely powerful at giving users a guided experience, and an app or website feel to a report.


End users are often overwhelmed by the volume of visuals on a page and lose sight of what is important on the page. I like to follow the concept of “If the end user does not need to see the visuals at the same time, do not show them at the same time”. Keeping the layout simple will lead to less risk of misinterpretation. In addition, separating content into logical buckets and using these methods effectively prioritizes the queries, as hidden visuals do not run queries until they are exposed by the end user.

Getting Started

There are many ways we utilize these concepts to bring reports to life. I am going to focus on the idea of having an overarching topic for a page, and navigating the sub-topics within the page.

Like my previous posts on Backgrounds and Overlays , I am utilizing a data set of King County Health Inspection records.

Step 1. Bucket Your Content

In this example, I have an overarching Page topic of “Inspection Results”. I have some KPIs and a line graph that i want to keep exposed at all times, as they are the “Go-To” visuals for my report. I also have a couple slicers I want to keep exposed at all times.

I have looked through my data and determined some logical breaking points for the story: Zip Code, Inspection Type, and Closed Businesses.

I have also created a background to meet my needs and brought it into the report with a section for my in-page navigation and buttons. Each button will have two versions, one is to appear “selected” and the other to appear as “unselected”

Step 2. Build Your Views

I will now build out my visuals for the “Zip Code” sub-topic. Once the visuals have been determined, I will group them (ctrl+click to select all, right click > Group to group them):

Next, I will rename my group to “Zip Code” and use the selection pane to hide the group. This will give me a blank canvas to build my next section into. I will also shift which buttons are visible to the next section.

This is what my selection pane looks like at this point:

Now I will build out my Inspection Type sub-topic visuals, group them, and hide them as we did for Zip Code.

Finally, I repeat the same steps and build my Closed Business visuals.

I now have a completed Report that is ready to be assigned Actions with Bookmarks. Here is what my selection pane looks like at this point:

Step 3. Bring it to Life with Bookmarks

First, I manually return the report to the state of my first button by hiding/unhiding visuals and buttons. I then select the items I want to be impacted by the Bookmark and create a new Bookmark.

I will set my options to Selected Visuals, and leave the other options turned on. Note that this may vary depending on your use case! If you have slicers within your visual groups, you may or may not want to have data turned on, as the bookmark will preserve the state of those slicers if data is selected.

By using Selected Visuals bookmarks and not including the slicers that are outside of my groups, I am able to toggle between my groups while not impacting the slicers and preserving the user’s filtering.

I will now manually hide/unhide items to my next group and repeat the process.

And one more time:

I can now click through my bookmarks in the bookmarks pane to ensure they are acting as anticipated

Once I have validated they are acting correctly, I will now assign them to my buttons.

Step 4. Assign your Bookmarks to Buttons

Select Button then Change “Action” type to “Bookmark”, and find the appropriate Bookmark. I also suggest changing the Tooltip to make the hover over experience intuitive

Performance Improvements

I can now click my buttons and see the affect. Utilizing the performance analyzer, we can see how the queries are coming in. On the left below is the performance analyzer from the initial page load. On the right below, we have selected a button and can see there are only 5 visuals being impacted.

Oftentimes I will see reports that have every topic/subtopic forced into a single page and visible or spanning multiple pages. This is done via either increasing page length, or or separating topics into different pages.

The End user experience on a long scrolling page can be rough – they may come in to see my high level KPIs, or a specific sub-topic, but are forced to wait for the entire page to load as queries are not prioritized – Things they don’t care about are loading first and slowing down the things they do care about.

If a sub-topic is moved to it’s own page, I often see that users will force more visuals into the page to fill the space and it can result in poor performance for unnecessary visuals

By consolidating these sub-topics into a single page and navigating within we unlock a powerful user experience as well as performance improvements.

For the Ryder Cup example, we went from 7 seconds on a click, to .5 seconds due to avoiding re-rendering unnecessary items, and spreading out the queries to fire off as needed.

Accessibility – Tabbing

Buttons for In-Page Navigation work very well with Tabbing. Now that I have completed my In-Page Navigation, I can utilize the Tab order in Power BI Desktop to set the report up for accessibility. End users can tab to buttons and hit Enter to activate the bookmark.


Remember earlier when i mentioned the painful process of doing this prior to Visual Grouping? That really came into play when it was time to edit/update what was included in this navigation.

Prior to Visual grouping, the update process would be to simply start over. Now that we have visual groups are are technically hiding/unhiding the group, not the individual items, we can simply swap out what is included in a group.

If I want to replace my Map in the “Closed Business” with a matrix, I can simply Delete the map, build my new Matrix, and drag it into the group. No updates are needed beyond this, not even an “Update” on the bookmark!

The same applies to simply bringing new items into a group without replacing anything.

By Implementing Buttons and Bookmarking, the possibilities for report navigation and user experience are nearly endless. With a little creativity and these tools in the tool belt it is relatively easy to create beautiful and robust reports that feel like applications or websites. Your users will thank you!

Try it out and let me know what other ideas you have implemented using these concepts!

If interested in learning more about the Ryder Cup Project, check out these links:

Download the PBIX for this example Here!


Background Concepts for Power BI

A solid layout is the foundation of every high quality report design. In this post I will show how to implement backgrounds into Power BI and provide resources to get started.

Why Backgrounds?

When thinking about Data Visualization, the primary focus is almost always on which types of visuals work best with the data in hand to tell a story. Even if a report has perfect Data and Visuals, it is the responsibility of the report author to land a cohesive story that is easy for the end user to navigate.

Margins, Distribution, Consistency, and Alignment are extremely important and often overlooked. If done poorly, these elements can take attention away from the story and leave users dissatisfied and confused. Fortunately, all four of these items can be tackled quickly and easily with a well made background.

A well made Background will:

  • Give structure and flow to a story
  • Guide and Guardrail the creative process of finding the story
  • Mask imperfection at the report level

There are many ways to build a Background for Power BI. I personally use PowerPoint for its simplicity, but more advanced graphic designers will use pro tools like Adobe Illustrator. At the end of the day, all we need to get to is a properly sized high quality image.

Avoid using shapes in Power BI to build your background

Every shape you bring into the Power BI Report directly will impact your performance, regardless if there is a query associated with it. If you bring in a single image for the background instead, you will be rendering a single element, rather than 10+ for a rich background. See the Performance Analyzer for Detail on this.

Getting Started

In the case where I do not have a story yet, I will start out in Power BI and identify an “Anchor Visual” to build my experience around. This would be the primary draw of your report page.

In this example I am looking at King County Health Inspection data and landed on a map to be my Anchor Visual. At this point, I will go into PowerPoint and start building my Background with this Anchor in Mind. I will then work with the shapes to determine a good layout for the remainder of the report.

If your Report page is 16:9 (Default) You can create in the Default Power Point slide size

Start with a shape that fits your Anchor visual and its position

The Initial shape sets the margin and spacing for the report page
Adding like-shapes and proportions across the page to fill the canvas

I will then add color that goes with my branding/theme

I will now bring this background into my PBIX:

  • In Power Point, Select All of your Elements
  • Right Click > Save as Picture
  • In Power BI Desktop, with no elements selected, open the formatting options in the Visualization pane
  • Click + Add image button under “Page Background” and find your new image
  • Remove any transparency on the slider
  • Use drop down to Choose Image Fit: Fit

I can now position the visual in the box i created for it, and start building my story based on the other boxes I laid out for it.

Perfect Fit for my Anchor Visual

If you find a key element that you want to include does not into your predetermined sections, simply modify the PPT to suit and re-load!

I really want this line chart to take this much space up but my background is not set up for it. I will then shift shapes to suit line graph while keeping my margins and spacing intact

I can also bring in our Branding and Titles to limit how many elements are rendered within Power BI

Viewing the same visuals within the report without the background you will notice that not everything is positioned well, and the report is much harder to follow.

Even here not all items are perfectly spaced, but due to the framing being aligned it is not noticeable

We now have a finished report page and can take our background and adjust our shapes to fit the needs of our remaining report pages. By keeping the same background colors/themes and redistributing our shapes we can end up with a consistent look and feel across tabs

Let me know what you think Follow on Twitter for quick tips and tricks @ChrisHamill17

Check out the Background Gallery to download the PowerPoint for this example, and check back for new Backgrounds frequently!