Multi-dimensional allocation reference in calc script is locking up EAS

I am trying to draft a calculation script that allocates 1 total number at a point of view that includes "Entity" "Product" and "Customer". This number is entered in at one entity, one customer, and one product. I have loaded allocation weights by entity, customer, and product to be used as the basis for allocating this number down to entity, customer, and product.
We have tried to use the @MDALLOCATE in a script as follows:
SET AGGMISSG ON;
SET UPDATECALC OFF;
SET CACHE HIGH;
SET CALCPARALLEL 3;
FIX("BU Version_1","Actual",&CurrFY,&CurMth)
"PL_AC_4502" = @MDALLOCATE ("PL_DP_1"->"PL_AC_4502", 3, @LEVMBRS ("Prod_Line",0),@LEVMBRS("Product",0),@LEVMBRS("Customer",0),"Abs_4502",,share);
ENDFIX
This locked up the EAS server everytime we tried it.
We decided to add an account to hold a calculated percentage for the allocation and tried the following calc script:
SET CACHE HIGH;
SET UPDATECALC OFF;
SET AGGMISSG ON;
SET CALCPARALLEL 3;
FIX ("FY10","Jan","BU Version_1","Actual",
@RELATIVE ("Entity",0),@RELATIVE ("Product",0), @RELATIVE ("Customer",0))
"Pct_Abs_4502"="Abs_4502",@LEVMBRS("Prod_Line",0),@LEVMBRS("TotCustomer",0),@LEVMBRS("TotProduct",0) / "Abs_4502"->"Prod_Line"->"TotCustomer"->"TotProduct";
ENDFIX
This also locked up the EAS server. Each time, it did not even finish the syntax check.
We have about 70 product numbers and about a dozen customer numbers with numbers in them. Can anyone suggest a modification that will allow either of these calc scripts to avoid locking up the servers?
Much appreciated in advance,
Rob

