Trying to understand "Running velocity for 5 closed sprints" measure

Hello all … I am fairly new to eazyBI for Jira and am trying to understand the “Running velocity for 5 closed sprints” measure. From the definition, it should be the “average of resolved Story Points for the current sprint and 4 previous closed Sprints within a selected Project across all boards”.

I’ve created a report that shows where the columns are the “Running velocity for 5 closed sprints”, “Story Points resolved”, and “Sprint complete date” measures, I’ve got pages defined by project, and my row dimension is “Sprint”. I have selected a single project in the project pulldown within the report results, and I’ve selected “Sprint” under the dimension’s “All hierarchy level members” so that I am seeing a single row per sprint, regardless of board membership.

I am them sorting by sprint complete date, and I would think if I average the current and previous 4 completed sprints’ resolved story points values, I should get the same result as the “Running velocity for 5 closed sprints” measure. It’s close but doesn’t match exactly.

I imagine this has something to do with which sprints are being included vs not included in the “current sprint and 4 previous closed Sprints within a selected Project across all boards.” The project in question has its own set of sprints, but there are scattered issues from this project that are in other sprints for other teams.

Can someone shed some light on what I might be missing? Thank you!

-gene lewin

Can you paste the measure you’re using in here @genelewin to see how you’ve got it setup?

I’m using the same measure as you (I think) but I’ve noticed that if a Sprint has 0 Story Points resolved, it’s not counting that as a Sprint in the division…

See below … I wonder if perhaps it’s not respecting the project selection?

The formula for running velocity for 5 closed sprints is:
:::::::::::::::::::::::::::::::
CASE
WHEN
[Sprint].CurrentMember is [Sprint].DefaultMember
OR
– for closed sprints only
[Sprint].CurrentMember.getBoolean(‘Closed’) AND
NOT IsEmpty([Sprint].CurrentMember.get(‘Complete date’)) AND
[Measures].[Sprint Story Points committed] > 0
THEN
AVG(
Tail(
– filter last 5 closed sprints starting from current sprint
Filter(
Head(
Cache(ChildrenSet([Sprint].[All closed sprints])),
Rank([Sprint].CurrentMember,
Cache(ChildrenSet([Sprint].[All closed sprints]))
)
),
– only sprints with committed story points are retrieved
[Measures].[Sprint Story Points committed] > 0
), 5
),
[Measures].[Sprint Story Points completed]
)
END
:::::::::::::::::::::::::::::::

And … fwiw, when I bookmark specific sprints, the resolved story points and the running velocity value remains unchanged (which I suppose isn’t a surprise). So I think my question is how does the tail function determine what each previous sprint is? Is there a relationship between sprints that says “the sprint that preceded me was sprint XYZ” sort of thing?

Hi @genelewin

The Sprint dimension members that are taken into account in the “Running velocity for 5 closed sprints” are from the Sprint dimension calculated member “All closed sprints”. This calculated member orders all the sprints by their start dates. Also, it takes into account only the sprints that have “Sprint Story Points committed”. That could be the reason; the members don’t match precisely with the report you had set up.

Please read more about the Jira Software measures on our documentation page - https://docs.eazybi.com/eazybijira/data-import/data-from-jira-and-apps/jira-software-custom-fields#JiraSoftwarecustomfields-Sprintscopemeasures.

Kind regards,
Roberts // eazyBI support

We implemented this code however we ran across a situation where 1 of the 5 sprints does not have any committed stories so the the value is 0. This seems to return an Infiinity and won’t calculate. the code says > 0. We have tried >= 0 but it doesn’t help. How can we make this work where 1 (or more) sprints has no committed stories.