Planning Analytics

Planning Analytics

Get AI-infused integrated business planning

 View Only
Expand all | Collapse all

ForceReevaluationOfFeedersForFedCellsOnDataChange use

  • 1.  ForceReevaluationOfFeedersForFedCellsOnDataChange use

    Posted Tue October 15, 2024 08:09 AM

    When using ForceReevaluationOfFeedersForFedCellsOnDataChange along with condition feeders, I am currently encountering an issue where data loading becomes extremely slow after applying ForceReevaluationOfFeedersForFedCellsOnDataChange. However, I need to use condition feeders during the feeding process. In this case, do you have any good suggestions or important points I should be aware of?

    samples :

    ['A'] =if(Elisanc('Dim1','ele1',!Dim1)=1,DB('CubeB', !Dim1, !Dim2, 'B'),continue) ;

    feeders;

    [B]=>(if(Elisanc('Dim1','ele1',!Dim1)=1,'CubeA',''),!Dim1, !Dim2, 'A');



    ------------------------------
    manyi sun
    ------------------------------


  • 2.  RE: ForceReevaluationOfFeedersForFedCellsOnDataChange use

    Posted Wed October 16, 2024 09:54 AM

    My #1 suggestion is to never use that parameter. There are are very few cases where you actually want feeders to reevaluate that often. Feeders by their very nature are dynamic and evaluate when. 

    1. A numeric cell on the left hand side of a feeder definition goes from 0 to non-zero.
    2. A string cell on the left hand side of a feeder definition change value
    3. A cell on the left hand side of a feeder definition becomes fed, regardless of the value it contains.

    Enabling that parameter is the cause for the TI slowness. Instead of using conditional statements you could use attributes and hierarchies to manage the relationship between A and B.



    ------------------------------
    Ryan Clapp
    ------------------------------



  • 3.  RE: ForceReevaluationOfFeedersForFedCellsOnDataChange use

    Posted Wed October 16, 2024 09:56 PM

    Ryan ,Thanks for your suggestion.I have changed to use attributes。



    ------------------------------
    manyi sun
    ------------------------------



  • 4.  RE: ForceReevaluationOfFeedersForFedCellsOnDataChange use

    Posted Thu October 17, 2024 12:51 AM

    Agreed Ryan - there are very few instances where this is actually required. What I do find interesting is that the default setting on this parameter is T in the standard config file on SaaS or Cloud - whereas I would probably default to F and only turn this on when absolutely needed. Most likely that this config setting is unnecessarily active in many models just because of these defaults!



    ------------------------------
    Johann Kassier
    Enterprise Planning Architect
    Fusion 5
    ------------------------------



  • 5.  RE: ForceReevaluationOfFeedersForFedCellsOnDataChange use

    Posted Thu October 17, 2024 10:07 AM

     

     

     Interesting for sure,  I wonder how many models are much slower because of it

     

     

     

     






  • 6.  RE: ForceReevaluationOfFeedersForFedCellsOnDataChange use

    Posted Fri October 18, 2024 09:17 AM

    Ryan - Probably more than a few!  I pretty much always recommend not using the ForceReevaluationOfFeedersForFedCellsOnDataChange parameters.  I've seen a number of cases where no one could really explain why ForceReevaluationOfFeedersForFedCellsOnDataChange was enabled.  This often has a very large performance impact on TI processes that are adding new members.

    If I remember correctly, that parameter is really only needed if feeder statements are conditional such that changing from a non-null value to another value would require the condition feeder to be reevaluated.   In general I like to avoid conditional feeders as the cost to evaluate feeders may actually be worse than the performance hit when rendering views that are slightly overfed.

    You shouldn't need to enable ForceReevaluationOfFeedersForFedCellsOnDataChange for feeders to work when changing the cell from a null value to a non null value.  If a process is adding new members to a dimension then new cells will be added to cubes using that dimension.  If these new cells are identified on the left side of a feeder statement then they should feed once a value is set without enabling ForceReevaluationOfFeedersForFedCellsOnDataChange.  I probably need to do a quick test, but I believe this should also work without using the CubeProcessFeeders TI function at the end of the process that is adding new members.

     



    ------------------------------
    Stuart King
    Product Manager
    IBM Planning Analytics
    ------------------------------



  • 7.  RE: ForceReevaluationOfFeedersForFedCellsOnDataChange use

    Posted Fri October 18, 2024 09:26 AM

    No need to do the quick test - what you describe is spot on - the first population of those cells will trigger the feeders from those cells, and no reprocessing of feeders is required. In this scenario, the only time you would need to reprocess feeders is if those new elements are rule-driven (forming part of existing rule definitions), and are part of a consolidation/condition that was fed from elsewhere - in that case, the cube triggering the feeders TO these cells would require CubeProcessFeeders. 

    Fully in agreement though - vast majority of models would be better off without this parameter.



    ------------------------------
    Johann Kassier
    Enterprise Planning Architect
    Fusion 5
    ------------------------------



  • 8.  RE: ForceReevaluationOfFeedersForFedCellsOnDataChange use

    Posted Wed October 16, 2024 05:11 PM
    Edited by John O'Leary Wed October 16, 2024 05:12 PM

    We are in the same boat. 

    In the impacted cases we drop the rules of the impacted cube(s) in the Prolog and recreate the rules in the Epilog. This works because the loads are out of hours and the rule creation process does not take very long.  I should also add that if your load is conditional on rules in the cube then this won't readily work. The following is our method. 

    ##########################################################################
    ###  Prolog Turn Off Rules after clearing of data (To ensure correct target area cleared)
    ###########################################################################


    #Defines current rule file location
    sRulesFile =  '\\localhost\TM1Servers\xxxx\Data\' | sTargetCube2 | '.rux';

    #Defines Temporary rule file location
    sTempRulesFile = '\\localhost\TM1Servers\xxxx\Source Files\RuleTempFiles\' | sTargetCube2 | '.txt';

    #Defines empty rule file location (file must be created first)
    sEmptyFile= '\\localhost\TM1Servers\xxxx\Source Files\RuleTempFiles\NoRules.txt';

    #Copies rule from current location to temporary location

    #Make sure the target file has been exists before this process is first run as xcopy will otherwise hang
    sCommandLine= 'xcopy /q /y  ' | char(34) | sRulesFile | char(34) | '  ' | char(34) | sTempRulesFile | char(34);


    ExecuteCommand(sCommandLine,1);

    #Loads empty rule to current rule location (i.e. blanks current rule file)
    RuleLoadFromFile(sTargetCube2, sEmptyFile);

    ##########################################################################
    ###  Epilog Turn Rules Back On
    ###########################################################################

    sTempRulesFile = '\\localhost\TM1Servers\xxxx\Source Files\RuleTempFiles\' | sTargetCube2 | '.txt';
    RuleLoadFromFile(sTargetCube2, sTempRulesFile);

    ##

    I looked at using an alternative approach using some of the other rule functions using strings in TI variables but you need to replace single quotes with 2 single quotes and there is no TI Replace function so you need to loop etc and move the relative position each time (Anyway I didn't invest the time but if you are on Server 12 you may need to go down that path)



    ------------------------------
    John O'Leary
    ------------------------------



  • 9.  RE: ForceReevaluationOfFeedersForFedCellsOnDataChange use

    Posted Wed October 16, 2024 10:20 PM

    John,thanks,This ti is very useful,But the rules for saving this cube take more than half an hour.

    I probably need to start with rule optimization,At the same time I will try to use this TI.I think the function of this ti is the same as that of the CubeProcessFeeders function.



    ------------------------------
    manyi sun
    ------------------------------



  • 10.  RE: ForceReevaluationOfFeedersForFedCellsOnDataChange use

    Posted Fri October 18, 2024 09:25 AM

    Earlier this year we did document a few additional functions (CubeRuleGet and CubeRuleSet) around rule management.  See: https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=tf-rules-management-turbointegrator-functions-1.  These functions were always in TM1, but somehow missed in our documentation.



    ------------------------------
    Stuart King
    Product Manager
    IBM Planning Analytics
    ------------------------------



  • 11.  RE: ForceReevaluationOfFeedersForFedCellsOnDataChange use

    Posted Fri October 18, 2024 10:40 AM

    Hi Stuart,

    Thank you for the notification of the updated documentation.

    Could we also get some documentation on these two related functions?

    CubeRuleIsValid
    CubeRuleRefresh

    Thanks in advance.



    ------------------------------
    George Tonkin
    Business Partner
    MCI Consultants
    Johannesburg
    ------------------------------



  • 12.  RE: ForceReevaluationOfFeedersForFedCellsOnDataChange use

    Posted Fri October 18, 2024 10:49 AM

    George - I'll look into these two.  



    ------------------------------
    Stuart King
    Product Manager
    IBM Planning Analytics
    ------------------------------



  • 13.  RE: ForceReevaluationOfFeedersForFedCellsOnDataChange use

    Posted Fri October 18, 2024 10:54 AM
    Edited by George Tonkin Fri October 18, 2024 10:58 AM

    HI Stuart,

    Scope creep - there are actually 4 functions to document and PAW are aware of:

    CubeRuleDestroy( «CubeName» );
    CubeRuleIsValid( «CubeName», «Rules» );
    CubeRuleRefresh( «CubeName» );
    CubeRuleAppend( «CubeName», «RuleText», «IsCalculationRule» );


    Edit: Aarrgh - Friday brain dead - Destroy and Append are documented - sorry
    ------------------------------
    George Tonkin
    Business Partner
    MCI Consultants
    Johannesburg
    ------------------------------