Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! It's time to submit your entry. Live now!
I have an opportunity header table, that stores the latest stage, and I will ultimately want to analyze opportunity cycle time (duration per stage) by owner, territory.
| OpportunityId | StageName | Owner | Territory |
| 1 | 4 .Closed Won | 10 | T1 |
| 2 | 3 .Negotiation | 11 | T2 |
| 3 | 2 .Diligence | 12 | T1 |
I also have a opportunity history table, that has the timestamp for each stage:
| OpportunityId | CreatedDate | Stage Name | Stage # |
| 1 | 2/26/2020 | 1 .Targeting | 1 |
| 1 | 2/27/2020 | 2 .Diligence | 2 |
| 1 | 2/28/2020 | 3 .Negotiation | 3 |
| 1 | 2/29/2020 | 3 .Negotiation | 3 |
| 1 | 3/20/2020 | 4 .Closed Won | 4 |
| 1 | 3/23/2020 | 4 .Closed Won | 4 |
| 1 | 3/31/2020 | 5 .Grow / Sustain | 5 |
| 2 | 4/3/2020 | 1 .Targeting | 1 |
| 2 | 4/5/2020 | 2 .Diligence | 2 |
| 2 | 4/10/2020 | 3 .Negotiation | 3 |
| 3 | 1/5/2020 | 1 .Targeting | 1 |
| 3 | 1/15/2020 | 2 .Diligence | 2 |
How do I go about calculating the average stage duration, which later I want the flexilble to slice by owner, territory?
Thank you so much!
NM
Solved! Go to Solution.
@nanma94 try measure below and here is the result.
Days between Stages =
VAR __oppyId = SELECTEDVALUE ( Oppy[OpportunityId] )
VAR __Stage = MAX ( 'Oppy Detail'[Stage #] )
VAR __StageDate = MAX ( 'Oppy Detail'[CreatedDate] )
VAR __prevStage = MAX ( __Stage - 1, 1 )
VAR __prevStageDate =
CALCULATE (
MAX ( 'Oppy Detail'[CreatedDate] ),
ALL ( 'Oppy Detail' ),
Oppy[OpportunityId] = __OppyId,
'Oppy Detail'[Stage #] = __prevStage
)
RETURN DATEDIFF( __prevStageDate, __StageDate, DAY )
Would appreciate Kudos 🙂 if my solution helped.
Subscribe to the @PowerBIHowTo YT channel for an upcoming video on List and Record functions in Power Query!!
Learn Power BI and Fabric - subscribe to our YT channel - Click here: @PowerBIHowTo
If my solution proved useful, I'd be delighted to receive Kudos. When you put effort into asking a question, it's equally thoughtful to acknowledge and give Kudos to the individual who helped you solve the problem. It's a small gesture that shows appreciation and encouragement! ❤
Did I answer your question? Mark my post as a solution. Proud to be a Super User! Appreciate your Kudos 🙂
Feel free to email me with any of your BI needs.
@Cortana I'm also confused what you are referring too, if you can provide more details how you get to 11 days, it would help.
Subscribe to the @PowerBIHowTo YT channel for an upcoming video on List and Record functions in Power Query!!
Learn Power BI and Fabric - subscribe to our YT channel - Click here: @PowerBIHowTo
If my solution proved useful, I'd be delighted to receive Kudos. When you put effort into asking a question, it's equally thoughtful to acknowledge and give Kudos to the individual who helped you solve the problem. It's a small gesture that shows appreciation and encouragement! ❤
Did I answer your question? Mark my post as a solution. Proud to be a Super User! Appreciate your Kudos 🙂
Feel free to email me with any of your BI needs.
Look at the created date of stage 4. The opportunity entered stage 4 on 20th March and It entered stage 5 on 31st March. So this opportunity stays 11 days in stage 4, right?
Hi,
Please show the exact result that you are expecting in a simple table.
@nanma94 which date to pick when oppy has same stage twice, like in your example, oppy #1 has two closed won stages on different dates
Subscribe to the @PowerBIHowTo YT channel for an upcoming video on List and Record functions in Power Query!!
Learn Power BI and Fabric - subscribe to our YT channel - Click here: @PowerBIHowTo
If my solution proved useful, I'd be delighted to receive Kudos. When you put effort into asking a question, it's equally thoughtful to acknowledge and give Kudos to the individual who helped you solve the problem. It's a small gesture that shows appreciation and encouragement! ❤
Did I answer your question? Mark my post as a solution. Proud to be a Super User! Appreciate your Kudos 🙂
Feel free to email me with any of your BI needs.
@parry2k Thank you for looking into this. Yes, It is a data quality issue (I wanted to highlight but forgot to mention) , which I am thinking I will pick the min of earlier stage and max of later stage to get the duration.
I am going to come back report after I try your solution out. Thank you so much in advance.
@nanma94 try measure below and here is the result.
Days between Stages =
VAR __oppyId = SELECTEDVALUE ( Oppy[OpportunityId] )
VAR __Stage = MAX ( 'Oppy Detail'[Stage #] )
VAR __StageDate = MAX ( 'Oppy Detail'[CreatedDate] )
VAR __prevStage = MAX ( __Stage - 1, 1 )
VAR __prevStageDate =
CALCULATE (
MAX ( 'Oppy Detail'[CreatedDate] ),
ALL ( 'Oppy Detail' ),
Oppy[OpportunityId] = __OppyId,
'Oppy Detail'[Stage #] = __prevStage
)
RETURN DATEDIFF( __prevStageDate, __StageDate, DAY )
Would appreciate Kudos 🙂 if my solution helped.
Subscribe to the @PowerBIHowTo YT channel for an upcoming video on List and Record functions in Power Query!!
Learn Power BI and Fabric - subscribe to our YT channel - Click here: @PowerBIHowTo
If my solution proved useful, I'd be delighted to receive Kudos. When you put effort into asking a question, it's equally thoughtful to acknowledge and give Kudos to the individual who helped you solve the problem. It's a small gesture that shows appreciation and encouragement! ❤
Did I answer your question? Mark my post as a solution. Proud to be a Super User! Appreciate your Kudos 🙂
Feel free to email me with any of your BI needs.
Hello @parry2k .
If I get it correctly, you are calculating stage duration, right? I mean the total time it takes in each stage.
If so, then for the first opportunity the total days for staying in stage 4 would be 11 days. But it's not showing that. I am confused. Can you help to understand that?
I've had a calculated column that works to average by stage. But this measure provides more flexibility. Thank you so much!
@nanma94 Glad I could help.
Subscribe to the @PowerBIHowTo YT channel for an upcoming video on List and Record functions in Power Query!!
Learn Power BI and Fabric - subscribe to our YT channel - Click here: @PowerBIHowTo
If my solution proved useful, I'd be delighted to receive Kudos. When you put effort into asking a question, it's equally thoughtful to acknowledge and give Kudos to the individual who helped you solve the problem. It's a small gesture that shows appreciation and encouragement! ❤
Did I answer your question? Mark my post as a solution. Proud to be a Super User! Appreciate your Kudos 🙂
Feel free to email me with any of your BI needs.
The Power BI Data Visualization World Championships is back! It's time to submit your entry.
| User | Count |
|---|---|
| 49 | |
| 43 | |
| 36 | |
| 33 | |
| 30 |
| User | Count |
|---|---|
| 138 | |
| 118 | |
| 59 | |
| 59 | |
| 56 |