I have a fairly complex custom member, trying to calculate the average number of days from creation (or Estimated Start Date, if it exists) until a ticket is moved to the Released resolution. I am currently including only tickets with the REQUEST label, but I plan to change that to be only those with fixVersion not empty.
At the moment, the calculation is much lower than I would expect, so I know it’s going amiss somewhere.
Any help is appreciated!
Custom Member
-- created following an example ([Average days till resolution or period end])
NonZero(Avg(
Filter(
Descendants([Issue].CurrentMember,[Issue].[Issue]),
DateBeforePeriodEnd(
[Issue].CurrentMember.get('Created at'),
[Time].CurrentHierarchyMember)
AND( NOT DateBeforePeriodEnd(
[Issue].CurrentMember.get('Resolved at'),
[Time].CurrentHierarchyMember)
or
DateInPeriod(
[Issue].CurrentMember.get('Resolved at'),
[Time].CurrentHierarchyMember))
AND ([Issue].CurrentMember,[Label].[REQUEST]) > 0
),
Cache(
-- age of issues resolved during given period
CASE
WHEN DateInPeriod(
[Issue].CurrentMember.get('Resolved at'),
[Time].CurrentHierarchyMember)
AND ( [Measures].[Issues created], [Time].CurrentHierarchy.DefaultMember ) > 0
AND [Resolution].[Resolution].getMemberNameByKey([Issue].CurrentHierarchyMember.get('Resolution ID')) = 'Released'
THEN
CASE
WHEN NOT isEmpty([Measures].[Estimated Start Date])
AND [Resolution].[Resolution].getMemberNameByKey([Issue].CurrentHierarchyMember.get('Resolution ID')) = 'Released'
THEN
DateDiffDays([Issue].CurrentMember.get('Estimated Start Date'),
[Issue].CurrentMember.get('Resolved at'))
WHEN isEmpty([Measures].[Estimated Start Date])
AND [Resolution].[Resolution].getMemberNameByKey([Issue].CurrentHierarchyMember.get('Resolution ID')) = 'Released'
THEN
DateDiffDays([Issue].CurrentMember.get('Created at'),
[Issue].CurrentMember.get('Resolved at'))
END
-- age of open issues for all periods when issues were open
WHEN DateBeforePeriodEnd(
[Issue].CurrentMember.get('Created at'),
[Time].CurrentHierarchyMember)
AND NOT DateBeforePeriodEnd(
[Issue].CurrentMember.get('Resolved at'),
[Time].CurrentHierarchyMember)
AND ( [Measures].[Issues created], [Time].CurrentHierarchy.DefaultMember ) > 0
THEN
-- not current time period, age till end of period is calculated
CASE
WHEN DateCompare([Time].CurrentHierarchyMember.NextStartDate, Now()) < 0
THEN
CASE
WHEN NOT isEmpty([Measures].[Estimated Start Date])
THEN
DateDiffDays(
[Issue].CurrentMember.get('Estimated Start Date'),
[Time].CurrentHierarchyMember.NextStartDate
)
WHEN isEmpty([Measures].[Estimated Start Date])
THEN
DateDiffDays(
[Issue].CurrentMember.get('Created at'),
[Time].CurrentHierarchyMember.NextStartDate
)
END
ELSE
-- current time period, age till now is calculated
CASE
WHEN NOT isEmpty([Measures].[Estimated Start Date])
THEN
DateDiffDays(
[Issue].CurrentMember.get('Estimated Start Date'),
Now()
)
WHEN isEmpty([Measures].[Estimated Start Date])
THEN
DateDiffDays([Issue].CurrentMember.get('Created at'),
Now()
)
END
END
END)
))