I just thought I would try to add a little more context to Glenn's response. A calculation on Essbase will step through every single member of every dimension by default. When you mention member "Abs_4502" in a calc script, you are not referencing ONLY "Abs_4502", you are also implying exactly one member from every other dimension in your database (every data value needs a member from every dimension. FIXes are there to limit which members of certain dimensions should be subject to your calculation.
The math you are doing to create a percentage should only reference one value in the numerator, and one value in the denominator. Your denominator is one value, but the numerator is undefined because it is referencing a range of member across three dimensions. I believe I understand what you are attempting here, but it is not necessary. Your FIX already explicitly states that the calculation will work across all the lev0 members of Entity, Product, and Customer. So, you don't need that in the math again. To restate Glenn's attempt...
/* Assumes Prod_Line is "Entity", TotCustomer is "Customer" , and TotProduct is "Product" member */
FIX ("FY10","Jan","BU Version_1","Actual",
@RELATIVE ("Entity",0),@RELATIVE ("Product",0), @RELATIVE ("Customer",0))
"Pct_Abs_4502" = "Abs_4502" / "Abs_4502"->"Prod_Line"->"TotCustomer"->"TotProduct";
ENDFIX
The very first calculation of this calc script is working on the first lev0 relative of "Entity", the first lev0 relative of "Product", and the first lev0 relative of "Customer", and divides the value in that intersection with the value at the "Prod_Line", "TotCustomer", and "TotProduct" intersection....which should be percentage (albeit probably very small...I'd warn against any rounding attempts). The fix then steps one by one through each of the lev0 members and does the same math.
You could step this up and go across all months in the FIX too, and it will step through all months, and calculate the percentages within each month.
Hopefully that helps a little.

Similar Messages

  • Outline Order, Calc Script Performance, Substitution Variables

    Hi All,
    I am currently looking in to the performance side.
    This is mainly about the calculation script performance.
    There are lot of questions in my mind and as it is said you can get the results only by testing.
    1. Outline order should be from least sparse to most sparse
    (other reason : to accomodate as many sparse members in to calculator cache) correct me if I am wrong
    2. Is Index entry created based on the outline order. For example I have outline order as Scenarios, Products, Markets then does my index entry be like scenario -> Products -> Markets ?
    3. Does this order has to match with the order of members in FIX Statement of calculation script?
    4. I have 3 sparse dimensions. P (150 members), M (8 members), V (20 members).
    I use substitution variables for these three in the calculation script. And these three are the mandotary things in my calculation script. Now when I see the fix statement, these three are the first 3 parameters of the fix statemtn and since I am fixing on a specific member, placing these three members as the first 3 sparse dimensions in the outline, ill it improve performance?
    In one way, I can say that a member from P, M,V becomes my key for the data.
    Theoritically if I think, may be it will...but in practical terms I don't see any of such thing.. Correct me If my thinking is wrong.
    One more thing, I have a calc script with say around 10 FIX statements and this P,M,V is being used in every FIX statemnts. Since my entire calculation will be only on one P, one M, one V. Can I put everything in one FIX at the beginning and exclude it from remaining FIX statememts?
    5. I have a lot of cross dimensional operations in my calc scripts for accounts dimension (500 + ) members.
    Is there a way to reduce these?
    6. My cube statistics..
    Cube size : 80 GB +
    Block Size : 18 KB (Approx)
    Block density : 0.03 . This is what I am more worried about. This really hurts me.
    This is one of the reason why my calculation time is > 7 hours and some times it is horrible when there is huge amount of data (it takes aound 20 + hours) for calculation.
    I would be looking forward for your suggestions.
    It would be really apprecialble if It is Ok to share your contact number so that I can get in touch with you. That could be of great help from your side.

    I have provided some answers below:
    There are lot of questions in my mind and as it is said you can get the results only by testing.
    ----------------------------You are absolutely right here but it helps to understand the underlying principles and best practices as you seem to understand.
    1. Outline order should be from least sparse to most sparse
    (other reason : to accomodate as many sparse members in to calculator cache) correct me if I am wrong
    ----------------------------This is one reason but another is to manage disk I/O during calculations. Especially when performing the intial calculation of a cube, the order of sparse dimensions from smallest to largest will measurably affect your calc times. There is another consideration here though. The smallest to largest (or least to most) sparse dimension argument assumes single threading of the calculations. You can gain improvements in calc time by multi-threading. Essbase will be able to make more effective use of multi-threading if the non-aggregating sparse dimensions are at the end of the outline.
    2. Is Index entry created based on the outline order. For example I have outline order as Scenarios, Products, Markets then does my index entry be like scenario -> Products -> Markets ?
    ----------------------------Index entry or block numbering is indeed based on outline order. However, you do not have to put the members in a cross-dimensional expression in the same order.
    3. Does this order has to match with the order of members in FIX Statement of calculation script?
    ----------------------------No it does not.
    4. I have 3 sparse dimensions. P (150 members), M (8 members), V (20 members).
    I use substitution variables for these three in the calculation script. And these three are the mandotary things in my calculation script. Now when I see the fix statement, these three are the first 3 parameters of the fix statemtn and since I am fixing on a specific member, placing these three members as the first 3 sparse dimensions in the outline, ill it improve performance?
    --------------------------This will not necessarily improve performance in and of itself.
    In one way, I can say that a member from P, M,V becomes my key for the data.
    Theoritically if I think, may be it will...but in practical terms I don't see any of such thing.. Correct me If my thinking is wrong.
    One more thing, I have a calc script with say around 10 FIX statements and this P,M,V is being used in every FIX statemnts. Since my entire calculation will be only on one P, one M, one V. Can I put everything in one FIX at the beginning and exclude it from remaining FIX statememts?
    --------------------------You would be well advised to do this and it would almost certainly improve performance. WARNING: There may be a reason for the multiple fix statements. Each fix statement is one pass on all of the blocks of the cube. If the calculation requires certain operations to happen before others, you may have to live with the multiple fix statements. A common example of this would be calculating totals in one pass and then allocating those totals in another pass. The allocation often cannot properly happen in one pass.
    5. I have a lot of cross dimensional operations in my calc scripts for accounts dimension (500 + ) members.
    Is there a way to reduce these?
    -------------------------Without knowing more about the application, there is no way of knowing. Knowledge is power. You may want to look into taking the Calculate Databases class. It is a two day class that could help you gain a better understanding of the underlying calculation principles of Essbase.
    6. My cube statistics..
    Cube size : 80 GB +
    Block Size : 18 KB (Approx)
    Block density : 0.03 . This is what I am more worried about. This really hurts me.
    This is one of the reason why my calculation time is > 7 hours and some times it is horrible when there is huge amount of data (it takes aound 20 + hours) for calculation.
    ------------------------Your cube size is large and block density is quite low but there are too many other factors to consider to simply say that you should make changes based solely on these parameters. Too often we get focused on block density and ignore other factors. (To use an analogy from current events, this would be like making a decision on which car to buy solely based on gas mileage. You could do that but then how do you fit all four kids into the sub-compact you just bought?)
    Hope this helps.
    Brian

  • Allocating via Calc Script

    I’m attempting to allocate some information to a lower level of detail via a calc script. I've hit a few snags. The cube has 9 dimenstions:
    Accounts
    Time Period
    Reinsurance
    Distribution
    Company
    Product
    SubAccount (or issue year)
    Budget Center
    Years
    Under accounts we have an account, APE, that we’ll be utilizing to allocate percentages. We load APE to bottom level Company, SubAccount & Product but we do not have it at the BudgetCenter level (just loaded at a generic member). Also under Accounts we have D909100, which we load percentages to at bottom level for Company & BudgetCenter. What we’re trying to do is allocate the percentages we load in D909100 in their Budget Centers & Company down to the SubAccount & Product level based on APE numbers as drivers. The allocation account code is S909100. Any suggestions would be great as what I'm calculating now in the script isn't bringing me back any data.
    Here's the basic thing I'm attempting to do w/in the script:
    SET CLEARUPDATESTATUS OFF;
    SET UPDATECALC OFF ;
    SET CACHE HIGH;
    FIX("DecYTD","2008", "D-900",@IDESCENDANTS ("Company"),@IDESCENDANTS ("Subaccount"),
    @IDESCENDANTS ("Product"),@IDESCENDANTS ("BudgetCenter"))
         "S909100" = ("APE" / "APE" -> "Subaccount" -> "Product") * ("D909100" -> "SubAccount" -> "Product";
    ENDFIX

    Are you getting any correct results? Generally if you have a block creation issue you usually see a case where some members have the correct results and other members don't. Usually some of the blocks exist and you get this mixed match of some members right and others missing, that is clear block creation issue problem and as other posts have pointed out some solutions, I won't. If you are not getting any results at all, anywhere, then you are probably not referencing things properly, which is not uncommon with allocations when you have a lot of dimensions.
    First, are all the members in your fix statement, stored level 0 members? For instance "DecYTD", maybe it is, but I wonder if that is a calculated member and maybe you should be fixed on "Dec" (depends on how your cube is set up).
    Also you are fixing on IDESCENDANTS() for your results. That is going to take an awfully long time. Might be quicker to fix on level 0 and then roll up the results. Could also help you pinpoint more accurately where the problem is. (unless you have a specific reason for allocating at all levels, I would stay away from that.
    I also have concerns about the fact that you are fixed on IDESCENDANTS of BudgetCenter, but you state that you do not load data to all level 0 members of BudgetCenter, just a generic member. It would seem you need to specify that generic member in your equation, or at the very least, aggregate BudgetCenter prior to allocation and then reference BudgetCenter in your cross dimensional specifications.
    Try to visualize how these intersections are happening as your allocations process. You are fixed on IDESCENDANTS of most dimensions, but then in your equation you are not referencing all your dimensions. Therefore Essbase is going to dynamically use members relative to the particular block it has in memory at the time. I think you need to tighten up you equation to ensure you are referencing cells that have data in them. Use adhoc queries to retrieve different data sets and you will see that a lot of times there is no data.

  • How to reference current ICP in calc script?

    Hello Everyone,
    I am working on an HFM calc script. I am trying to assign the current ICP member to a variable. I attempted this using the following line of code:
    POV_ICP = HS.ICP.MemberFromID(HS.ICP.IDFromMember(""))
    I don't receive any error messages, but I don't seem to be populating the POV_ICP variable either.
    Your help is greatly appreciated!
    Chris

    Ha ha... Good one.
    I came back to post A solution and low and behold - you arrived at the same...
    You've probable realized that the POV_ICP was only ever going to reference the ICP_None account under any condition.
    Glad to hear you're back on track - G'Luck
    Public Const WriteToFilePath = "C:\Documents and Settings\Admin\My Documents\!WRITEtoFILE" 'Will write log to app server you are currently logged on to. Need to ensure this path exists on each app server
    Sub WriteToFile(txtStringToWrite)
    On Error Resume Next
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Dim fso, f
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile("C:\Documents and Settings\DemoUser\My Documents\!WRITEtoFILE\RulesLog.txt", ForAppending, True)
    f.WriteLine txtStringToWrite & " " & Now()
    f.Close
    On Error GoTo 0
    End Sub
    'CALCULATE
    SUB Calculate()
    'Set current POV members
    POV_YEAR = HS.Year.Member
    POV_PERIOD = HS.Period.Member
    POV_SCENARIO = HS.Scenario.Member
    POV_ENTITY = HS.Entity.Member
    POV_VALUE = HS.Value.Member
    'Variables
    vPeriodNum = Hs.Period.Number()
    vPeriod = HS.Period.Member()
    vScenario = Hs.Scenario.Member()
    vYear = Hs.Year.Member()
    vEntity = Hs.Entity.Member()
    vValue = Hs.Value.Member()
    vEntisBase = HS.Entity.IsBase("","")
    IF vEntisBase = TRUE AND (vValue = "<Entity Currency>" or vValue = "<Entity Curr Adjs>" or vvalue = "[Elimination]") THEN
    'Check for value in ICP
    SET DataUnit = HS.OpenDataUnit("")
    lNumItems = DataUnit.GetNumItems
    FOR i = 0 TO lNumItems-1
    'Get the next item from the dataunit     
    CALL DataUnit.GetItem(i, strAccount, strICP, strCustom1, strCustom2, strCustom3, strCustom4, dData)           
    CALL WriteToFile(POV_SCENARIO & " " & POV_YEAR & " " & POV_PERIOD & " " & POV_ENTITY & " " & POV_VALUE & " " & (strAccount & " " & strICP & " " & strCustom1 & " " & strCustom2 & " " & strCustom3 & " " & strCustom4 & " " & dData))
         IF strAccount = "X" THEN
         'Do Nothing
         ElseIf dData <> "0" THEN
    ''      ElseIf dData = "1" THEN
         END IF
         NEXT
    END IF
    END SUB
    This taken from the Rules.txt file...
    Actual 2007 Jan EntityCashPool <Entity Currency> [ACashPool] WI [None] [None] [None] [None] 555555 2/1/2011 11:33:22 PM
    Actual 2007 Jan EntityCashPool [Elimination] [ACashPool] WI [None] [None] [None] [None] -555555 2/1/2011 11:33:22 PM
    Actual 2007 Jan EntityCashPool [Elimination] ICRecPayDiff WI [None] [None] [None] [None] 555555 2/1/2011 11:33:23 PM

  • An error ocurred while running the specified calc script. Check the log...

    Hi,
    I get the following error when I use the "Mass Mllocate" of hyperion planning (11.1.1.3) , specifically when i try to use "Spread Type" and select "Relational Spread".
    I check the log for details, i see the following messages:
    [Mon Mar  5 17:34:18 2012]Local/TCM/VtaCto/admin/Info(1013162)
    Received Command [Calculate] from user [admin]
    [Mon Mar  5 17:34:18 2012]Local/TCM/VtaCto/admin/Info(1200481)
    Formula for member [FY11] will be executed in [CELL] mode
    [Mon Mar  5 17:34:18 2012]Local/TCM/VtaCto/admin/Error(1200315)
    Error parsing formula for [FIX STATEMENT] (line 24): invalid object type
    [Mon Mar  5 17:34:18 2012]Local/TCM/VtaCto/admin/Error(1012001)
    Invalid Calc Script syntax [
    FIX ("Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic","42300007","CC_054","CIA_063","PPTO","TRABAJO","S_241","S_251","S_252","S_253","S_254","S_255","S_259","S_260","S_227","S_228","S_229","S_230","S_231","S_232","S_233","S_234...]
    [Mon Mar  5 17:34:18 2012]Local/TCM/VtaCto/admin/Error(1200421)
    Error encountered on or after line [25]
    [Mon Mar  5 17:34:18 2012]Local/TCM/VtaCto/admin/Info(1020055)
    Spreadsheet Extractor Elapsed Time : [0] seconds
    [Mon Mar  5 17:34:18 2012]Local/TCM/VtaCto/admin/Info(1020082)
    Spreadsheet Extractor Big Block Allocs -- Dyn.Calc.Cache : [0] non-Dyn.Calc.Cache : [0]
    But i can not identify which calculation is referenced and that I understand is what is failing.
    Could guide me about that would have to check to find what is generating the error.
    Thanks in advance!!!

    Hi,
    One problem is that I can not identify the script because it was not created by me, as I understand this calc is implicit in planning, only runs when you select the option "mass allocate".
    The published extract was obtained from the log of the application in which the calculation is running, this was extracted from essbase directory that hosts the application.
    Hector Ortega

  • Populating ADF Table from Multi-Dimensional Array

    Hello!
    I'm trying to populate an ADF table from a multi-dimensional array.
    Let's say that my array is
    String [] [] myArr = new String [3][5].
    On my page backing bean, I have a private attribute called tmpArr like this...
    String [] [] tmpArr;
    ...which I will initialize later after I know the proper dimensions. The dimensions will come from a multimap that contains a key and and another array (for the key's value) containing values for the key. So once I know the dimensions I initialize my array with...
    tmpArr = new String [x][y] where x and y are the dimensions (counters).
    Now I have my multidimension array. On an jsp page I have an ADF table, and I'm setting the value for the table to the array (the table's value property is bound to the backing bean's tmpArr attribure).
    Like so:
    <af:panelForm id="availableOptions"
    binding="#{myBackingBean.availableOptionsValues}">
    <af:table emptyText="No items were found" rows="10"
    value="#{myBackingBean.tmpArr}" var='myArr'>
    Now I need to know how to do the following:
    1) Set the table's columns based on the number of attributes on the array.
    2) Set the table's rows based on the array's length.
    3) Set each table cell value to values on the array's 2nd dimension. I'm assuming that ADF takes care iterating through the array, and that I should do something like...
    <af:outputText value="#{myArr[][0]}"/>
    <af:outputText value="#{myArr[][1]}"/>
    etc...
    However, this isn't working...
    javax.faces.el.ReferenceSyntaxException: myArr[][0]
    ...bla bla bla...
    Was expecting one of:
    <INTEGER_LITERAL> ...
    <FLOATING_POINT_LITERAL> ...
    <STRING_LITERAL> ...
    "true" ...
    "false" ...
    "null" ...
    "not" ...
    "empty" ...
    <IDENTIFIER> ...
    Is there a blog or resource (article, book, etc) that shows how this is done? Anyone has done this and would like to share how?
    Thank you.

    This is in fact possible. I'm not sure about the "best practice" around doing this but there is a couple of ways to do this.
    You can either create a managed bean then right click on it and use the wizard to create a data control or you can do it as per below
    The a table will convert an array into a collection.
    Once you have created an array and generated the accessors in a bean you can then reference the mutli-dimensional array from a table as per below.
    <af:table value="#{pageFlowScope.PageBean.sessionArr}" var="row" rowBandingInterval="0" id="t1" varStatus="status">
    <af:column sortable="false" headerText="col1" id="c1">
    <af:outputText value="#{pageFlowScope.PageBean.sessionArr[status.index][0]}" id="ot1"/>
    </af:column>
    </af:table>
    String [][] sessionArr = new String[5][2];
    public void setSessionArr(String[][] sessionArr) {
    this.sessionArr = sessionArr;
    public String[][] getSessionArr() {
    sessionArr[0][0]="rice";
    sessionArr[1][0]="water";
    return sessionArr;
    EDIT: For either of the above methods the managed bean must have a scope of pageFlow or longer.
    Cheers,
    Aaron
    Edited by: Aaron Rapp on Oct 6, 2011 3:28 PM

  • Cloning multi-dimensional arrays

    I am working on this program of mine and really need some help since I am completely stuck, the thing is that I am trying to clone a multi-dimensional array, I have tried with a simple array and that worked fine, but not with the multi-dimensional. Like this:
    int[] initialSquareValues3 = {1,2,3};
    int[] squareValues3 = initialSquareValues3.clone();
    System.out.println(initialSquareValues3[0]);
    System.out.println(squareValues3[0]);
    squareValues3[0] = 3;
    System.out.println(initialSquareValues3[0]);
    System.out.println(squareValues3[0]);
    Will give the output "1 1 1 3", just what i want. While this:
    int[][] initialSquareValues2 = {{1,2,3}, {4,5,6}, {7,8,9}};
    int[][] squareValues2 = initialSquareValues2.clone();
    System.out.println(initialSquareValues2[0][0]);
    System.out.println(squareValues2[0][0]);
    squareValues2[0][0] = 3;
    System.out.println(initialSquareValues2[0][0]);
    System.out.println(squareValues2[0][0]);
    Will give the output "1 1 3 3" where "squareValues2" only seems to be a reference to the same data as the original "initialSquareValues2"
    So the question is simply: How do i clone a multi-dimensional array?
    I'm running Java SE 5.0 (1.5.0) and the code is run inside the contructor in a class extending JPanel.

    No need to explicitly do any copying of elements except as part of deepening the clone.
        public int[][] cloneIntArrays(int[][] array)
            // Create shallow clone
            int[][] clonedArray = array.clone();
            // Deepen the shallow clone
            for (int index = 0; index < clonedArray.length; index++)
                clonedArray[index] = clonedArray[index].clone();
            return clonedArray;
        }

  • FDM Cannot Access Calc Script

    We use FDM to load data to Essbase and then run a script after export to Aggregate the data using Vlaidation Entities in FDM. We wrote a new Agg Script and so I changed the Validation entity from CalcALL to CALCCMA and now I get the below error.
    Error: Essbase API Procedure: [EsbCalcFile] Threw code: 1030214 - 1030214 - [Tue Aug 03 13:25:25 2010]XXXXX/PLANNING/IncStmt/admin/Error(1030214)
    User [admin] cannot access calc script: CALCCMA
    The script is in the same folder as the old one. What is also strange is that when I try to change back the Script to CalcALL in the FDM valdiation entity I get an error as well. I checked all the integration settings and they are correct. I checked every script in FDM and asearched the adapter XML and found no references to the CalcALL script. I can't figure out where else the script would be referenced in FDM or if I need to change something on the Essbase side.

    I just read the ReadMe and here is the relevant part:
    Essbase Security Requirements
    Some FDM tasks require the user to have certain security privileges for Essbase. The following table outlines the tasks and Essbase privileges required.
    Perform a consolidation (assigning a Validation Entity to the FDM location).     
    Add Calc privilege (ESB_PRIV_CALC) to the active database
    I'm assuming I will need a DBA to check this. The funny thing is that this was working before perfectly fine and then I changed the script in the validation entity and got the error. When I changed it back to the original script that worked I recive the same error. I was not involved in the implementation so I don't know how this was set up.

  • Unable to Declare a Temporary Variable in Calc Script

    We are using Hyperion System 9 BI+ Analytic Administration Services. 9.2.03.0.44
    I am trying to declare a temporary variable in a calculation script.
    We have found several guides and examples in the support documentation that give us a step by step instruction on how to 1.) declare the variable, then 2.) Assign a value.
    Example:
    /* Declare the variable */
    VAR TotalAllocDept;
    /* Baseline Fix */
    FIX ("FY10","Jan","BU Version_1", "Actual", "NoProd", "NoCust")
    /* Assign a value to the variable */
    TotalAllocDept = ("Alloc_HR"+"Alloc_IT"+"Alloc_FIN");
    ENDFIX
    /* Allocate overhead based on Total Alloc Dept Variable */
    FIX ("FY10","Jan","BU Version_1", "Actual", "NoProd", "NoCust")
    "Alloc_5xSS" = @ALLOCATE("Alloc_Overhead","Account", TotalAllocDept,, share);
    ENDFIX
    However, when we try to check the syntax, we are given various error messages such as:
    Error parsing FIX STATEMENT "invalid object type" and
    "Invalid member name" and
    Invalid Calc Script syntax.
    Can anyone suggest some techniques that we can try or alternative ways of entering the text to make it possible for us to use temporary variables?

    A variable must be declared within a calc member block and can only exist for the scope of that block.
    This would work (not that you would necessarily want it)"
    /* Allocate overhead based on Total Alloc Dept Variable */
    FIX ("FY10","Jan","BU Version_1", "Actual", "NoProd", "NoCust")
    "Alloc_5xSS"
    TotalAllocDept = ("Alloc_HR""Alloc_IT""Alloc_FIN");
    "Alloc_5xSS" = @ALLOCATE("Alloc_Overhead","Account", TotalAllocDept,, share);
    ENDFIX
    Regards,
    Cameron Lackpour

  • Is it possible to have a many to many calc script equation?

    Hi All,
    I'm thinking there has got to be an easy way to do this - but I've tried a bunch of different ways, and I've only been getting error messages.
    What I want to do is perform an allocation based on head count for a few dozen accounts. The allocation method will be the same for each account, and I wanted to write this in a single line rather than have dozens of lines, one for each account.
    For Example, the following works correctly for me ( Takes Total indirect salaries loaded to "Region Items" and allocates based on headcount loaded to each child of "Operations")
    FIX("Budget", @CHILDREN("Operations"))
    "Indirect Employee Salaries"
    = "Region Items"->"Indirect Employee Salaries" * "Office Staff - Employees" / "Operations"->"Office Staff - Employees";
    ENDFIX
    Because this allocation will be repeated for each account, I would like to have something similar to this:
    FIX("Budget",@CHILDREN("Operations"))
    @CHILDREN("Indirect")
    = "Region Items"->@CHILDREN("Indirect") * "Office Staff - Employees" / "Operations"->"Office Staff - Employees";
    ENDFIX
    However this change to the command gives me "Calc Script Command is Incomplete" warnings.

    You can do this with a "switch" on the fix etc.
    FIX(@CHILDREN("Indirect") ,@CHILDREN("Operations"))
    "Budget"= "Region Items"->@CURRMBR(Accounts) * "Office Staff - Employees" / "Operations"->"Office Staff - Employees";
    ENDFIX
    You will need to check the performance of this, especially if Budget is sparse - although it would remove create block issues.
    You might also need to enclose the "CurrMbr" section in a SUMRANGE to validate, but it is a starter for you.
    Hope this helps
    Andy King
    www.analitica.co.uk

  • HPCM: Calc Script Deployment Error: java.lang.indexoutofboundsexception: In

    I am trying to deploy the allocation calc scripts in HPCM and ran into the indexoutofboundsexception. Does anyone know how I resolve this?
    I have successfully deployed the calculation database. This is version 11.1.1.2.
    Cheers,
    Below is the relevant section of the hpm.log file.
    2009-04-07 21:02:06,645 [Thread-16] ERROR com.hyperion.profitability.business.integration.ces.jobs.ProcessCalcscriptsJob: Error processing calc scripts
    com.hyperion.profitability.common.ProfitabilityRuntimeException: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
    at com.hyperion.profitability.data.dao.AllocationDAOImpl.loadAllocations(AllocationDAOImpl.java:129)
    at com.hyperion.profitability.business.mdb.deployment.calcscriptgeneration.CalcScriptGenerationHelper.getInterCellLevelAllocations(CalcScriptGenerationHelper.java:145)
    at com.hyperion.profitability.business.mdb.deployment.calcscriptgeneration.CalculationScriptGenerator.generateCalcScripts(CalculationScriptGenerator.java:397)
    at com.hyperion.profitability.business.service.GenerateCalcScript.generateCalcScript(GenerateCalcScript.java:49)
    at com.hyperion.profitability.business.service.ServiceFacade.calcScriptGenerate(ServiceFacade.java:724)
    at com.hyperion.profitability.business.integration.ces.jobs.ProcessCalcscriptsJob.start(ProcessCalcscriptsJob.java:47)
    at com.hyperion.profitability.business.integration.ces.TaskHandler$AgentThread.run(TaskHandler.java:128)
    Caused by: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
    at java.util.ArrayList.RangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at com.hyperion.profitability.data.dao.AllocationDAOImpl.extractAllocationDriver(AllocationDAOImpl.java:403)
    at com.hyperion.profitability.data.dao.AllocationDAOImpl.extractAllocationDriver(AllocationDAOImpl.java:352)
    at com.hyperion.profitability.data.dao.AllocationDAOImpl.loadAllocations(AllocationDAOImpl.java:91)
    ... 6 more

    I am working on first profitability application creation. I have performed the following steps till now:
    1. Creating Dimension Library for the Profitability Application. (I haven't put any details in the AllocationType Dimension)
    2. Validate and Deploy the Profitability Application.
    3. Created Staging Table (HPM_STG_STAGE, HPM_STG_ASSIGNMENT...) in Database. These are blank staging tables.
    My question is:
    1. How the data load happens in the Profitability Application.
    2. After creating stages, does it get populated when you create stages? How are you going to populate the same.
    3. Are you able to open the application in Essbase? I can see this through Shared Services but am unable to open the same in Essbase.
    Let me know if you have done things differently than this.

  • Calc scripts are running low

    Hi All,
    Few of our calc cripts are runnig low for EPM applications.
    Its happening like some of the calc scripts are running fine..while a few other are running slow.
    Can you ugget what thing needed to be checked
    Thanks

    Hi,
    The version is not mentioned.
    Hope the below tuning methods are helpful:
    1. Check that compression settings are still present. In EAS, expand the application and database. Right-click on the database > Edit > Properties > Storage tab. Check that your "Data compression" is not set to "No compression" and that "Pending I/O access mode" is set to "Buffered I/O". Sometimes the compression setting can revert to "no compression", causing the rapid growth of the data files on disk.
    2. On the Statistics tab, check the "Average clustering ratio". This shoud be close to 1. If it is not, restructure you database, by right-clicking on it and choosing "Restructure...". This will reduce any fragmentation caused by repeated data import and export. Fragmentation will naturally reduce performance over time, but this can happen quite quickly when there are many data loads taking place.
    3. Check the caches and block sizes.
         a.Recommended block size: 8 to 100Kb
         b.Recommended Index Cache:
              Minimum=1 meg
              Default=10 meg
              Recommendation=Combined size of all ESS*.IND files if possible; otherwise as large as possible                     given the available RAM.
         c.Recommended Data File Cache:
              Minimum=8 meg
              Default=32 meg
              Recommendation=Combined size of all ESS*.PAG files if possible; otherwise as large as possible           given the available RAM, up to a maximum of 2Gb.
              NOTE this cache is not used if the database is buffered rather than direct I/O (Check “Storage”           tab). Since all Planning databases are buffered, and most customers use buffered for native           Essbase applications too, this cache setting is usually not relevant.
         d. Recommended Data Cache:
              Minimum=3 meg
              Default=3 meg
              Recommendation=0.125 * Combined size of all ESS*.PAG files, if possible, otherwise as large as           possible given the available RAM.
    A good indication of the health of the caches can be gained by looking at the “Hit ratio” for the cache on the Statistics tab in EAS. 1.0 is the best possible, lower means lower performance.
    4. Check system resources:
    Recommended virtual memory setting (NT systems): 2 to 3 times the RAM available. 1.5 times the RAM on older systems.
    Recommended disk space:
    A minimum of double the combined total of all .IND and .PAG files. You need double because you have to have room for a restructure, which will require twice the usual storage space whilst it is ongoing.
    Please see the below document for reference:
         Improving the Performance of Business Rules and Calculation Scripts (Doc ID 855821.1)
    -Regards,
    Priya

  • Calc script question

    hi ,
    i have 4 dimensions
    Time
    ......Jan08
    ......Feb08
    ......mar08
    Market
    .....north
    .....south
    product
    .....p1
    .....p2
    measures
    ....number
    I have a data for the record
    Jan08 north p1 number 100
    can we do calc script to get the above value for all records where ever the p1 presents
    like
    feb08 north p1 number 100
    Mar08 north p1 bumber 100
    Time north p1 bumber 100
    jan08 south p1 number 100
    feb08 south p1 number 100
    mar08 south p1 number 100
    mar08 south p1 number 100
    Time south p1 number 100.........................
    ......................................

    There are a number of alternatives here, but you haven't really provided enough information to tell us what you are trying to do.
    Are you wanting to spread the input to all Time periods, all Markets, all Products, all Measures, or, as I suspect, to the measures based on the product code? If Product "p1" has a group of measures that are being loaded separately by Time/Market, the spread is to measures based on product. Your description lacks the boundaries applied to the spread, and doesn't link any dimensions to the products directly, only through the subsequent note do you hint that "p1" goes to a number of measures, and "p2" goes to a different set of measures.
    If this is the case, then the @MEMBER formula seems to be the right answer: @MEMBER(@CONCATENATE(@SUBSTRING(@NAME(@CURRMBR(product),1,2 ), "00")))
    The function above will return the value from measure "100" for product "p1", "200" for product "p2", etc..., to use it, you would need to put the formula on a member that would be a static reference in your Time or Market dimension -- unless that's a dynamic part as well, again -- you need to refine your requirements to yield any meaningful answer.
    From your description, it may be the other way around that you want to go... from Measure "101" and any product, do you want the value from "p1"->"100", or (as I suspect) from Product "p1" and any measure, do you want the value from "p1"->"100"?

  • HI John: Advise for Business Rule or Calc Script

    Hi John,
    I need your Advice regarding Business Rule as earlier i took all ur advice seriously and also succeeded; This is toughest area for me.
    1) Any useful document which help me to understand Business Rule apart from HBR admin pdf ?
    1) Any Blog/Source/PDF/PPT especially for Planning Business Rule ?
    Thanks for any Help.
    Regards
    N Kumar

    Hi,
    Well business rules are really just calc scripts with a few additional features.
    So to understand business rules a good place to start is looking at calc script functions and commands, the essbase technical reference includes details on all this :- http://download.oracle.com/docs/cd/E10530_01/doc/epm.931/html_esb_techref/techref.htm
    If you get stuck on calc scripts then the essbase forum is also a good place to ask for advice as there are many experts on there.
    I have not seen many sources for information relating to just business rules.
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • Calc Script runs slow one day and fast the next?

    We are on Essbase 11.1.2.1. When we run calc scripts to load our actuals and run some allocation scripts, the difference in running time for the same exact script is very different day to day. One day three hours the next 45 minutes. Our servers are just for Essbase. We are on Windows 2008 R2. Has anyone else run into this or have any idea how we could figure out the reason for this. Thanks.

    Thanks.  In that case, I would try to grab the cube statistics - especially number of upper-level and input blocks, compression ratio and fragmentation (in EAS you can only see one of the two fragmentation statistics, 'Average Clustering Ratio', not 'Average Fragmentation Quotient') before each run, just to see if they're varying wildly.  Also, if your calc scripts log summary information (is there a SET MSG command in them?  If not you could try SET MSG SUMMARY) then Essbase will write high-level statistics on how much work was done to the application log.
    You can see which cubes are loaded (and consuming memory) in the EAS treeview - if they have a check (tick) mark they are loaded.  But you can also see current activity by right-clicking on the server in the EAS treeview and selecting Edit | Sessions.   That will show whether there are other operations (loads, calcs, reports, restructures etc) occurring at the same time.
    If none of the above give any clues and this is a virtual box (or you have SAN storage) you really will need someone who understands your infrastructure to help.
    I'm assuming these are BSO cubes, by the way!

Maybe you are looking for

  • Adding Windows folders to iTunes library - 2 copies of song

    Having some trouble figuring out how to import preexisting mp3's into the iTunes library. The mp3's are ripped from my own CD collection using Windows Media Player. For discussion let's say I have 50 mp3's in a folder I created called iPod1. I go to

  • VDI 3.1 action on card removal setting

    We are implementing VDI3.1 sunrays at our call centre. We use virtual center as our back end desktop host and we have come across an issue with the action on card removal setting. Desktops are windows xp sp3 with vdi 3.1 client. We have upgraded all

  • Can I watch real time tv on Apple TV .

    Can I watch real time tv on my Apple TV.

  • 1366x768 Resolution Missing on Thunderbolt Display

    I've updated my MBP to Mavericks but I haven't needed to change the screen resolutions often. This changed when I installed Parallels, which made use of the system-available resolution settings to create its own set of virtual resolutions. This cause

  • Financial reportin,Interactive reporting and web analysis

    Hi, Could anyone help me in what kind of reports exactly generates by the above 3 tools.How we will generate reports using financial reporting.i mean to say what process we will follow . In a financial domain project , what we will do exactly with th