Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
sam_hoccane
Helper I
Helper I

Calculating based on Previous Rows

Hi All, 

 

Data---> FILE

 

I have following querry: 

 

I  want to create a measure that can calculate future emission (i.e. Forecast =Y) with 15 Percent of increase.  To get the acquired furure results I want to take June total  emission from month of August as it considered as to peak  emission month. For Septemeber forecast, I would like to multiply with 15%  to August Emission value.  Smilarly for October forecast,   I multiply 15% with  Septemeber emission. 

sam_hoccane_0-1659712356662.png

 

I tried with following measure but it is not  giving acquired results. 

 

Thankyou in anticipation,

 

Forecast Emission with 15% Increase =
VAR CurrentEmission = SUM ( Data[Emission] )
VAR CurrentMonth = SELECTEDVALUE ( data[Year_Month] )
VAR CurrentForcast = SELECTEDVALUE ( Data[Forecast] )
VAR PreviousMonths = FILTER ( ALLSELECTED ( Data ), data[Year_Month] < CurrentMonth )
VAR PreviousN_Months = FILTER ( PreviousMonths, Data[Forecast] = "N" )
VAR PreviousN_Month = MAXX ( PreviousN_Months, data[Year_Month] )
VAR PreviousN_Emission = SUMX ( FILTER ( PreviousN_Months, data[Year_Month] = PreviousN_Month ), Data[Emission] )
VAR YearMonthOnly = DISTINCT ( SELECTCOLUMNS ( PreviousMonths, "@YearMonth", Data[Year_Month] ) )
VAR NumberOfY_Months = COUNTROWS ( FILTER ( YearMonthOnly, [@YearMonth] > PreviousN_Month && [@YearMonth] <= CurrentMonth ) ) + 1
VAR Result =
    IF (
        CurrentForcast = "N",
        CurrentEmission,
        PreviousN_Emission * POWER ( 1.15, NumberOfY_Months )
    )
RETURN
    Result
1 ACCEPTED SOLUTION
tamerj1
Super User
Super User

Hi @sam_hoccane 
Here is the sample file with the modification https://www.dropbox.com/t/w8M4gpY3GYZeSNKa

Comulative 30% Increase = 
SUMX ( 
    VALUES ( data[Year_Month] ),
    CALCULATE (
        VAR Percentage = 0.3
        VAR CurrentDate = MAX (  data[Date] )
        VAR CurrentForecast = SELECTEDVALUE ( data[Forecast] )
        VAR CurrentEmission = SUM ( data[Emission] )
        VAR SummaryTable = 
            CALCULATETABLE ( 
                SUMMARIZE ( 
                    Data, 
                    data[Year_Month], 
                    "@Date", MAX ( data[Date] ),
                    "@Forcast", SELECTEDVALUE ( data[Forecast] ),
                    "@Emission", SUM ( data[Emission] )
                ),
                ALLEXCEPT ( data, data[Travel Source], data[Manager] )
            )
        VAR NTable = FILTER ( SummaryTable, [@Forcast] = "N" )
        VAR YTable = FILTER ( SummaryTable, [@Forcast] = "Y" )
        VAR Last2NRecords = TOPN ( 2, NTable, [@Date] )
        VAR PenultimateNDate = MINX ( Last2NRecords, [@Date] )
        VAR PenultimateNEmission= MINX ( FILTER ( Last2NRecords, [@Date] = PenultimateNDate ), [@Emission] )
        VAR YTableBefore = FILTER ( YTable, [@Date] < CurrentDate )
        VAR Result =
            IF ( 
                CurrentForecast = "N",
                CurrentEmission,
                PenultimateNEmission * POWER ( 1 + Percentage, COUNTROWS ( YTableBefore ) )
            )
        RETURN
            Result
    )
)

View solution in original post

7 REPLIES 7
tamerj1
Super User
Super User

Hi @sam_hoccane 
Here is the sample file with the modification https://www.dropbox.com/t/w8M4gpY3GYZeSNKa

Comulative 30% Increase = 
SUMX ( 
    VALUES ( data[Year_Month] ),
    CALCULATE (
        VAR Percentage = 0.3
        VAR CurrentDate = MAX (  data[Date] )
        VAR CurrentForecast = SELECTEDVALUE ( data[Forecast] )
        VAR CurrentEmission = SUM ( data[Emission] )
        VAR SummaryTable = 
            CALCULATETABLE ( 
                SUMMARIZE ( 
                    Data, 
                    data[Year_Month], 
                    "@Date", MAX ( data[Date] ),
                    "@Forcast", SELECTEDVALUE ( data[Forecast] ),
                    "@Emission", SUM ( data[Emission] )
                ),
                ALLEXCEPT ( data, data[Travel Source], data[Manager] )
            )
        VAR NTable = FILTER ( SummaryTable, [@Forcast] = "N" )
        VAR YTable = FILTER ( SummaryTable, [@Forcast] = "Y" )
        VAR Last2NRecords = TOPN ( 2, NTable, [@Date] )
        VAR PenultimateNDate = MINX ( Last2NRecords, [@Date] )
        VAR PenultimateNEmission= MINX ( FILTER ( Last2NRecords, [@Date] = PenultimateNDate ), [@Emission] )
        VAR YTableBefore = FILTER ( YTable, [@Date] < CurrentDate )
        VAR Result =
            IF ( 
                CurrentForecast = "N",
                CurrentEmission,
                PenultimateNEmission * POWER ( 1 + Percentage, COUNTROWS ( YTableBefore ) )
            )
        RETURN
            Result
    )
)

