1

Allocation by using calculation manager in PBCS. Dimension:
-Account
-Person
-Project

Allocate from:
Account001 -> No Person -> No Project = 100;
To:
Account001 -> Person A -> Project I = 20;
Account001 -> Person B -> Project II = 80;
By driver:
Driver -> Person A -> Project I = 2;
Driver -> Person B -> Project II = 8;

Are there any better ways than code below?

I tried the standard allocation function but allocated data does not have person dimension information.
Result was Account001 -> no Person -> Project I
instead of Account001 -> Person A -> Project I

FIX ({Entity},/*DIM:Year*/"FY19",/*DIM:Version*/"Working",/*DIM:Customer*/"No Customer",/*DIM:Period*/"Jun",/*DIM:HSP_View*/"BaseData",/*DIM:Scenario*/"Actual")                                            
  FIX (  /*DIM:Person*/@RELATIVE("Total Person",0))                                         
    FIX (    /*DIM:Project*/@RELATIVE("Total Project", 0))                                          
      /*STARTCOMPONENT:SCRIPT*/                                         
        SET CREATENONMISSINGBLK ON;                                     
      /*ENDCOMPONENT*/                                          
      /*STARTCOMPONENT:FORMULA*/                                            
      "A534001" = "534001"->"P000"->"No Project" * 100 / 100 * "Man-hour" / "Man-hour"->"Total Person"->"Total Project";                                            
      /*Project expense for one person = Total entity Expense * manhour of that person of that project / manhour of total person of total project */                                            
      /*ENDCOMPONENT*/                                          
    ENDFIX                                          
  ENDFIX                                                                                    
ENDFIX

Want to know if there are any better ways to achieve this. Many thanks.

mate00
  • 2,727
  • 5
  • 26
  • 34
vistanick
  • 11
  • 1
  • I think the @allocate function will suit your needs, but do check to see it's impact on your calculations in terms of performance as well. – Manish Sakpal Sep 25 '19 at 17:49

1 Answers1

0

Use the Essbase function @MDALLOCATE. You need to invest some time to study the documentation and get it running as required as is a complex function and all the point-of-views need to be set correct.

I recommend you do this as well:

  1. create SmartView sheets with your test set-up (tabs: allocate from, drivers, result)
  2. have a clear block all script, to ensure @MDALLOCATE is really creating blocks
  3. create a very small data set on which you can set your FIX
  4. iterate through calc script/ business rule to get it working

Process is:

  • run #2, send data from #1, run #3, check results in #1

Try to avoid "SET CREATEONMISSINGBLK ON;" as much as possible. I have seen this construction in allocations cause calculation times of 6 hours(!) with @MDALLOCATE it shortened to about 6 minutes.

Arthur
  • 1,692
  • 10
  • 14