- essbaseessbase.ru/uploads/aso/optimizing aso.pdfthe following is intended to outline our general...

37

Upload: others

Post on 17-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes
Page 2: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

<Insert Picture Here>

Optimizing ASO

Steve LiebermenschConsulting Technical Director

Page 3: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions.The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.

Page 4: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Agenda

• Dimension settings and usage– Compression– Accounts– Time

• MDX optimization• Materialization• Data load

Page 5: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Dimension Settings and UsageCompression

• Compression dimension is not mandatory, but helps performance

• The compression dimension is a dynamic dimension• Should be the column headers in a data load file• Ideal compression is achieved if the leaf level

member count is evenly divisible by 16

Page 6: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Dimension Settings and UsageAccounts

• Dynamic dimension• Allows for non additive unary operators• Required for time balance functionality• Expense flags are accomplished through UDAs and

member formulae• In the case of large GL type accounts dimensions

should consider storing the dimension

Page 7: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Dimension Settings and UsageAccounts

Must be a dynamic dimension due to “-”unary operator

Page 8: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Dimension Settings and UsageAccounts

Simplest hierarchy and allows for maximum stored aggregates. Leverages load rule setting

of sign flip on UDA. Requires the user to accept different signage of values.

Page 9: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Dimension Settings and UsageAccounts

Preserves original signage and allows for some aggregates to be stored

Page 10: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Dimension Settings and UsageTime

• Can make a good candidate for compression dimension

• Should be stored• Use multi-hierarchy dimension if formulae are

necessary• To-date formulae

– Prior to 9.3.1 best if performed in Time dimension– 9.3.1 and forward, best to use analytic dimension

Page 11: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Dimension Settings and UsageTime

• Use analytic dimension if you need perform time calculations like period to date sums, period over period comparisons

• Use AGGREGATE function if your period to date calculations need to take Time Balance tags into account

ORACLE CONFIDENTIAL

Page 12: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Agenda

• Dimension settings and usage• MDX optimization

– Data vs. meta data– Eliminate unnecessary functions– Simplify syntax– NonEmpty directive

• Materialization• Data load

Page 13: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MDX OptimizationMeta-data vs data

Performance difference between the following statements:

IIf(Scenario.CurrentMember = Actual,….)

Or

IIf(Is(Scenario.CurrentMember,Actual),….)

Page 14: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MDX Optimization

Goal is to calculate a products 3 month average Transactions contribution % to total 3 month average Transactions:

Page 15: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MDX Optimization

Round( ( ( ([Time].CurrentMember,[Products].CurrentMember,[Transactions]) +

([Time].CurrentMember.Lag(1),[Products].CurrentMember,[Transactions]) +

([Time].CurrentMember.Lag(2),[Products].CurrentMember,[Transactions]) ) /

(([Time].CurrentMember,Ancestor (Products.CurrentMember, Products.Generations(2)),[Transactions]) +

([Time].CurrentMember.Lag(1),Ancestor (Products.CurrentMember, Products.Generations(2)),[Transactions]) +

([Time].CurrentMember.Lag(2),Ancestor (Products.CurrentMember, Products.Generations(2)),[Transactions]) ) )

,4)

Page 16: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MDX Optimization

Round( ( ( ([Time].CurrentMember,[Products].CurrentMember,[Transactions]) +

([Time].CurrentMember.Lag(1),[Products].CurrentMember,[Transactions]) +

([Time].CurrentMember.Lag(2),[Products].CurrentMember,[Transactions]) ) /

(([Time].CurrentMember,Ancestor (Products.CurrentMember, Products.Generations(2)),[Transactions]) +

([Time].CurrentMember.Lag(1),Ancestor (Products.CurrentMember, Products.Generations(2)),[Transactions]) +

([Time].CurrentMember.Lag(2),Ancestor (Products.CurrentMember, Products.Generations(2)),[Transactions]) ) )

,4)

Remove unnecessary functions. Formatting should be left to the

reporting tool.

Page 17: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MDX Optimization

( ( ([Time].CurrentMember,[Products].CurrentMember,[Transactions]) + ([Time].CurrentMember.Lag(1),[Products].CurrentMember,[Transactions])

+ ([Time].CurrentMember.Lag(2),[Products].CurrentMember,[Transactions])

) / (([Time].CurrentMember,Ancestor (Products.CurrentMember,

Products.Generations(2)),[Transactions]) + ([Time].CurrentMember.Lag(1),Ancestor (Products.CurrentMember,

Products.Generations(2)),[Transactions]) + ([Time].CurrentMember.Lag(2),Ancestor (Products.CurrentMember,

Products.Generations(2)),[Transactions]) ) )

Avoid unnecessary references to CurrentMember. It is

assumed without explicitly using a function

Page 18: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MDX Optimization

