Error message when importing rules

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Error message when importing rules

      Dear all,

      We are implementing Palo 2.5 (Server and client) with lots of rules, and we experienced difficulties in importing a text file containing rules, the following error message appears: "lenght cannot be less than zero. Parameter name:length".
      Someone has an idea?

      Thank you in advance.
      Regards,

      B.SAAL
    • Dear holger,

      I have a strong experience planning & budgeting with other MOLAP tools (Ofa, Hyperion, cognos...).
      I have readen thousands of forum messages but still no answers to my worried.

      I want to manage the internal production which are selling from "site Production" to "sale center"
      Those sites are organized by region and activities i.e :
      P - Reg1 Act 1 sale to S - Reg 2 - Act 2 / Internal cessions = 500
      P - Reg1 Act 1 sale to S - Reg 3 - Act2 / Internal cessions = 700
      and also
      P - Reg1 Act 2 sale to P - Reg1 Act 1/ Internal cessions = 300


      We want to manage p&l measures (turnover,gross profil, production ...) through activities and sites - do NOT care about
      source and destination (site prod or sale center).
      Reg1 - Act1 - Turnover = 1000


      The purpose is to allocate internal cessions into P&L measures (with two different perimeters) using inter sites and intra activities cessions


      My first feeling was to create two different cubes, but after testing I do not manage to do what I wanted to do with PALO.DATA....
      So i have optimize the model in 1 P&L cube by creating 2 dimensions containing "choux et carottes" - let's say "dogs and cats in english"
      (don'tknow the english expression)

      Dim 1 = REGION+PROD SITE
      DIM 2 = ACTIVITIES + SALE CENTER

      I don't have generic formula to match internal cessions with production to write something like
      'production' Reg1''Act1'= 'turnover' Reg1''Act1'+ 'P - Reg1 Act 1' 'S Total' Int. Cession - 'P - Total' 'S - Reg 1 ACT 1' Int. Cession

      Do we have a way to transform the formula with genericity (even in VBA) like

      _Act='Act1'
      'production' Reg1'_ACT= 'turnover' Reg1'_ACT+ 'P - Reg1' & _ACT 'S Total' Int. Cession - 'P - Total' 'S - Reg 1'& _ACT Int. Cession


      PS: I can send by email the rules to see how it can be optimize!

      Thank you for your help.
      Regards,

      B.SAAL
    • Hi,

      I tried to take a rule from your #3 prod BLOC# for an exmpale:

      ['Quantité produite','BLOC','LP','Budget N+1'] =
      ['Quantité vendue','BLOC','LP','Budget N+1']
      + ['Cessions - Quantité','Budget N+1','A - Total - BLOC','D - BLOC - LP']
      - ['Cessions - Quantité','Budget N+1','D - Total - BLOC','A - BLOC - LP']

      First of all you don't have to repeat elements in the source area, when you defined them in taregt area (like 'Budget N+1' or 'BLOC').

      Lets say Budget N+1 Dimensionname is DIM2.

      Now leave out LP in target area. Lets say it is an element of DIM1:

      This is the interim result of what the rule looks like now:

      ['Quantité produite'] =
      ['Quantité vendue']
      + ['Cessions - Quantité','A - Total - BLOC','D - BLOC - LP']
      - ['Cessions - Quantité','D - Total - BLOC','A - BLOC - LP']

      but there are still hard coded "LP" elements in there.
      Now you could concatenate element names but you will need PALO.DATA for it

      ['Quantité produite'] =
      ['Quantité vendue']

      + PALO.DATA("YOURDB","YOURCUBE","Cessions - Quantité","A - Total - BLOC",CONCATENATE("D - BLOC - ", !'DIM1'),!'DIM2')

      - PALO.DATA("YOURDB","YOURCUBE","Cessions - Quantité","D - Total - BLOC",CONCATENATE("A - BLOC - ", !'DIM1'),!'DIM2')

      This is a generic rule for your #3 prod BLOC#.
      Of course you may have to adjust the dimension order in the PALO.DATA.
      Maybe this helps you using PALO.DATA with different cube too.


      Holger

      The post was edited 1 time, last by h_decker ().

    • That sounds great (concatenate function even with syntax of palo.data more complex! )

      You wrote
      ['Quantité produite'] =
      ['Quantité vendue']
      + ['Cessions - Quantité','A - Total - BLOC','D - BLOC - LP']
      - ['Cessions - Quantité','D - Total - BLOC','A - BLOC - LP']
      But this calculation has to be done only for 'Budget N+1' and 'BLOC'
      Is it a way to use STET to limit the target perimeter by exclusion - I have tried someting but I think STET is not working properly in 2.5 (I also read it in other messages).

      Thank you for your very efficient and quick help.
      Regards,

      B.SAAL
    • Hi,
      I would prefer this solution here

      ['Quantité produite','Budget N+1','BLOC'] =
      ['Quantité vendue']

      + PALO.DATA("YOURDB","YOURCUBE","Cessions - Quantité","A - Total - BLOC",CONCATENATE("D - BLOC - ", !'DIM1'),"Budget N+1")

      - PALO.DATA("YOURDB","YOURCUBE","Cessions - Quantité","D - Total - BLOC",CONCATENATE("A - BLOC - ", !'DIM1'),"Budget N+1")

      Holger
    • must be something like this

      sample for all blocks:
      ['Cessions - Quantité','Budget N+1'] =
      PALO.DATA("YOURDB","YOURCUBE","Cessions - Quantité",CONCATENATE("A - BLOC",RIGHT(!'DIMNAME3',2)),CONCATENATE("D - CONC - ", RIGHT(!'DIMNAME3',2)),"Reel N")
      * PALO.DATA("YOURDB","YOURCUBE","Quantité produite (u)","BLOC", RIGHT(!'DIMNAME3',2),"Reel N")
      / PALO.DATA("YOURDB","YOURCUBE","Quantité produite (u)","BLOC", RIGHT(!'DIMNAME3',2),"Budget N+1")

      Please check dimorder. Maybe it would be good to think about the multicube model again.

      Holger
    • Hi Holger,

      Thanks a lot for your last answered, it worked !!

      Nevertheless , I have still one last nightmare: what is the best way to restrict the target perimeter including all descendants of a parent...the rule is concerning the 'cessions - quantité' measure which calculation is different according to 3 different perimeter:

      for all descendants of 'D - Total - CONC' : ['Cessions - Quantité','Budget N+1'] = N:['Cessions - Quantité','Reel N'] * ['Nombre de JT','Budget N+1','LP','CONC'] / ['Nombre de JT','Reel N','LP','CONC']

      for all descendants of 'D - Total - BLOC': ['Cessions - Quantité','Budget N+1'] =
      PALO.DATA("RUBIPROD","Resultats","Reel N",!'Temps',"Quantité produite (u)", CONCATENATE("A - BLOC",RIGHT(!'A - Site',2)),CONCATENATE("D - BLOC",RIGHT(!'D - Activité',2)) ) *['Quantité produite (u)','BLOC','LP','Reel N']/['Quantité produite (u)','BLOC','LP','Budget N+1']

      All other based elements: Inputed

      Can you be more explicit with syntax of (IF(PALO.EISCHILD("localhost/Demo";"products";"Stationary PC's";!'Dim1'),thenpart,STET()))



      REGARDS
      Regards,

      B.SAAL
    • Let' s presume that 'D - Total - CONC' and 'D - Total - BLOC' are elements of dimension "DIMxyz":

      ['Cessions - Quantité','Budget N+1']=N:
      IF(PALO.EISCHILD("RUBIPROD";"DIMxyz";"D - Total - CONC";!'DIMxyz'),
      ###then part####
      ['Cessions - Quantité','Reel N'] * ['Nombre de JT','Budget N+1','LP','CONC'] / ['Nombre de JT','Reel N','LP','CONC'],
      ###else part####
      IF(PALO.EISCHILD("RUBIPROD";"DIMxyz";"'D - Total - BLOC'";!'DIMxyz'),
      ###then part####
      PALO.DATA("RUBIPROD","Resultats","Reel N",!'Temps',"Quantité produite (u)", CONCATENATE("A - BLOC",RIGHT(!'A - Site',2)),CONCATENATE("D - BLOC",RIGHT(!'D - Activité',2)) ) *['Quantité produite (u)','BLOC','LP','Reel N']/['Quantité produite (u)','BLOC','LP','Budget N+1'],
      ###else part####
      STET()
      )
      )



      Hope this helps.

      Holger
    • Holger,

      Everything is undercontrol now, thanks to you and also for your patience!
      I found something special, on the following code, the red condition is not working properly even if the perimeter of #4 is different from #1.Off course i cannot include #4 in #1 formula because I need #3 calc (based on #1) before for #4 calculation (otherwise "it is snake swallowing its (own) tail ". Do you have any explanation? I think this is dealing with priority order and perimeter...
      The alternativ I found to covered this, is to create an other measure called "cessions quantité - CONC" with the 2nd calculation, but I really appreciate to store all cessions on same measure (to simplify users'life allowing cessionscomparison )

      Waiting anxiously to read you...
      Thank you for your help.



      #1 Cessions CONC VERS CONC#
      ['Cessions - Quantité','Budget N+1'] = N:IF(PALO.EISCHILD("RUBIPROD","A - Site","A - Total - CONC",!'A - Site'),
      IF(PALO.EISCHILD("RUBIPROD","D - Activité","D - Total - CONC",!'D - Activité'),
      ['Cessions - Quantité','Reel N'] * ['Nombre de JT','Budget N+1','LP','CONC'] / ['Nombre de JT','Reel N','LP','CONC'],
      STET()),STET()

      #3 Quantite produite HORS CONCASSAGE #
      ['Quantité produite (u)','BLOC','Budget N+1'] = N:['Quantité vendue','BLOC']
      - ['Stock final - Quantité', 'BLOC']
      + PALO.DATA("RUBIPROD","Resultats",!'Scenario',!'Temps',"Cessions - Quantité","A - Total - BLOC",CONCATENATE("D - BLOC - ",!'A - Site'))
      - PALO.DATA("RUBIPROD","Resultats",!'Scenario',!'Temps',"Cessions - Quantité",CONCATENATE("A - BLOC - ",!'A - Site'),"D - Total - BLOC")
      ['Quantité produite (u)','POUT','Budget N+1'] = N:['Quantité vendue','POUT'] - ['Stock final - Quantité', 'POUT']
      + PALO.DATA("RUBIPROD","Resultats",!'Scenario',!'Temps',"Cessions - Quantité","A - Total - POUT",CONCATENATE("D - POUT - ",!'A - Site'))
      - PALO.DATA("RUBIPROD","Resultats",!'Scenario',!'Temps',"Cessions - Quantité",CONCATENATE("A - POUT - ",!'A - Site'),"D - Total - POUT")

      #4 Cessions CONCASSAGE vers BLOCS ET POUT#
      ['Cessions - Quantité','Budget N+1'] = N:IF(PALO.EISCHILD("RUBIPROD","A - Site","A - Total - BLOC",!'A - Site'),
      IF(PALO.EISCHILD("RUBIPROD","D - Activité","D - Total - CONC",!'D - Activité'),
      1000 * ['Cessions - Quantité','Reel N']
      / PALO.DATA("RUBIPROD","Resultats","Reel N",!'Temps',"Quantité produite (u)",right (!'A - Site',2),right (left (!'A - Site',8),4) ) * PALO.DATA("RUBIPROD","Resultats","Budget N+1",!'Temps',"Quantité produite (u)",right (!'A - Site',2),right (left (!'A - Site',8),4)),
      2000)
      ,3000)
      Regards,

      B.SAAL