Forum Discussion

cferraz_hemav's avatar
6 years ago
Solved

Cummulative sum with reference date in another table

Hi all!

 

I have a nightmare trying to sum the accumulated value

 

What I have:

Table 1

(...) | field_id | (...) | start_date |

 

Table 2

(...) | field_id | info_date | data | 

 

What I need is to have the accumulated_data (sum) from the start_date to the info_date:

Table 2

(...) | field_id | info_date | data | accumulated_data

 

Any idea to the easier/faster way to do it?

 

Thanks!

 

  • Hi, cferraz_hemav 

     

    Based on your description, I created data to reproduce your scenario. The pbix file is attached in the end.

    Table1:

     

    Table2:

     

    There is no relationship between two tables. You may create a measure or a calculated column as below.

    Measure:

    Accumulated Measure = 
    var _fieldid = SELECTEDVALUE(Table2[field_id])
    var _infodate = SELECTEDVALUE(Table2[info_date])
    var _startdate =
    LOOKUPVALUE(Table1[start_date],Table1[field_id],_fieldid)
    var result =
    CALCULATE(
        SUM(Table2[data]),
        FILTER(
            ALL(Table2),
            Table2[field_id]=_fieldid&&
            Table2[info_date]>=_startdate&&
            Table2[info_date]<=_infodate
        )
    )
    return
    IF(
        ISBLANK(result),
        0,
        result
    )

     

    Calculated column:

    Accumulated Column = 
    var _fieldid = Table2[field_id]
    var _infodate = Table2[info_date]
    var _startdate =
    LOOKUPVALUE(Table1[start_date],Table1[field_id],_fieldid)
    var result =
    CALCULATE(
        SUM(Table2[data]),
        FILTER(
            ALL(Table2),
            Table2[field_id]=_fieldid&&
            Table2[info_date]>=_startdate&&
            Table2[info_date]<=_infodate
        )
    )
    return
    IF(
        ISBLANK(result),
        0,
        result
    )

     

    Result:

     

    Best Regards

    Allan

     

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

4 Replies

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

    Hi, cferraz_hemav 

     

    Based on your description, I created data to reproduce your scenario. The pbix file is attached in the end.

    Table1:

     

    Table2:

     

    There is no relationship between two tables. You may create a measure or a calculated column as below.

    Measure:

    Accumulated Measure = 
    var _fieldid = SELECTEDVALUE(Table2[field_id])
    var _infodate = SELECTEDVALUE(Table2[info_date])
    var _startdate =
    LOOKUPVALUE(Table1[start_date],Table1[field_id],_fieldid)
    var result =
    CALCULATE(
        SUM(Table2[data]),
        FILTER(
            ALL(Table2),
            Table2[field_id]=_fieldid&&
            Table2[info_date]>=_startdate&&
            Table2[info_date]<=_infodate
        )
    )
    return
    IF(
        ISBLANK(result),
        0,
        result
    )

     

    Calculated column:

    Accumulated Column = 
    var _fieldid = Table2[field_id]
    var _infodate = Table2[info_date]
    var _startdate =
    LOOKUPVALUE(Table1[start_date],Table1[field_id],_fieldid)
    var result =
    CALCULATE(
        SUM(Table2[data]),
        FILTER(
            ALL(Table2),
            Table2[field_id]=_fieldid&&
            Table2[info_date]>=_startdate&&
            Table2[info_date]<=_infodate
        )
    )
    return
    IF(
        ISBLANK(result),
        0,
        result
    )

     

    Result:

     

    Best Regards

    Allan

     

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

    • cferraz_hemav's avatar
      cferraz_hemav
      Helper I

      Thanks for the fast reply!!

       

      Table 1

      field_idstart_date
      3142401/01/2020
      0015606/06/2020

       

      Table 2 (in green the wanted one)

      field_idinfo_datedataaccumulated_data
      3142405/01/2020-21,28-21,28
      3142415/01/2020-22,11-43,39
      0015605/01/2020-33,050
          

       

      hope this example is enough