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

Compete to become Power BI Data Viz World Champion! First round ends August 18th. Get started.

Reply
drbr
Helper II
Helper II

Calculate measure start/initial date for last 3 occured events/values

I've been struggling with how to dynamically calculate measure with date output of the last 3 values that occur on specific dates. The measure should output dates as simulated on the image.
Any help would be very much appreciated.
I need to solve it with measure, so no calculated columns.
Beware: it's not an easy one😁

 

tGfe0tT

1 ACCEPTED SOLUTION
drbr
Helper II
Helper II

I've managed id to do it with a measure. I will still do some tweaking to the code, but the concept is clear and in the end, it was not that hard🙂

oE4uPNP

Measure =
VAR Selecteddate_ = SELECTEDVALUE(T[Date])
VAR CountPositiveDates_ = CALCULATE(COUNTROWS(T), DATESBETWEEN(T[Date],DATE(2000,1,1),Selecteddate_),T[Value]>0)
VAR TargetCount_ = CountPositiveDates_ - 2 //use n-1 for proper segments
VAR TmpTable_ = SUMMARIZE(ALL(T),T[Date],"Check",IF(SUM(T[Value])>0,CALCULATE(COUNTROWS(T), DATESBETWEEN(T[Date],DATE(2000,1,1),T[Date]),T[Value]>0),BLANK()))

RETURN
SUMX(FILTER(TmpTable_,[Check] = TargetCount_),[Date])

View solution in original post

3 REPLIES 3
drbr
Helper II
Helper II

I've managed id to do it with a measure. I will still do some tweaking to the code, but the concept is clear and in the end, it was not that hard🙂

oE4uPNP

Measure =
VAR Selecteddate_ = SELECTEDVALUE(T[Date])
VAR CountPositiveDates_ = CALCULATE(COUNTROWS(T), DATESBETWEEN(T[Date],DATE(2000,1,1),Selecteddate_),T[Value]>0)
VAR TargetCount_ = CountPositiveDates_ - 2 //use n-1 for proper segments
VAR TmpTable_ = SUMMARIZE(ALL(T),T[Date],"Check",IF(SUM(T[Value])>0,CALCULATE(COUNTROWS(T), DATESBETWEEN(T[Date],DATE(2000,1,1),T[Date]),T[Value]>0),BLANK()))

RETURN
SUMX(FILTER(TmpTable_,[Check] = TargetCount_),[Date])

amitchandak
Super User
Super User

@drbr , Create two new columns and try

 

rank = rankx(filter(table, table[value]=1]),[Date],,asc,dense)


new column =
var _1 = Table[rank]
return
maxx(filter(Table, Table[rank] =_1-2 ),Table[Date])

Share with Power BI Enthusiasts: Full Power BI Video (20 Hours) YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube

@amitchandak  thank you very much. I replied soon after your reply. Unfortunately and I don't know why my answer was not posted. Firstly, thank you for your answer. I guess you missed the part, that I am limited only to measures, so no calculated columns at all
Do you or anyone have any ideas in this context?

Helpful resources

Announcements
July PBI25 Carousel

Power BI Monthly Update - July 2025

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

August 2025 community update carousel

Fabric Community Update - August 2025

Find out what's new and trending in the Fabric community.