Microsoft Power BI has the capability to model “what-if” scenarios and sensitivity analyses through the use of input parameters. From a user’s perspective, this capability transforms the product from data retrieval, data aggregation, data transformation, and visualization reports to an interactive experience allowing users to evaluate how business decisions may impact future results.
Step 1 – Data Set Up
In this article, the demonstrated what-if analysis evaluates how gross revenue changes based on the number of units sold for different products with varying prices. We have a simple table listing each product and its associated unit price. The table is named
TBL_PRODUCTS. I created this example table manually within Power BI, but if you need help retrieving data from Excel, please review the Power Query to Access Excel Data from Current Workbook, Local File, or SharePoint article. Specifically, the WIDGET and GADGET products are used in this analysis.
Step 2 – Create Modeling Parameters
From the Modeling ribbon, click New parameter and select Numeric range. This new parameter captures user input for the number of widgets sold and it is used to dynamically calculate the gross revenue for the widget product line.
The Parameters screen is displayed. This parameter represents a Numeric range of Whole numbers with a Minimum allowed value of
0 and a Maximum allowed value of
1000 that can Increment by values of
1 with an initial Default of
0. The Add slicer to this page checkbox is checked. The new parameter is named
Click the Create button to finish creating the parameter.
Repeat this step as necessary for each input parameter. I am adding a second parameter named
PROJECTED_UNITS_SOLD_GADGETS to capture gadget unit sales.
Step 3 – Basic Slicer Formatting
Since the Add slicer to this page checkbox was checked, a new slicer is added to the Report view after the Parameter screen closes. The slicer title matches its corresponding parameter name which is
PROJECTED_UNITS_SOLD_WIDGETS in this example. This is not very user-friendly so let’s change the slicer title.
Select the newly created slicer and open the Visualizations pane. Within the Visual section under Slicer header, change the Title text. In this case, the slicer is given the new title Projected Widget Sales.
The slicer header text now reflects the new title text. The slicer height and width are also adjusted to better fit the report.
Repeat this step as necessary for each input parameter.
Step 4 – Calculations Using Modeling Parameters
On the Data pane, we find our data table named
TBL_PRODUCTS as well as the newly created modeling parameters
On the Report view, we find our new slicers operating within the specified minimum and maximum thresholds.
To calculate gross revenue for each product line, we create two new measures. On the Data pane, select the
From the Table tools ribbon, select New measure.
Create a new measure with the following DAX. In summary, this measure retrieves the current unit price for a widget from
TBL_PRODUCTS and multiplies it by the current input value of the
PROJECTED_UNITS_SOLD_WIDGETS slicer to arrive at the gross revenue for widgets. As the user adjusts the slicer, its underlying value changes and the value of this measure automatically updates with the new gross revenue calculation. The new measure is named
MSR_PROJECTED_WIDGET_SALES = VAR vWidget_Price = CALCULATE ( MAX ( TBL_PRODUCTS[PRICE] ), FILTER ( ALLSELECTED ( TBL_PRODUCTS ), TBL_PRODUCTS[PRODUCT NAME] = "WIDGET" ) ) VAR vProjected_Units_Sold_Widgets = SELECTEDVALUE ( PROJECTED_UNITS_SOLD_WIDGETS[PROJECTED_UNITS_SOLD_WIDGETS] ) RETURN vProjected_Units_Sold_Widgets * vWidget_Price
Repeat this step as necessary for each input parameter. The following is a new measure for the gadget slicer and it is named
MSR_PROJECTED_GADGET_SALES = VAR vGadget_Price = CALCULATE ( MAX ( TBL_PRODUCTS[PRICE] ), FILTER ( ALLSELECTED ( TBL_PRODUCTS ), TBL_PRODUCTS[PRODUCT NAME] = "GADGET" ) ) VAR vProjected_Units_Sold_Gadgets = SELECTEDVALUE ( PROJECTED_UNITS_SOLD_GADGETS[PROJECTED_UNITS_SOLD_GADGETS] ) RETURN vProjected_Units_Sold_Gadgets * vGadget_Price
Step 5 – Visualizations
On the Report view, add a new Donut chart visualization from the Visualizations pane.
In the Values section of the Donut chart visualization, add the measures created in the prior step, e.g.,
We also want to display the total gross revenue of both widget and gadget sales combined in a Card visualization.
On the Data pane, select the TBL_PRODUCTS table.
From the Table tools ribbon, select New measure.
Create a new measure with the following DAX. This measure adds the values of the
MSR_PROJECTED_GADGET_SALES measures to arrive at the total gross revenue.
MSR_TOTAL_PROJECTED_SALES = [MSR_PROJECTED_WIDGET_SALES] + [MSR_PROJECTED_GADGET_SALES]
On the Report view, add a new Card visualization from the Visualizations pane.
In the Fields section of the Card visualization, add the total measure we just created, e.g.,
MSR_TOTAL_PROJECTED_SALES. For an in-depth guide to add a total within a donut chart visualization, please review the Display Total Inside Power BI Donut Chart guide.
The Report view now displays a Donut chart visualization detailed by widget and gadget sales. The Card visualization displays the total combined sales of widgets and gadgets as expected. As the user changes the slicer input values, the visualizations update to reflect the calculated revenue.
As expected, the report responds to user input by dynamically recalculating the underlying measures and updating corresponding visualizations. By introducing what-if analysis through the use of modeling parameters, we transform the user experience from a report viewer to active engagement with the available data beyond simple filtering.