top of page
Jihwan Kim

Dynamic Dimension Selection: Empowering Power BI Reports with Field Parameters

In this writing, I want to share my journey of learning the creation of a dynamic field parameter for selecting dimensions in Power BI Desktop. While the conventional method involves using slicers to let end-users manually choose their preferred dimensions for visualizations, I am about to take things up a notch.


Situation: I've introduced two field parameters: 'parameter-all-metrics,' which boasts a slicer housing all available calculated measures, and 'parameter-all-dimensions,' which operates without a slicer. The core idea here is to achieve dynamic visualization adjustments based on the metric chosen from 'parameter-all-metrics.' Depending on the selected metric, a distinct set of dimensions is derived from 'parameter-all-dimensions.'


Solution:

Now, let's take a closer look at my sample PBIX file's data model – it's deliberately kept simple for this showcase. As we delve into solving the above problems, various methods are at our disposal.


However, today, we're going to address them by creating a DAX measure and implementing it in the visual level filter pane.


You might be wondering if this is the most efficient way to tackle the issue. While it might not be the fastest route, what you're about to witness is the sheer elegance and accessibility of the visual level filter pane, which promises an effective solution.

And, I have four calculated measures like below.


Sales: = SUM( Sales[Sales] )


Cost: = SUM( Sales[Cost] )


Profit: = SUM( Sales[Profit] )


Quantity Sold: = SUM( Sales[Quantity_sold] )



Below, you'll find a table visualization, showcasing the full array of measures and dimensions all in one place. As shown below, all measures are included in the field parameter. I've made an enhancement to 'parameter-all-metrics' by introducing two new columns. These additions will prove invaluable when we delve into crafting a DAX formula later.



I like to write the problem statement as follows:

  • When I choose "Sales," display it alongside "Date(daily)" and "Country" dimensions.

  • If "Cost" is my selection, it should be presented in conjunction with the "Product" and "Sales Channel" dimensions.

  • Opt for "Profit," and I'll see it paired with the "Year-Month" and "Sales Channel" dimensions.

  • Finally, when I pick "Quantity Sold," it will be showcased alongside the "Country" and "Sales Channel" dimension.


To build dynamic dimensions that adjust based on your selection of the metric, the initial step involves creating a field parameter encompassing all the relevant dimensions. Here, I've intentionally avoided adding a slicer to the page since the dimension selection doesn't rely on the slicer's choice but instead hinges on the metric you select.


As illustrated below, you'll find 'parameter-all-dimensions' and 'parameter-all-metrics' nestled within the table visualization.

When crafting 'parameter-all-dimensions,' I introduced two additional columns: 'Dim' and 'Dim sort column.' These columns play a crucial role when it comes to creating a DAX measure later.


Now, it's time to craft a DAX measure that precisely conveys the condition we wish to showcase in our visualization.


Dimension select measure = VAR _metircSales = MAX ( 'parameter-all-metircs'[metic] ) = "Sales" VAR _metircCost = MAX ( 'parameter-all-metircs'[metic] ) = "Cost" VAR _metircProfit = MAX ( 'parameter-all-metircs'[metic] ) = "Profit" VAR _metircQty = MAX ( 'parameter-all-metircs'[metic] ) = "Quantity" VAR _conditionSales = MAX ( 'parameter-all-dimensions'[Dim] ) = "Date" || MAX ( 'parameter-all-dimensions'[Dim] ) = "Country" VAR _conditionCost = MAX ( 'parameter-all-dimensions'[Dim] ) = "Product" || MAX ( 'parameter-all-dimensions'[Dim] ) = "Channel" VAR _conditionProfit = MAX ( 'parameter-all-dimensions'[Dim] ) = "Year-Month" || MAX ( 'parameter-all-dimensions'[Dim] ) = "Channel" VAR _conditionQuantity = MAX ( 'parameter-all-dimensions'[Dim] ) = "Country" || MAX ( 'parameter-all-dimensions'[Dim] ) = "Channel" RETURN SWITCH ( TRUE (), _metircSales && _conditionSales, 1, _metircCost && _conditionCost, 1, _metircProfit && _conditionProfit, 1, _metircQty && _conditionQuantity, 1, 0 )


Next, place the measure into the visual level filter pane, as demonstrated below. To ensure the dimensions are filtered correctly, select the 'Top N' filter type.


As depicted below, watch how the dimension seamlessly adapts in response to your metric selection.



In closing, this journey into crafting dynamic field parameters and using DAX measures for intelligent dimension selection in Power BI has opened up a world of possibilities for our reporting. We've explored how to empower our visualizations, making them more flexible and responsive to user interactions. By leveraging these techniques, you can elevate your Power BI reports to a new level of sophistication, providing meaningful insights that cater to your audience's changing needs. As a Power BI developer, you now possess the tools to create dynamic, user-friendly reports that leave a lasting impact. We've only scratched the surface, but the possibilities are limitless. So, go ahead and embark on your own adventure, and watch your Power BI projects transform in exciting ways. Happy Power BIing!




1,173 views2 comments

2 Comments


mgbsher
Oct 30, 2023

Excellent.

Like

Juan García
Juan García
Oct 29, 2023

Good use case. It is possible that with a relationship the metrics field parameters table filters the dimensions field parameters table to obtain the same result without DAX, using only the user interface

Like
bottom of page