Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
PhilippeGR
Frequent Visitor

How do you dynamically calculate value based on slicer

Please bear in mind that I am fairly new at DAX.

 

I have a table called BaseTable as follows

PhilippeGR_1-1737734342816.png

and a slicer

PhilippeGR_7-1737734867043.png

I have defined 4 measures:

[MaxYr] = CALCULATE(max('BaseTable'[UWYear]), ALLSELECTED('BaseTable'))

[Value MaxYR] = CALCULATE([Value], FILTER(ALL('BaseTable'), 'BaseTable'[UWYear] = [MaxYr]))

[MaxYr-1] = [MaxYr] - 1

[Value MaxYR-1] = CALCULATE([Value], FILTER(ALL('BaseTable'), 'BaseTable'[UWYear] = [MaxYr-1]))

[MaxYR] gives me the max UWYear from the Slicer.

 

When I choose a UWYear value of 2025, I get the following

PhilippeGR_5-1737734650203.png

Which is correct

 

However, I change a UWYear value to 2024, I get the following

PhilippeGR_6-1737734708106.png

Which is not correct.

I was expecting [Value MaxYR] to be $1,177 and [Value MaxYR-1] to be BLANK.

 

Can you please help?

1 ACCEPTED SOLUTION
johnt75
Super User
Super User

The issue is the ALL('BaseTable') in the FILTER arguments. That makes every year visible, and so when you call ALLSELECTED that will also return all the years.

Also, it is bad practice to filter entire tables, you should only filter the columns you need to. It is more accurate and more efficient.

Change your [Value MaxYr] function to

Value MaxYR =
VAR MaxYear = [MaxYr]
VAR Result =
    CALCULATE ( [Value], 'BaseTable'[UWYear] = MaxYear )
RETURN
    Result

and make the corresponding changes in [Value MaxYR-1] as well.

 

View solution in original post

1 REPLY 1
johnt75
Super User
Super User

The issue is the ALL('BaseTable') in the FILTER arguments. That makes every year visible, and so when you call ALLSELECTED that will also return all the years.

Also, it is bad practice to filter entire tables, you should only filter the columns you need to. It is more accurate and more efficient.

Change your [Value MaxYr] function to

Value MaxYR =
VAR MaxYear = [MaxYr]
VAR Result =
    CALCULATE ( [Value], 'BaseTable'[UWYear] = MaxYear )
RETURN
    Result

and make the corresponding changes in [Value MaxYR-1] as well.

 

Helpful resources

Announcements
July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.

Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.