cancel
Showing results for
Did you mean:

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Helper I

## How to get previous row value of a measure?

I have been stuck at this for quite some time now. I have a table in which I create measures. Length is a column here. survival proportion m1 is a measure which takes into account two other measures total patients m1 and finished patients m1. These are how measures are calculated.

Total Patients m1 =
VAR CurrentLength = SELECTEDVALUE(SDP_Patients[Length])
RETURN
CALCULATE(
DISTINCTCOUNT(SDP_Patients[RequestNumber]),
SDP_Patients[Length] >= CurrentLength,
ALLSELECTED(SDP_Patients))

and

Finished Patients m1 =
VAR CurrentLength = MAX(KM[Length])
VAR Result =
CALCULATE(
DISTINCTCOUNT(SDP_Patients[RequestNumber]),
SDP_Patients[Length] = CurrentLength && NOT(ISBLANK(SDP_Patients[ServiceEndDate])),
ALLSELECTED(SDP_Patients)
)
RETURN
IF(ISBLANK(Result), 0, Result)

and

survival proportion m1 = DIVIDE(([Total Patients m1] - [Finished Patients m1]),[Total Patients m1],0)

finally,

test1 =
VAR CurrentLength = MAX('SDP_Patients'[Length])
VAR CurrentValue = [survival proportion m1]

VAR PreviousRow =
TOPN (
1,
FILTER (
ALLSELECTED(SDP_Patients),
SDP_Patients[LENGTH] < CurrentLength

),
[Length], DESC
)
VAR PreviousValue =
MAXX ( PreviousRow, [survival proportion m1] )

RETURN
IF(
CurrentLength = 0,
CurrentValue, // Return the current value as is for the first row
PreviousValue

)

I have broken down my entire problem to this. I have tried every solution but no use. It just doesnt return previous value. My guess is that since its a measure thats why.

In the end I will be taking cummulative product. But I have to solve this issue before moving on to that because that doesnt work either.

Length is non unique in original table. this is a table visual

1 ACCEPTED SOLUTION
Super User

@fatimaarshd So, in theory something like this *should* work:

``````PV m1 =
VAR __Table =
SUMMARIZE(
ALLSELECTED('SDP_Patients'),
[Length],
"__TotalPatients", [Total Patients m1],
"__SurvivalProportion", [survival proportion m1]
)
VAR __Length = MAX('SDP_Patients'[Length])
VAR __PrevLength = __Length - 1
VAR __Result = MAXX( FILTER( __Table, [Length] = __PrevLength ), [__SurvivalProportion] )
RETURN
__Result``````

Become an expert!: Enterprise DNA
External Tools: MSHGQM
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
2 REPLIES 2
Super User

@fatimaarshd So, in theory something like this *should* work:

``````PV m1 =
VAR __Table =
SUMMARIZE(
ALLSELECTED('SDP_Patients'),
[Length],
"__TotalPatients", [Total Patients m1],
"__SurvivalProportion", [survival proportion m1]
)
VAR __Length = MAX('SDP_Patients'[Length])
VAR __PrevLength = __Length - 1
VAR __Result = MAXX( FILTER( __Table, [Length] = __PrevLength ), [__SurvivalProportion] )
RETURN
__Result``````

Become an expert!: Enterprise DNA
External Tools: MSHGQM
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Helper I

Thank you so much. It worked!!!!!!!!! Been stuck on this for a day.