Data Copy in an ASO Application

For those of you familiar with Essbase, when creating an Essbase application there are two types available; BSO (Block storage) and ASO (Aggregate storage). Typically, BSO applications are used when the requirements involve complicated calculations, whereas ASO applications are used if the model contains large dimensions and does not require any complex calculations.

One of the main problems with ASO databases in the past was finding a way to perform calculations such as a standard data copy from one member to another – a task that is extremely simple in a BSO application. You see, unlike in BSO applications, ASO applications don't give you the ability to write and execute calculation scripts. However, there is a way round this which uses MaxL along with an external calculation script and a little bit of MDX.

Below illustrates a copy from scenario Actual to Forecast for months April to August. The MaxL Script is as follows:

execute calculation on database MyApp.MyDB with local script_file "D:\ActToFcst.csc"

POV "Crossjoin(Descendants([Base Currency], [Currency].Levels(0)),
Crossjoin({[Monthly]},
Crossjoin({[Apr],[May],[Jun],[Jul],[Aug]},
Crossjoin(Descendants([Company],[Company].Levels(0)),
Crossjoin(Descendants([Data Type],[Data type].Levels(0)),
Crossjoin(Descendants([Source], [Source].Levels(0)),
Crossjoin(Descendants([Book], [Book].Levels(0)),
Crossjoin({[Working]},
Crossjoin({[&CurrYear]},
Crossjoin(Filter(Descendants([Measures], [Measures].Levels(0)), NOT Measures.CurrentMember.Shared_Flag),
Crossjoin(Descendants([All CC],[Cost Centres].Levels(0)),
Descendants([All Projects],[Projects].Levels(0)) ))))))))))) "

SourceRegion "{[Actual],[Forecast]}";

 Where the calculation script ActToFcst.csc contains the function:
 [Forecast] := [Actual] ;
 
The POV works like a fix in a BSO calculation script, narrowing down the area that the calculation will act on. Here we must use multiple MDX Crossjoin functions to specify the cross-section of data which we require to be included in the data copy. This is probably the most complicated part of creating an ASO data copy – MDX Crossjoins can be a bit of a pain to handle!

Crossjoin Tip: If you come across an error due to your POV containing shared members, use the Filter() function to remove any shared members from your selection (as used above for the Measures dimension)

The SourceRegion is a set of members which are present in the calculation script formula. So in this case, because we are doing a direct copy from forecast to actual, the source region is only "{[Actual],[Forecast]}";

To kick off the data copy script, simply run the MaxL script from within EAS, using a batch script or through a business rule in Planning.

Comments

  1. Great post with unique information.This blog will really helpful for me to develop my skills in a right way.Thanks for sharing,keep update with your blogs.

    Website Design Company in Bangalore | Mobile App Development Companies in Bangalore | Website Development Company in Bangalore

    ReplyDelete

Post a Comment

Popular posts from this blog

Loading multi-period row data files using Data Management

Executing Smart View Retrievals using VBA

Loading Actuals from Fusion ERP Cloud to PBCS