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

Join us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.

Reply
sunilbeckham
Helper I
Helper I

Calculate function not filtering when a variable is used.

Hello everyone. I have a table that looks something like this:

School DivisionStudent enrollmentMonth
A10Oct
B12Oct
C15Nov
C10Dec

 

When I create a simple calculate measure such as this:

 

 

Students enrolled = 
CALCULATE(SUM('Table'[Student enrollment]),'Table'[Month] = "Oct")

 

 

I get the correct result, which in this example will be = 22

 

But when I create a variable to store the Sum aggregate, I get a different result that is without any filter specified within Calculate function. For example this DAX:

 

 

Students enrolled = 
VAR _studentsenrolled = SUM('Table'[Student enrollment])
RETURN
CALCULATE(_studentsenrolled,'Table'[Month] = "Oct")

 

 

In this example, it gives me the result as 47. Which is incorrect as it doesn't seem to be taking into account the filter parameter of Calculate function.

Can anyone help clarify what am I missing?

 

Thanks in advance!

1 ACCEPTED SOLUTION
Erokor
Resolver II
Resolver II

Echoing @Greg_Deckler on this one, but with a little more information. Variables are calculated only once and then stored only once and cannot be re-used in their current context. The only exception to this is if you create a variable that is a table: 
ie. VAR _SourceTable = FILTER(ALL('Date'[Year]),'Date'[Year]>=2010) 
and then later on you want to further filter this source table ie. VAR _MoreFiltering = FILTER(_SourceTable, [Year] >= 2013).

Measures are calculated in the current filter context (sometimes that's okay if you want to keep the value static) but you can't use CALCULATE() to adjust that after the fact.

View solution in original post

5 REPLIES 5
sunilbeckham
Helper I
Helper I

Thank you so much for your prompt and helpful responses @Erokor  and @Greg_Deckler 
This is why I love this community 🙂

I've been a longtime lurker, and only today decided to leave my hermit cave and start answering questions. I guess imposter syndrom has kept me from replying 🤣.  Time to go for that Superuser cape.

I can totally relate. Hopefully someday I'll gather enough wisdom from my lurking experience that I can leave my hermit cave too 😅
All the best in your quest for Superuser!

Erokor
Resolver II
Resolver II

Echoing @Greg_Deckler on this one, but with a little more information. Variables are calculated only once and then stored only once and cannot be re-used in their current context. The only exception to this is if you create a variable that is a table: 
ie. VAR _SourceTable = FILTER(ALL('Date'[Year]),'Date'[Year]>=2010) 
and then later on you want to further filter this source table ie. VAR _MoreFiltering = FILTER(_SourceTable, [Year] >= 2013).

Measures are calculated in the current filter context (sometimes that's okay if you want to keep the value static) but you can't use CALCULATE() to adjust that after the fact.

Greg_Deckler
Super User
Super User

@sunilbeckham Doesn't work that way. Variables are not variable, they are static once calculated. 



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Power BI Cookbook Third Edition (Color)

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
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 Power BI Update Carousel

Power BI Monthly Update - June 2025

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

June 2025 community update carousel

Fabric Community Update - June 2025

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