( ( ([Time].CurrentMember,[Transactions]) + ([Time].CurrentMember.Lag(1),[Transactions]) + ([Time].CurrentMember.Lag(2), [Transactions]) ) / (([Time].CurrentMember,Ancestor (Products.CurrentMember,

Products.Generations(2)),[Transactions]) + ([Time].CurrentMember.Lag(1),Ancestor

(Products.CurrentMember, Products.Generations(2)),[Transactions]) +

([Time].CurrentMember.Lag(2),Ancestor (Products.CurrentMember, Products.Generations(2)),[Transactions]) ) )

Simplify formulae, no need to use 5 functions where 1 will

do. 3 CurrentMemberfunctions and 2 Lag

functions

Page 19: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MDX Optimization

Sum(LastPeriods(3),Transactions)/ Sum(LastPeriods(3),(Ancestor (Products.CurrentMember,

Products.Generations(2)),Transactions))

Don’t use a function where direct referencing can be

performed. In this model Gen 2 of the Products dimension

will always be the same member

Page 20: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MDX Optimization

Sum(LastPeriods(3),Transactions)/ Sum(LastPeriods(3),([All Merchandise],Transactions))

Page 21: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MDX Optimization

Case When NotIsEmpty(Sum(LastPeriods(3),Transactions)) Then

Sum(LastPeriods(3),Transactions)/ Sum(LastPeriods(3),

([All Merchandise],Transactions))End

Only perform calculation when data to support the math exists

Page 22: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MDX Optimization

Additionally you should break up the complex formula using an additional member:

Create a new member [Last 3 Month Transactions]Assign the formula:

Sum(LastPeriods(3),Transactions)

Then the new % Contribution formula becomes:NonEmptyMember [Last 3 Month Transactions]

Sum(LastPeriods(3),Transactions)/ Sum(LastPeriods(3),([All Merchandise],Transactions))

NonEmpty directive, coming in 11.1.1

Page 23: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Agenda

• Dimension settings and usage• MDX optimization• Materialization

– Query Hints– Default– Query Tracking– Size – Choose your own adventure/have it your way materialization

• Data load

Page 24: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Materiaization

• Query Hints• Default• Query Tracking• Size • Choose your own adventure/have it your way

materialization

Page 25: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MaterializationQuery hints

• On Dimension/Hierarchy

Page 26: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MaterializationQuery hints

• Dimensional intersections

Page 27: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MaterializationDefault

• In Analytic Administration Services

• Through Maxl– execute aggregate process on database “database name” ;

Page 28: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MaterializationQuery tracking based

• In Analytic Administration Services

• Through Maxlalter database “database name” enable query_tracking; MDX report definition;execute aggregate process on database “database name”

based on query_data;alter database “database name” disable query_tracking;

Page 29: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Materialization

• Results of aggregate selection– Default selection

• 26 views– Hierarchy option

• 24 views– Dimensional Intersection

• 24 views– Query Tracking

• 2 view– No views were shared amongst all 4 aggregate selection

processes– Only 2 views were shared between more than 2 selection

processes– 7 views were shared in total

Page 30: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MaterializationDatabase size

• In Analytic Administration Services

• Through Maxl– execute aggregate process on database “database name”

stopping when total_size exceeds “size factor”;

Page 31: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

MaterializationNumber of views

• In Analytic Administration Services

• Through Maxl– execute aggregate selection on database “database name”

selecting “number of views” views;

Page 32: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Materialization

• By default Aggregate Storage Option is parallel threaded with two threads, can use up to 8

• When loading incremental data, aggregate views are also updated

• Materialization scripts can be saved and reused to eliminate regeneration of query tracked results

• The database can be available during materialization without data consistency issues

Page 33: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Agenda

• Dimension settings and usage• MDX optimization• Materialization• Data load

– Behavior– Slice loading– Optimization

Page 34: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Data LoadBehavior

• Within a buffer duplicate records are additive irrelevant of load rule settings

• When committing the buffer it adheres to data load rule setting related to overwrite, add to, or subtract from

• Single threaded, can use DLTHREADS cfg settings but thorough testing should be performed

• Materialized views are updated as part of the data load process during an incremental update

Page 35: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Data LoadSlice loading

• Is the primary feature enabling Excel based lock and send and trickle feeding functionality

• Creates “subcubes” alongside the primary slice of the database

• Dynamic aggregations are performed across the necessary slices to provide query results

• Different materialized views might exist within a slice as compared to the primary slice of the database

Page 36: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

Data LoadOptimization

• Compression dimension should be across the load file• Consider removing aggregate views prior to an

incremental update of data• Data should be loaded as additive values• Multiple buffers can be used to parallel load the

database. Requires simultaneous Maxl processes to be executed

• Ignore Zeros and Missing values whenever possible, buffer setting

Page 37: - Essbaseessbase.ru/Uploads/Aso/Optimizing ASO.pdfThe following is intended to outline our general product direction. It is intended for information purposes

<Insert Picture Here>

Questions?????