Forum Discussion

Aurimas's avatar
Aurimas
Frequent Visitor
5 years ago

Burndown Chart

Hello Everyone,

I am trying to create a burn down chart for our development sprints in Power BI. I have found few examples in forums on how to do that, but unfortunately I was not able to replicate those solutions due to difference of datasets. Usually people have nice tables which has columns with sprint days and progress by itself.

In my dataset there are only records of user stories with their estimates and logs.
Example:

The data which I have is per “User Story” worklog. Meaning if there are 4 times “time worked” logged, the same user story will appear 4 times. So for total sprint estimate I need to group user stories and only then sum Original Estimate column.

There might be different “Sprints” happening at once by different development teams.

7 Replies

    • Aurimas's avatar
      Aurimas
      Frequent Visitor

      Hi Greg_Deckler ,

       

      This is really helpful. I am trying to recreate as per your example. Yet I have two issues:
      1. My "Idealized Burndown" starting point does not match with total. It should in total have 378 hours, but have this result:
      2. Burndown is going in straight line.

      Note: Table is a calculated table to get unique estimates per items.

      Table = SUMMARIZE(Development,Development[Sprint ID], Development[Key],Development[Time Original Estimate],[Sprint Start Date], Development[Sprint End Date], "UniqueKey", Development[Sprint ID] & "-"& Development[Key])

       

      Idealized Burndown = VAR __Date = MAX('Date Range'[Date]) VAR __StartDate = MINX('Table','Table'[Sprint Start Date]) VAR __FinishDate = MAXX('Table','Table'[Sprint End Date]) VAR __TotalProjectHours = SUMX(ALL('Table'),'Table'[Time Original Estimate]) VAR __IdealHoursPerDay = DIVIDE( __TotalProjectHours, DATEDIFF(__StartDate,__FinishDate,DAY) + 1, 0 ) VAR __IdealConsumedHours = __IdealHoursPerDay * (DATEDIFF(__StartDate,__Date,DAY) + 1) RETURN IF( __Date < __StartDate - 1 || __Date > __FinishDate, BLANK(), __TotalProjectHours - __IdealConsumedHours )

       

      Burndown = VAR __Date = MAX('Date Range'[Date]) VAR __StartDate = MINX('Table','Table'[Sprint Start Date]) VAR __FinishDate = MAXX('Table','Table'[Sprint End Date]) VAR __TotalProjectHours = SUMX(ALL('Table'),'Table'[Time Original Estimate]) VAR __TotalConsumedHours = SUMX( FILTER( ALL(Development), Development[Worklogs Created] <= __FinishDate ), Development[Worklog Time Spent]) RETURN IF( __Date < __StartDate - 1 || __Date > __FinishDate, BLANK(), __TotalProjectHours - __TotalConsumedHours )


      Sample Data:

  • Aurimas , Not very clear.  Try

    Original Estimate Sum = sumx(summarize(Table, Table[Sprint ID], "_1", max(Table[Original Estimate])),[_1])
    time Logged = sum(Table[time Logged])

  • Aurimas , do you need more help on this. Can you share sample data and sample output in table format? Or a sample pbix after removing sensitive data.