Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

Cumulative sum with condition

Hello

 

This is my situation : 

 

DateAmountConditionCumulative if Condition = Y
01-01-180 0
01-02-180 0
01-03-180 0
01-04-180 0
01-05-180 0
01-06-180 0
01-07-180 0
01-08-180 0
01-09-180 0
01-10-1857896Y57896
01-11-180 57896
01-12-180 57896
01-01-190 57896
01-02-190 57896
01-03-190 57896
01-04-190 57896
01-05-190 57896
01-06-19115000Y172896
01-07-190 172896
01-08-1925000N172896
01-09-190 172896
01-10-190 172896
01-11-1938125Y211021
01-12-1956000N211021
01-01-20  211021

 

The 3 first columns are the data in.  The last column is the result i'd like to have : a cumulative sum based on date, with condition set to Y.  I tried to build a column with a CALCULATE function but i missed something...

 

Could you help me?

 

Thanks in advance and sorry for my poor English.

 

Michael Hendeles

  • Hi,

     

    Please try to create a calculated column first:

    New Amount = IF('Table'[Condition]="N",0,'Table'[Amount])

    Then try this measure:

    Measure = CALCULATE(SUM('Table'[New Amount]),FILTER(ALLSELECTED('Table'),'Table'[Date]<=MAX('Table'[Date])))

    The result shows:

    Here is my test pbix file:

    pbix 

    Hope this helps.

     

    Best Regards,

    Giotto

10 Replies

  • Anonymous ,

    Try like

    Cumm Sales = CALCULATE(SUM(Table[Amount]),filter(date,date[date] <=max(Table[ Date])),Table[Condition]="Y")

    • Anonymous's avatar
      Anonymous
      Not applicable

      amitchandak 

       

      Thanks for your help,

       

      When i try your measure, i receive an error... Are you sure with your syntax?

  • camargos88's avatar
    camargos88
    Community Champion

    Hi Anonymous ,

     

    Try creating this measure:

     

    Running Total = CALCULATE(SUM('Table'[Amount]); FILTER(ALL('Table'[Date]); 'Table'[Date] <= MAX('Table'[Date])); 'Table'[Condition] = "Y")
     
    Ricardo
    • Anonymous's avatar
      Anonymous
      Not applicable

      Thanks for your help

       

      Here is the result with your measure : 

      DateRunning Total
      01-10-18 00:0057896
      01-11-18 00:0057896
      01-12-18 00:0057896
      01-01-19 00:0057896
      01-02-19 00:0057896
      01-03-19 00:0057896
      01-04-19 00:0057896
      01-05-19 00:0057896
      01-06-19 00:00172896
      01-07-19 00:00172896
      01-08-19 00:00172896
      01-09-19 00:00172896
      01-10-19 00:00172896
      01-11-19 00:00211021
      01-12-19 00:00211021
      01-01-20 00:00211021

       

      Unfortunately, the rows with an amount of 0 are missing...

       

      In fact i had the same result...

      • amitchandak's avatar
        amitchandak
        Super User

        Anonymous ,

        Try like

         

        Cumm Sales = CALCULATE(SUMX(Table,if(Table[Condition]="Y",Table[Amount],0)),filter(date,date[date] <=max(Table[ Date])))

         

        Or

        Cumm Sales = CALCULATE(SUMX(Table,if(Table[Condition]="Y",Table[Amount],0)),filter(All(Table),Table[date] <=max(Table[ Date])))
        //old
        Cumm Sales = CALCULATE(SUM(Table[Amount]),filter(all(Table),Table[date] <=max(Table[ Date])),Table[Condition]="Y")

         

         

        Also, try the option with old Formula

         

        What error you are getting

  • v-gizhi-msft's avatar
    v-gizhi-msft
    Community Support

    Hi,

     

    Please try to create a calculated column first:

    New Amount = IF('Table'[Condition]="N",0,'Table'[Amount])

    Then try this measure:

    Measure = CALCULATE(SUM('Table'[New Amount]),FILTER(ALLSELECTED('Table'),'Table'[Date]<=MAX('Table'[Date])))

    The result shows:

    Here is my test pbix file:

    pbix 

    Hope this helps.

     

    Best Regards,

    Giotto