Compare last sprint velocity on different projects

Greetings,
is there a way to obtain a deck with on X the last sprint velocity and Y the project names (or board names)?
kind regards

Hi @Mauro_Bennici,

To get the velocity of the last 5 closed Sprints from within each Board in the report, try creating a new calculated measure with the code below:

CASE WHEN [Sprint].CurrentMember.Level.Name = 'Board'
THEN
  Avg(
    Tail(
      -- filter last 5 closed sprints in the Board
      Order(
        Filter(
          ChildrenSet([Sprint].CurrentMember),
          -- for closed sprints only
          [Sprint].CurrentMember.getBoolean('Closed')
          AND
          NOT IsEmpty([Sprint].CurrentMember.get('Complete date'))
          AND
          -- only sprints with committed story points are retrieved
          [Measures].[Sprint Story Points committed] > 0
        ),
        [Sprint].CurrentMember.get('Start date'),
        BASC
      ),5
    ),
    [Measures].[Sprint Story Points completed]
  )
WHEN [Sprint].CurrentHierarchyMember.Level.Name = 'Sprint'
THEN
  val([Measures].[Sprint Story Points completed])
END

The report then could look similar to the one below:

Please have a look at our documentation page for more information on calculated measures and members - https://docs.eazybi.com/eazybijira/analyze-and-visualize/calculated-measures-and-members.

Best,
Roberts // support@eazybi.com

Greetings Robert,
Thanks for the kind response!

My struggle was mostly for the “different boards on the same report” part, I already managed to measure velocity also thanks to the default measures.
May I see the table version of the report you are relating to?
kind regards

@Mauro_Bennici

Here you go:

Best,
Roberts // support@eazybi.com

Ok I tried something:
I have a calculated member at sprint level that tells me what’s the last closed sprint, but I’d love it to tell me what’s the last closed sprint at board level.
If I use the one I have, it gives me the last closed sprint - in general.
How can I filter the last closed sprint by board?
thanks.

Hi @Mauro_Bennici,

Try the formula for a calculated measure below:

Case when
  [Sprint].Currentmember.Level.Name = 'Sprint'
Then
  Case WHEN
    [Sprint].CurrentMember.Name <> '(no sprint)'
  THEN
    NonZero(Rank(
      [Sprint].CurrentMember,
      Tail(
        Order(
          Filter(
            ChildrenSet([Sprint].CurrentMember.Parent),
            [Sprint].CurrentMember.getBoolean('Closed')
            AND
            [Measures].[Issues created] >0), 
          [Sprint].CurrentMember.get('Complete date'), BASC)
      ,1)
    ))
  End
Else
  [Measures].[Issues created] 
End 

It will display a “one” for the last Sprint closed in each Board. And the number of “Issues created” at the Board level. You can then filter the rows of the report by this measure and then remove it. Please have a look at our documentation page for more information on filtering the report rows - https://docs.eazybi.com/eazybijira/analyze-and-visualize/create-reports#Createreports-Orderandfilterrowsbymeasurevalues.

Have a look at a screenshot of a sample report:

And with the “Board” level on rows drilled into “Sprint” level members:

Best,
Roberts // support@eazybi.com

Greetings Robert,
thanks for the quick response!
I was looking for something at dimension level, because I’ll have to build a burndown chart and I should be able to filter pages to automatically select the last closed sprint…

@Mauro_Bennici,

Why can’t you use this measure with the Board level in pages and Sprints in rows?

It will always display a “one” for the last closed Sprint in a selected Board.

Best,

Maybe it’s me, but… :slight_smile:
The burndown report has days as row dimension not sprints, so I should measure the story points done for each day for the last closed sprint in a selected board.
Can I fix it by adding more row dimensions?
I.e. Sprint - Time on rows, filtering by boards on pages and the last closed measure=1?

With Time, a slight modification is necessary. Please look at the formula below:

Case when
  [Sprint].Currentmember.Level.Name = 'Sprint'
Then
  Case WHEN
    [Sprint].CurrentMember.Name <> '(no sprint)'
  THEN
    NonZero(Rank(
      [Sprint].CurrentMember,
      Tail(
        Order(
          Filter(
            ChildrenSet([Sprint].CurrentMember.Parent),
            [Sprint].CurrentMember.getBoolean('Closed')
            AND
            ([Time].CurrentHierarchy.DefaultMember,[Measures].[Issues created]) >0), 
          [Sprint].CurrentMember.get('Complete date'), BASC)
      ,1)
    ))
  End
Else
  [Measures].[Issues created] 
End

I altered the condition on [Measure].[Issues created] > 0 to be indifferent of the current Time dimension period. The report could look similar to the one below:

If you want a calculated member in the Sprint dimension, it would have to be defined for every Board. The calculated measure is a universal approach.

Best,

I see, I’m trying to learn as much as I can from your hints :slight_smile:
thanks very much for your help!

1 Like

Hello,
As far as I guessed, the modified condition you added made the [measures].[issues created] indifferent to the time period used, so it means - I think - that every Time dimension I use I’ll have the same “issues created” value based on the Sprint.currentmember element. Is it right?

Hi @Mauro_Bennici,

The condition ([Time].CurrentHierarchy.DefaultMember,[Measures].[Issues created])>0 looks for issues created in any period. The issues in the Sprint most likely are created before the Sprint starts. Without resetting the Time dimension context, the calculated measure would not display information inside the period the Sprint was active.

Also, the measure “Issues created” is necessary to tie the report context to the calculated measure - take into account other dimensions present in the report.

Best,