If you have ever found yourself running out of room on a report page for all the information you have, then this is a great technique to use.
Check out what we a trying to achieve below.
It's always good to at least have a small plan of what you are looking to place into your report pages before you get started. This way you can actually design the data model and measures around that look and feel that you want to achieve.
I like to always complete a quick sketch of my reports, as then I'll quickly know if I have to utilise this technique in particular in my model build.
Ok, so it's a common occurrence to see reports like the below where we have similar charts all in one reports. Sometimes this might be for a legitimate reason, but it does take up quite a bit of room.
What if we wanted to free up some real estate and place this in one visual? Then dynamically flick between sales/costs/profits using a slicer.
Here's how you do it.
Obviously, we need to first start with are measure that we want evaluated.
Now we need to create a slicer which can hold the dimensions of 'sales', 'costs' and 'profits'. We create a table manually within Power BI using the 'Enter Data' button.
We give each measure dimension an index number as that is what we are going to sort them by in the slicer.
Once this is loaded into the data model, you want to make sure that the measures are actually sorted correctly. You want these to show up in your slicer in a sequential order.
Next, let's check the data model.
This table does not need to have a relationship to any other table, so make sure that it doesn't (you can also call this a disconnected table). You may get weird filtering results on some of your measures if the index column in this new table somehow has a relationship with an unrelated table.
Let's create a slicer out of our new measure table dimensions.
Now for the magic of the SWITCH function.
Using the SWITCH function (similar to nested IFs) we are able to write an expression that evaluates all of our inputs and then if one evaluates to TRUE then that measure and only that measure is returned.
This is pretty cool. Think of the applications here for your report designs. It brings immense design flexibility which I personally quite like.
Now, couple of considerations...
What if nothing is selected? Well, that is what the BLANK() is for. You need to make a decision here. You can put this to a default, like 'Total Sales' for example. But totally up to you. I like BLANK() as it quickly shows the user that something is not right and they need to select something. It reduces any ambiguity over what story you are attempting to show in the report.
Currently, you can also not have different formats within the same chart. So you only want to group similar numeric types like currency, decimals numbers, whole numbers etc. Looking forward to the day this gets changed on a monthly update!
Download the pbix file at the link below.
This is a truly great design technique I use quite a bit. It will open your mind to numerous possibilities. Good luck with it.