Forum Discussion

Waseem's avatar
Waseem
Helper III
1 year ago
Solved

Applying filter on a YTD function

Dear Community 

 

I have a measure to calculate YTD numbers as follows:

 

YTD-Rev-CoS = CALCULATE(SUM(Model'[Value]),DATESYTD('New Date'[Date]),ALLSELECTED('New Date'[Month]))
 
I have another field namely Cost Type with two values as "Revenue" and "CoS". I am trying to apply a filter on the above function to filter for "Revenue" only using following formula:
 
SUMX(FILTER('Model',[Cost Type]="Revenue"),[YTD-Rev-CoS])
 
However I always get an incorrect number. Can someone please help as to if i am missing something?
 
Regards 
  • Hi Waseem ,

    You're close in your approach, but the issue lies in how the filter is being applied within your DAX expression. Your original YTD measure [YTD-Rev-CoS] already performs a CALCULATE operation, and then you're wrapping that in a SUMX over a filtered table, which can lead to context issues and incorrect results. Instead, you should apply the filter directly within the CALCULATE function that defines the YTD measure. For example, revise the measure like this:
    YTD-Revenue = CALCULATE(SUM('Model'[Value]), DATESYTD('New Date'[Date]), 'Model'[Cost Type] = "Revenue", ALLSELECTED('New Date'[Month])).


    This ensures that the "Revenue" filter is applied at the same level as the time intelligence logic, maintaining proper context and yielding correct results. Wrapping an existing measure in a FILTER function post-calculation can sometimes break the intended evaluation context, especially with time functions like DATESYTD.

     

2 Replies

  • Hi Waseem ,

    You're close in your approach, but the issue lies in how the filter is being applied within your DAX expression. Your original YTD measure [YTD-Rev-CoS] already performs a CALCULATE operation, and then you're wrapping that in a SUMX over a filtered table, which can lead to context issues and incorrect results. Instead, you should apply the filter directly within the CALCULATE function that defines the YTD measure. For example, revise the measure like this:
    YTD-Revenue = CALCULATE(SUM('Model'[Value]), DATESYTD('New Date'[Date]), 'Model'[Cost Type] = "Revenue", ALLSELECTED('New Date'[Month])).


    This ensures that the "Revenue" filter is applied at the same level as the time intelligence logic, maintaining proper context and yielding correct results. Wrapping an existing measure in a FILTER function post-calculation can sometimes break the intended evaluation context, especially with time functions like DATESYTD.

     
    • Waseem's avatar
      Waseem
      Helper III

      rohit1991  many thanks. Its clear and resolved my issues as well. All Kudus to you man

       

      Regards