Backlog health: count of issues without story points


#1

I am trying to measure/assess/report on the health of the backlog. One desired metric is the count of issues without story points.

I don’t see this readily available, and I haven’t been able to create a calculated member to do it (the equivalent of the JQL “Story Points” is EMPTY). I also don’t seem to be able to find issues that have estimates (which would let me do some subtraction). All of my attempts seem to fail on a syntax error (anything involving the word “filter”) or return all issues or return some subset of issues that doesn’t make sense to me.

[Measures].[Open issues] and [Measures].[Story points created] seem to be doing what I would expect.

Some of the things that I have tried:

  • [Measures].[Open issues], IsEmpty([Measures].[Story Points created])
  • [Issue].CurrentHierarchyMember, ([Issue].CurrentHierarchyMember.get(‘Story Points’) > 0)
  • [Issue].CurrentMember, ([Measures].[Story Points created] is null)

Any help/direction would be greatly appreciated!


#2

Hi @viviane,

To get a count of issues without story points, you can build a calculation as a count of all Issues created minus issues with story points (for it you may use a hidden measure Issues with Story Points created):

[Measures].[Issues created] - [Measures].[Issues with Story Points created]

Similarly, you can get a count of resolved issues without story points, this time using measures Issues resolved, and hidden measure Issues with Story Points resolved:

[Measures].[Issues resolved] - [Measures].[Issues with Story Points resolved]

Based on those calculations and using the formula of Open issues as a template, you may build “Open issues without Story Points” like this

CASE WHEN [Issue].CurrentMember.Level.Name <> 'Issue' THEN
  Cache(
    NonZero(Sum(PreviousPeriods([Time].CurrentHierarchyMember),
      Cache(
        ([Measures].[Issues created] - [Measures].[Issues with Story Points created])
        - ([Measures].[Issues resolved] - [Measures].[Issues with Story Points resolved]) )
    ))
    + ([Measures].[Issues created] - [Measures].[Issues with Story Points created])
    - ([Measures].[Issues resolved]- [Measures].[Issues with Story Points resolved])
  )
WHEN [Time].CurrentHierarchyMember IS [Time].CurrentHierarchy.DefaultMember
THEN 
  ([Measures].[Issues created] - [Measures].[Issues with Story Points created])
  - ([Measures].[Issues resolved] - [Measures].[Issues with Story Points resolved])
ELSE
  -- optimized formula for drill through Issue
  NonZero(IIF(
      DateBeforePeriodEnd(
        [Issue].CurrentMember.get('Created at'),
        [Time].CurrentHierarchyMember) AND
      NOT DateBeforePeriodEnd(
        [Issue].CurrentMember.get('Resolved at'),
        [Time].CurrentHierarchyMember) AND
      IsEmpty([Issue].CurrentHierarchyMember.get('Story Points')),
    ([Time].CurrentHierarchy.DefaultMember,
      [Measures].[Issues created]),
    0
  ))
END

Best,
Zane / support@eazyBI.com


#3

Thank you, Zane. Those hidden measures for Issues with Story Points created and Issues with Story Points resolved are priceless.

Is there a listing of all of the hidden measures?


#4

eazyBI generates a lot of measures when importing a custom field (which is also Story Points). The documentation describes principles of what measures get created for custom fields, but no the list as users could chose to import or not to import custom field.

I am with you on this one; it would improve eazyBI usability if you and other users could find all hidden measures in the documentation or eazyBI measure library. We have some ideas on how to improve this. Meanwhile, you may check principles what measures are created for custom fields: https://docs.eazybi.com/eazybijira/data-import/custom-fields

Best,
Zane / support@eazyBI.com