Decreasing computing time for cycle time measure

Hi,

I am looking for a way to decrease calculation time for Epics lead time of issues with the following constrains:

  1. Exclude issues with cycle time < 3h (because the transitions were not done in time)
  2. Exclude the top 15% of epics with longest lead time (because they aggregate issues and irrelevant)
  3. Include only specific statuses in calculation (for example: “Development” and “Validation”)

The current measure looks like that:
IIF(
[Time].CurrentHierarchyMember is [Time].CurrentHierarchy.DefaultMember,
([Measures].[Workdays in transition status],
[Transition Status].[Epic CycleTime] --new calculated member
)
/
[Measures].[Issues closed],
NonZero(Avg(
BottomPercent(
Filter(
Descendants([Issue].CurrentMember, [Issue].[Issue]),
DateInPeriod(
[Measures].[Issue closed date],
[Time].CurrentHierarchyMember)
),55,
NonZero(([Measures].[Workdays in transition status],
[Transition Status].[Epic CycleTime], --new calculated member
[Time].CurrentHierarchy.DefaultMember))) ,
NonZero(([Measures].[Workdays in transition status],
[Transition Status].[Epic CycleTime], --new calculated member
[Time].CurrentHierarchy.DefaultMember))
)
)
)

While, [Transition Status].[Epic CycleTime] is an aggregation for statuses:
Aggregate(
{
[Transition Status].[Development],
[Transition Status].[Validation]
}
)

And I still need to implement the first constrain for <3h.

This calculation takes way too long on some of the reports and I was wondering if you have recommendations for simplifying it to increase the loading times.

Thanks in advance.

Hi @ebn

Welcome to eazyBI community.

The computing time sometimes can be decreased by implementing pre-calculated custom fields (calculated during data import using Javascript in advanced settings) but that might not work for all the cases. This depends very much on the use-case.

In your case you could try creating a pre-calculated field assuming you always look through the whole history of an issue (regardless how “Time” dimension is used in the report context) to find the time in two statuses regardless.

I imagine this as a Javascript that goes through each issue changelog (all status changes) to calculate the time issue spent in two statuses and then you could import this result as new measure.
But this measure would not be universal for all reports, as results are calculated only for the Issues - it means you can’t split them by adding more dimensions to your report.

Unfortunately, we don’t have a Javascript example to share to help you with the specific calculation.

But you could try get familiar with some of the Javascript examples here:
https://docs.eazybi.com/eazybijira/data-import/custom-fields/javascript-calculated-custom-fields

Martins / eazyBI support