Forum Discussion

Jay0610's avatar
Jay0610
Frequent Visitor
4 years ago
Solved

Cumulative Totals

Hi,

 

I'm struggling with the DAX for calculating  the monthly cumulative shown below. (resets on each month)

 

 

Ive tried using the following but no joy! Any help would be really appreciated.

 

 

 

Monthly Cumulative = 
CALCULATE(
    SUM([Margin]),
    FILTER(ALL('Table'[date],
   'Table'[date] >= STARTOFMONTH('Table'[date] ) &&
'Table'[date]  <= MAX('Table'[date])
 ))

 

 

 

 

 

10 Replies

  • Hi,

    Assuming Date and Margin are columns already present in your source data table, perform the following steps:

    1. Create a Calendar Table
    2. Build a relationship (Many to One and Single) from the Date column of your Data Table to the Date column of your Calendar Table
    3. To your Table/Matrix visual, drag Date from the Calendar Table
    4. Write these measures:

    Total = sum(Data[Margin])

    MTD Total = calculate([Total],datesmtd(calendar[date]))

    Hope this helps.

    • Jay0610's avatar
      Jay0610
      Frequent Visitor

      Excellent thanks Ashish, Im starting to see the importance of calendar tables!

    • Jay0610's avatar
      Jay0610
      Frequent Visitor

      Hi Ashish, do you know if I could I use a similar approach for a 'daily cumulative total' as shown below? Happy to post this as a new topic if thats better?

      Saying 'maximum' might be misleading here. The target value will be repeated for each date. So for example, all rows for 01/02/2022 will be 100.

      Also the daily cumulative total would need to reset each month as shown.

       

       

       

       

      • Ashish_Mathur's avatar
        Ashish_Mathur
        Icon for Super User rankSuper User

        Hi,

        Share the link from where i can download your PBI file.

  • Hi,

    Please check the below picture and the attached pbix file.

     

     

    Monthly Cumulative =
    VAR currentdate = 'Table'[Date]
    VAR currentmonth =
    STARTOFMONTH ( 'Table'[Date] )
    VAR currentmargin = 'Table'[Margin]
    RETURN
    CALCULATE (
    SUM ( [Margin] ),
    FILTER (
    'Table',
    STARTOFMONTH ( 'Table'[Date] ) = currentmonth
    && 'Table'[date] <= currentdate
    && 'Table'[Margin] <= currentmargin
    )
    )
     
    • Jay0610's avatar
      Jay0610
      Frequent Visitor

      many thanks Jihwan, interesting to see the use of variables in the calculation. Im not sure why but this method didnt quite work for me, I'll need to spend more time looking at this to understand why. I tried the calendar table association as described by Ashish and this worked 👍

    • NorbertManuel's avatar
      NorbertManuel
      Frequent Visitor

      Hi, I tried to leverage your solution for my own challenge, so I already have a Calendar dim table set as date table, and a table with events that have a value 'Converted Amount (m€)' which is recurring revenue ie need to be cumulated each month from a start date and then continued til end of calendar.

      The issue with I have with your solution is that I have a message error "a single value for date cannot be determined". Any idea? thanks