Power BI is turning 10! Tune in for a special live episode on July 24 with behind-the-scenes stories, product evolution highlights, and a sneak peek at what’s in store for the future.
Save the dateEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Hi all!
I've been charged with creating a flexible business case tool, where the business users can input some items, get a cost, use a growth rate, and see how much it would cost year over year.
I have the formula to get the total original cost, which I have called [Total Year 1 Costs]. I also have a numeric parameter that allows the user to select a growth rate (between 0.01 - 0.5) for the annual growth rate. I'm trying to allow them to also select the start year for the project ("Go Live Year"). The individual variables are working, but my switch formula is not. Any assistance is greatly appreciated!
Hi @Thigs ,
Please follow these steps to achieve the desired outcome:
1. Create a Parameter Table (Disconnected Table)
ProjectionParams =
DATATABLE(
"Parameter", STRING,
"Value", DOUBLE,
{
{"StartValue", 1000},
{"GrowthRate", 0.10},
{"DeclineRate", 0.05},
{"GrowthMonths", 5},
{"DeclineMonths", 3},
{"TotalMonths", 12}
}
)
2. Build a Calendar Table with a Month Index
MonthIndex =
ADDCOLUMNS(
CALENDAR(DATE(2025, 1, 1), DATE(2025, 12, 31)),
"MonthNum", DATEDIFF(DATE(2025, 1, 1), [Date], MONTH) + 1
)
This will generate 12 months, with the MonthNum column starting at 1.
3. Define a Measure for Projected Value Calculation
ProjectedValue =
VAR StartValue = CALCULATE(MAX(ProjectionParams[Value]), ProjectionParams[Parameter] = "StartValue")
VAR GrowthRate = CALCULATE(MAX(ProjectionParams[Value]), ProjectionParams[Parameter] = "GrowthRate")
VAR DeclineRate = CALCULATE(MAX(ProjectionParams[Value]), ProjectionParams[Parameter] = "DeclineRate")
VAR GrowthMonths = CALCULATE(MAX(ProjectionParams[Value]), ProjectionParams[Parameter] = "GrowthMonths")
VAR DeclineMonths = CALCULATE(MAX(ProjectionParams[Value]), ProjectionParams[Parameter] = "DeclineMonths")
VAR TotalMonths = CALCULATE(MAX(ProjectionParams[Value]), ProjectionParams[Parameter] = "TotalMonths")
VAR MonthNum = SELECTEDVALUE('MonthIndex'[MonthNum])
VAR Result =
SWITCH(
TRUE(),
MonthNum = 1, StartValue,
MonthNum <= GrowthMonths + 1, StartValue * POWER(1 + GrowthRate, MonthNum - 1),
MonthNum <= GrowthMonths + DeclineMonths + 1,
VAR GrowthEndValue = StartValue * POWER(1 + GrowthRate, GrowthMonths)
VAR DeclineStep = MonthNum - GrowthMonths - 1
RETURN GrowthEndValue * POWER(1 - DeclineRate, DeclineStep),
BLANK()
)
RETURN Result
4. Visualize the Results
Create a line chart or table with the following:
X-Axis: MonthIndex[Date]
Y-Axis/Values: ProjectedValue (the measure above)
This visualization will illustrate the projected curve based on the growth and decline parameters set.
I’ve attached the .pbix file and screenshots for your reference.
Best Regards,
Tejaswi.
Community Support
But this won't work with my existing formula to find the cost, correct? I don't see the current cost anywhere in there. That formula has many pieces, so I need to be able to reference that measure.
Hi @Thigs ,
Hi [OP's Name],
You’re absolutely right the example I provided uses a static StartValue from the parameter table and doesn’t reference your [Total Year 1 Costs] formula.
To incorporate your measure, simply update the measure by replacing this line:
VAR StartValue = CALCULATE(MAX(ProjectionParams[Value]), ProjectionParams[Parameter] = "StartValue")
with:
VAR StartValue = [Total Year 1 Costs]
This change ensures the projection logic is applied directly to your calculated cost. Make sure your [Total Year 1 Costs] measure returns accurate, context-dependent results, especially when filters like category, year, or month are involved. That way, your projections will stay precise.
Best regards,
Tejaswi.
Community Support Team
I agree, the problem must be here
If this helped, please consider giving kudos and mark as a solution
@me in replies or I'll lose your threadWant to check your DAX skills? Answer my biweekly DAX challenges on the kubisco Linkedin page
Consider voting this Power BI idea
Francesco Bergamaschi
MBA, M.Eng, M.Econ, Professor of BI
So, I tried changing the formula to see if we can isolate what is going wrong. It's something with the Year = Go Live Year, because if I just tell it to use Year = 2025, etc, it is working.
Hi! Thanks for the assistance, unfortunately that's still not working. I tried the table - it is blank.
Can you provide some images of what you mean by "not working"?
No data is appearing within the graph. I am using a line chart, using Years as my X-axis (not "Go Live" year, but a year table that has one column, Years, from 2025 - 2100). I then pull the measure into the Y axis and nothing occurs.
I need to see columns grouped in rows amd columns section of the visual, the selection on slicers, need to see the data model
Without contexts and Data model I cannot understand the issue
I've attached three images. The top is my visual, you can see that it is blank. The Total Year 1 Costs formula IS giving a result (it's in the box), and when I return any variable, that is giving me a correct result, so it is an issue with the SWITCH statement at the end.
There isn't really any raw data within this file - it is all based on numeric parameters and formulas.
The visual, on the left, is blank
This is the "Years" data, created by numeric parameter
This is the Growing the Cost formula
User | Count |
---|---|
25 | |
12 | |
8 | |
6 | |
6 |
User | Count |
---|---|
26 | |
12 | |
11 | |
8 | |
6 |