Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago
Solved

Sum last value filtered by date

Hello,

I need to get the last CUMULATIF value for each single NO_PALETTE filterd by the choosen date. The date slicer is coming from a calendar table. Then I want to sum all the value the get the total. I tried this measure but it don't give me the total:

 

 

Qty(filter)_test = 
var dateselect = SELECTEDVALUE(Dimdate[Date])
var minindex = CALCULATE(MIN(HIST_PAL[Index]),HIST_PAL[DATE] <= dateselect,ALLEXCEPT(HIST_PAL,HIST_PAL[NO_PALETTE]))
Return
CALCULATE(SUM(HIST_PAL[CUMULATIF]),HIST_PAL[Index] = minindex)

 

 

 

For September 22nd 2021 it should be 612.

 

For Septembre 23td 2021 it should be 1052.

Thank you!
Here is the PBIX file:  https://www.dropbox.com/s/5eg1o2nng8loitp/LastValue.pbix?dl=0 

  • Anonymous's avatar
    Anonymous
    4 years ago

    Anonymous Your measures needs to sum up the across all distinct values of NO_PALETTE, like this:

     

    Qty(filter)_test = 
        SUMX(
            VALUES(HIST_PAL[NO_PALETTE]),
            var dateselect = SELECTEDVALUE(Dimdate[Date])
            var minindex = CALCULATE(MIN(HIST_PAL[Index]),HIST_PAL[DATE] <= dateselect,ALLEXCEPT(HIST_PAL,HIST_PAL[NO_PALETTE]))
            Return
            CALCULATE(SUM(HIST_PAL[CUMULATIF]),HIST_PAL[Index] = minindex)
        )

3 Replies

  • CNENFRNL's avatar
    CNENFRNL
    Icon for Community Champion rankCommunity Champion

    Tu peux corriger ta mesure comme ça,

     

    =
    VAR dateselect = SELECTEDVALUE( Dimdate[Date] )
    RETURN
        SUMX(
            VALUES( HIST_PAL[NO_PALETTE] ),
            VAR minindex =
                CALCULATE(
                    MIN( HIST_PAL[Index] ),
                    HIST_PAL[DATE] <= dateselect,
                    ALLEXCEPT( HIST_PAL, HIST_PAL[NO_PALETTE] )
                )
            RETURN
                CALCULATE( SUM( HIST_PAL[CUMULATIF] ), HIST_PAL[Index] = minindex )
        )
    

     

    mais elle marche pas assez efficacement; voici une mesure 30+ fois plus vite (selon DAXStudio, 15ms vs 500ms) bien qu'elle ait l'air bcp plus compliquée.

     

    =
    VAR dateselect = SELECTEDVALUE( Dimdate[Date] )
    RETURN
        SUMX(
            VALUES( HIST_PAL[NO_PALETTE] ),
            CALCULATE(
                SUM( HIST_PAL[CUMULATIF] ),
                KEEPFILTERS(
                    TOPN(
                        1,
                        CALCULATETABLE(
                            HIST_PAL,
                            HIST_PAL[DATE] <= dateselect,
                            ALLEXCEPT( HIST_PAL, HIST_PAL[NO_PALETTE] )
                        ),
                        HIST_PAL[Index], ASC
                    )
                )
            )
        )
    

     

  • Anonymous's avatar
    Anonymous
    Not applicable

    Anonymous Your measures needs to sum up the across all distinct values of NO_PALETTE, like this:

     

    Qty(filter)_test = 
        SUMX(
            VALUES(HIST_PAL[NO_PALETTE]),
            var dateselect = SELECTEDVALUE(Dimdate[Date])
            var minindex = CALCULATE(MIN(HIST_PAL[Index]),HIST_PAL[DATE] <= dateselect,ALLEXCEPT(HIST_PAL,HIST_PAL[NO_PALETTE]))
            Return
            CALCULATE(SUM(HIST_PAL[CUMULATIF]),HIST_PAL[Index] = minindex)
        )
    • Anonymous's avatar
      Anonymous
      Not applicable

      Thank you Anonymous and CNENFRNL . Your solutions works!