@tamerj1  Thankyou so much for the help 🙂 

tamerj1
Super User
Super User

Hi @sam_hoccane 

please try

Comulative 30% Increase =
SUMX (
    VALUES ( data[Year_Month] ),
    CALCULATE (
        VAR Percentage = 0.3
        VAR CurrentDate =
            MAX ( data[Date] )
        VAR CurrentForecast =
            SELECTEDVALUE ( data[Forecast] )
        VAR CurrentEmission =
            SUM ( data[Emission] )
        VAR SummaryTable =
            CALCULATETABLE (
                SUMMARIZE (
                    Data,
                    data[Year_Month],
                    "@Date", MAX ( data[Date] ),
                    "@Forcast", SELECTEDVALUE ( data[Forecast] ),
                    "@Emission", SUM ( data[Emission] )
                ),
                ALLSELECTED ( data )
            )
        VAR NTable =
            FILTER ( SummaryTable, [@Forcast] = "N" )
        VAR YTable =
            FILTER ( SummaryTable, [@Forcast] = "Y" )
        VAR Last2NRecords =
            TOPN ( 2, NTable, [@Date] )
        VAR PenultimateNDate =
            MINX ( Last2NRecords, [@Date] )
        VAR PenultimateNEmission =
            MINX ( FILTER ( Last2NRecords, [@Date] = PenultimateNDate ), [@Emission] )
        VAR YTableBefore =
            FILTER ( YTable, [@Date] < CurrentDate )
        VAR Result =
            IF (
                CurrentForecast = "N",
                CurrentEmission,
                PenultimateNEmission
                    * POWER ( 1 + Percentage, COUNTROWS ( YTableBefore ) )
            )
        RETURN
            Result
    )
)

Hello @tamerj1 

 

It is not giving data for forecast months: 

 

sam_hoccane_1-1659724980655.png

 

@sam_hoccane 

Ok. Am on my way home. I'll fix it once I reach

tamerj1
Super User
Super User

Hi @sam_hoccane 
well, it wasn't easy. Please refer to the sample file wit the solution https://www.dropbox.com/t/cEbymwCwrT06CJz6

Comulative 30% Increase = 
SUMX ( 
    VALUES ( data[Year_Month] ),
    CALCULATE (
        VAR Percentage = 0.3
        VAR CurrentDate = MAX (  data[Date] )
        VAR CurrentForecast = SELECTEDVALUE ( data[Forecast] )
        VAR CurrentEmission = SUM ( data[Emission] )
        VAR SummaryTable = 
            CALCULATETABLE ( 
                SUMMARIZE ( 
                    Data, 
                    data[Year_Month], 
                    "@Date", MAX ( data[Date] ),
                    "@Forcast", SELECTEDVALUE ( data[Forecast] ),
                    "@Emission", SUM ( data[Emission] )
                ),
                ALL ( data )
            )
        VAR NTable = FILTER ( SummaryTable, [@Forcast] = "N" )
        VAR YTable = FILTER ( SummaryTable, [@Forcast] = "Y" )
        VAR Last2NRecords = TOPN ( 2, NTable, [@Date] )
        VAR PenultimateNDate = MINX ( Last2NRecords, [@Date] )
        VAR PenultimateNEmission= MINX ( FILTER ( Last2NRecords, [@Date] = PenultimateNDate ), [@Emission] )
        VAR YTableBefore = FILTER ( YTable, [@Date] < CurrentDate )
        VAR Result =
            IF ( 
                CurrentForecast = "N",
                CurrentEmission,
                PenultimateNEmission * POWER ( 1 + Percentage, COUNTROWS ( YTableBefore ) )
            )
        RETURN
            Result
    )
)

@tamerj1 : Thankyou so much for helping me in this...

 

Last question if use slicer of Manager and Travel Source on measure, it  is not giving desired results. how can I manuplate the above masure to satisfy this condition. 

 

sam_hoccane_1-1659723986154.png

 

 

Many Thanks,

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

November Power BI Update Carousel

Power BI Monthly Update - November 2025

Check out the November 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.