37
Help, My Reports Are Too Slow! Daina Tupule

Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status] "Done" AND [Measures].[Issues created]

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Help, My Reports Are Too Slow!

Daina Tupule

Page 2: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]
Page 3: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

On the road of increase query timeout

Page 4: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]
Page 5: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]
Page 6: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

What to look for

Best practices for reports

Calculation performance

If it is not enough

Community Days May 6, 2021

Page 7: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Is there a better solution?

Daina Tupule

Page 8: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

What to look for

Page 9: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

What I look for

Dimension combinations

on Rows

Large dimensions

Multiple selections on

Pages

Calculations

Page 10: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

What I look for

Dimension combinations

on Rows

Large dimensions

Multiple selections on

Pages

Calculations

Page 11: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

What I look for

Dimension combinations

on Rows

Large dimensions

Multiple selections on

Pages

Calculations

Page 12: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

What I look for

Dimension combinations

on Rows

Large dimensions

Multiple selections on

Pages

Calculations

Page 13: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

What I look for

Calculations

Dimension combinations

on Rows

Large dimensions

Multiple selections on

Pages

Page 14: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

What I look for

Count(Filter( Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status] <> "Done" AND [Measures].[Issues created] > 0))

Calculations on sets large dimensions

Calculations

Dimension combinations

on Rows

Large dimensions

Multiple selections on

Pages

Page 15: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Best practices for reports

Page 16: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Several dimensions on Rows

Page 17: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Project lead

Project Status Start date Release date

Project Status Assignee Created date …

Page 18: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Several dimensions on Rows

Page 19: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Several dimensions on Rows - Issues

Page 20: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Large dimensions

Page 21: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Large dimensions

Page 22: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Large dimensions

Page 23: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Large dimensions

Page 24: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Large dimensions

Page 25: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Multiple values selections on Pages

Open, In Progress, Confirmed, Waiting for support, Waiting for customer = 5 x calculations

Drill through issues > x all issues imported into the account

Page 26: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Multiple values selections on Pages

Page 27: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Calculation performance

Page 28: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Calculations on sets

Count(Filter( Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status] <> "Done" AND [Measures].[Issues created] > 0))

Page 29: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Calculation performance

Tuples and arithmetic operations

Other dimensions

Tuples Substitute calculations on sets whenever possible

Arithmetic operations Check if some arithmetic operations can give you the needed results

Use properties

([Measures].[Issues created],[Resolution].[(unresolved)])

([Measures].[Issues created], [Status].DefaultMember)-([Measures].[Issues created], [Status].[Done])

Page 30: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Calculation performance

Tuples and arithmetical operations

Other dimensions

Other dimensions Use other dimensions to minimize count of members that will be included in the calculation

Status > Resolution Time Any other dimension explicitly addressed in the calculation you would like to optimize

Use properties

Sum( Except( [Status].[Status].Members, [Status].[Done] ), [Measures].[Issues created])

Page 31: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Calculation performance

Tuples and arithmetical operations

Other dimensions

Optimize set by using properties as only filters

Use properties

Sum(Filter( Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status] <> "Done" AND DateInPeriod(

[Measures].[Issue created date],[Time].CurrentHierarchyMember)

), [Measures].[Issues created]))

Page 32: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

If it is not enough

Page 33: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

If it is not enough

Calculated JavaScript

custom fields

Custom hierarchies Build custom hierarchies on properties imported with additional data import Applicable for: Project, Sprint, any user dimension, more dimensions coming soon

Great as a substitute of multiple selections / calculated members

Points for consideration Account specific - should be defined in each account Easier to support and maintain different scenarios for one dimension with less impact on database size Some scenarios could be easier to prepare (excel file with values)

Custom hierarchies

Plan several accounts

Page 34: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

If it is not enough JavaScript custom fields

Build new dimensions and new measures

Great as a substitute of complex calculations

Points for consideration Admin is needed to define new fields The best option to import new measures More complex scenarios Option to extend data model Will impact database size (dimensions more than measures and dates)

Calculated JavaScript

custom fields

Custom hierarchies

Plan several accounts

Page 35: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

If it is not enough Overview

Many issues , overview reports, imported measures

Template accounts Define and maintain a set of approved reports for teams / projects

Actual data Limit data by Projects and JQL query to get small actual issue set for each team / project > use template reports

Calculated JavaScript

custom fields

Custom hierarchies

Plan several accounts

Page 36: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Make it a habit

Page 37: Help, My Reports Are Too Slow!...What I look for Count(Filter(Descendants([Issue].CurrentMember,[Issue].[Issue]), [Measures].[Issue status]  "Done" AND [Measures].[Issues created]

Thank you!