For these issues, we want to ticket average aging (difference between Now()- Issue created), when we select “Total Row” then it should give the average aging of all the issues.
Hi @kasi.maddula ,
The best would be to create the calculated member in your Status dimension, so you could filter the report by other measures also (not only “Issues created”):
We had a similar request where we wanted to see the amount of time an issue spent “Blocked” per month. We worked with EasyBI to get the following solution:
Created a custom member [Transition Status].[Blocked Statuses] consisting of the “Blocked” Statuses:
Aggregate({
[Transition Status].[Active],
[Transition Status].[Awaiting Information],
[Transition Status].[Owned],
[Transition Status].[Awaiting Dependency],
[Transition Status].[Awaiting FI Assistance],
[Transition Status].[Blocked]
})
Created a custom measure [Measures].[Blocked Days] for reporting up to the report date for time in that status:
– Provided by EasyBI Support
Case WHEN [Measures].[Open Issues (not Closed)] > 0
AND
DateAfterPeriodEnd(
now(), [Time].CurrentHierarchyMember.PrevMember
)
THEN
Sum(
Filter(
Descendants([Issue].CurrentMember, [Issue].[Issue]),
DateBeforePeriodEnd(
[Issue].CurrentMember.get(‘Created at’),
[Time].CurrentHierarchyMember
)
AND
NOT DateBeforePeriodEnd(
[Issue].CurrentMember.get(‘Closed at’),
[Time].CurrentHierarchyMember
)
),
CASE WHEN
(
[Measures].[Issues created],
[Time].CurrentHierarchy.DefaultMember
)>0
THEN
CASE
–current period
WHEN DateInPeriod(Now(), [Time].CurrentHierarchyMember)
THEN
([Measures].[Days in transition status],[Transition Status].[Blocked Statuses],[Time].CurrentHierarchy.DefaultMember)
+
CASE WHEN
[Measures].[Issue status] matches “Active|Awaiting Information|Owned|Awaiting Dependency|Awaiting FI Assistance|Blocked” --again blocked statuses to match for current status
THEN
DateDiffDays(
[Measures].[Issue status updated date],
Now()
)
END
–current period ends
--previous periods
ELSE
Sum(--sum starts here
{ PreviousPeriods([Time].CurrentHierarchyMember),
[Time].CurrentHierarchyMember},
([Measures].[Days in transition status],[Transition Status].[Blocked Statuses])
) --sum ends here
+
Nonzero(
iif(
( --if blocked status present at the end of displayed month
[Measures].[Issues history],
[Transition Status].[Blocked Statuses]
)>0
AND
( --if blocked status present at the end of displayed month
[Measures].[Open Issues (not Closed)]
)>0
,
Datediffdays(
TimeStampToDate(MAX(
{PreviousPeriods([Time].CurrentHierarchyMember),
[Time].CurrentHierarchyMember},
DateToTimeStamp((
[Measures].[Transition to status last date],
[Transition Status].[Blocked Statuses]
))
))
--last date when blocked status set
,
[Time].CurrentHierarchyMember.NextStartDate --first date of next month
),0)
)
--previous period ends
END
END
)
END
We already had a measure for Open issues [Measures].[Open Issues (not Closed)] (Differed from EasyBI measure as we used closed rather than resolved dates for calculation:
–Copy of out of the box open issues using closed data rather
–than resolved data
CASE WHEN [Issue].CurrentMember.Level.Name <> ‘Issue’ THEN
Cache(
NonZero(Sum(PreviousPeriods([Time].CurrentHierarchyMember),
Cache([Measures].[Issues created]
- [Measures].[Issues closed])
))
[Measures].[Issues created]
[Measures].[Issues closed]
)
WHEN [Time].CurrentHierarchyMember IS [Time].CurrentHierarchy.DefaultMember
THEN NonZero([Measures].[Issues due])
ELSE
– optimized formula for drill through Issue
NonZero(IIF(
DateBeforePeriodEnd(
[Issue].CurrentMember.get(‘Created at’),
[Time].CurrentHierarchyMember) AND
NOT DateBeforePeriodEnd(
[Issue].CurrentMember.get(‘Closed at’),
[Time].CurrentHierarchyMember),
([Time].CurrentHierarchy.DefaultMember,
[Measures].[Issues created]),
0
))
END
used the 2 custom measures to Create a custom measure for the Average: