TM1 Rule Last value in next level and hierarchy

Post Reply
A3aan
Posts: 3
Joined: Tue Sep 01, 2015 8:55 am
OLAP Product: TM1
Version: 10_1
Excel Version: 2003

TM1 Rule Last value in next level and hierarchy

Post by A3aan » Tue Sep 01, 2015 9:46 am

Hi,
I'm new to this forum, so any wrong-doings ar unattended. I appreciate corrections ...

Now to my problem.
I have a cube "Polis_Detail" (see attachment Polis_Detail_cub.jpg).
In the rules I do a "last non-zero value into next level" (for Polis_line_items that begin with "Bestand"); see # 6.

Code: Select all

SKIPCHECK;

['Polis Line Totaal']=0;

# Opmerking : Alle berekeningen ivm relatieve tijden
# dienen geplaatst te worden NA alle 'gewone' berekeningen op meetwaarden
#
# X. Bevroren Actuals
#[{'Actual','Light Actual'}] = N: IF(DB('Tech_Gesloten_Maanden','Actual', 'Polis', !Tijd, 'Bevroren maanden')
#=1,STET,CONTINUE);

# 0. Ongeldige/Weinig interessante combinaties
# Geen berekeningen uitvoeren op het scenario 'Laadversie'
['Laadversie' ] = 0;
# Geen berekningen op bepaalde elementen in de Polis_Line dimensie
# die zijn er niet ...? [{'Polis Line Totaal','Alle Elementen','Hiërarchie Aantal','Hiërarchie Bedrag'} ] = 0;

# Geen berekeningen uitvoeren op de geconsolideerde elementen binnen de
# dimensie 'Scenario'
#[]=IF(ELLEV('Scenario',!Scenario)<>0,0,CONTINUE);

# 0. Vrijgegeven Actuals
['Actual_Def', {'Original Value','Adjustment','Value Cum'}] = N:
  IF(DB('Tech_Gesloten_Maanden', 'Actual_Def', 'Polis_Vrijgeven', !Tijd, 'Gesloten maanden')=1
     , ['Actual']
     , 0);

# 1. Gemiddelde berekeningen - Dienen uitgevoerd te worden op ALLE scenario's
['G.NWPOST',{'Value','Adjustment','Original Value','Value Cum'}] = ['B.NWPOST' ] \ ['A.NWPOST' ]*1000;
['G.ROYEM',{'Value','Adjustment','Original Value','Value Cum'}] = ['B.ROYEM' ] \ ['A.ROYEM' ] * 1000 ;
['G.OVVOLM',{'Value','Adjustment','Original Value','Value Cum'} ] = ['B.OVVOLM' ] \ ['A.OVVOLM' ] * 1000;
['G.OVERMUT',{'Value','Adjustment','Original Value','Value Cum'}] = ['B.OVERMUT' ] \ ['A.OVERMUT' ] * 1000 ;
['G.AUTPREM',{'Value','Adjustment','Original Value','Value Cum'}] = ['B.AUTPREM' ] \ ['A.AUTPREM' ] * 1000 ;
['G.BESTANDP',{'Value','Adjustment','Original Value','Value Cum'}] = ['B.BESTANDP' ] \ ['A.BESTANDP' ] * 1000 ;
['G.REALGROW',{'Value','Adjustment','Original Value','Value Cum'}] = ['B.REALGROW' ] \ ['A.REALGROW' ] * 1000 ;
['G.BESTAND',{'Value','Adjustment','Original Value','Value Cum'}] = ['B.BESTAND' ] \ ['A.BESTAND' ] * 1000 ;


# 2. REALGROW
# A3aan - 20131010 - ,'Value Cum' overal verwijderd omdat die verderop berekend wordt
#voorbeeld verwijderde 1e regel: ['A.REALGROW',{'Original Value','Adjustment','Value Cum'}]  = N: IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1,['A.NWPOST' ] + ['A.ROYEM' ],CONTINUE);
['A.REALGROW',{'Original Value','Adjustment'}]  = N:
  IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1,
    ['A.NWPOST' ] + ['A.ROYEM' ],
    CONTINUE);
['B.REALGROW',{'Original Value','Adjustment'}]  = N:
  IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1,
    ['B.NWPOST' ] + ['B.ROYEM' ],
    CONTINUE);

# 3 MOVING AVERAGE
['A.VS.BESTA',{'Original Value','Adjustment','Value','Value Cum'}]  = IF(ELLEV('Tijd',!Tijd)=0,
(
DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,!Tijd,!Polis_Branche,!Scenario,'Bestand Aantal',!Polis_Detail_Meetwaarden) +
DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M-1'),!Polis_Branche,!Scenario,'Bestand Aantal',!Polis_Detail_Meetwaarden) +
DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M-2'),!Polis_Branche,!Scenario,'Bestand Aantal',!Polis_Detail_Meetwaarden) +
DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M-3'),!Polis_Branche,!Scenario,'Bestand Aantal',!Polis_Detail_Meetwaarden) +
DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M-4'),!Polis_Branche,!Scenario,'Bestand Aantal',!Polis_Detail_Meetwaarden) +
DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M-5'),!Polis_Branche,!Scenario,'Bestand Aantal',!Polis_Detail_Meetwaarden) +
DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M-6'),!Polis_Branche,!Scenario,'Bestand Aantal',!Polis_Detail_Meetwaarden) +
DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M-7'),!Polis_Branche,!Scenario,'Bestand Aantal',!Polis_Detail_Meetwaarden) +
DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M-8'),!Polis_Branche,!Scenario,'Bestand Aantal',!Polis_Detail_Meetwaarden) +
DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M-9'),!Polis_Branche,!Scenario,'Bestand Aantal',!Polis_Detail_Meetwaarden) +
DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M-10'),!Polis_Branche,!Scenario,'Bestand Aantal',!Polis_Detail_Meetwaarden) +
DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M-11'),!Polis_Branche,!Scenario,'Bestand Aantal',!Polis_Detail_Meetwaarden)
)\12,CONTINUE);

# 4. INCREASE / DECREASE
# A3aan - 20131008 - Overal "N:" toegevoegd om alleen op het laagste nivo te berekenen EN WEER VERWIJDERD IVM VERWIJDEREN VALUE en VALUE CUM
# A3aan - 20131010 - ,'Value Cum' overal verwijderd omdat die verderop berekend wordt
# A3aan - 20131010 - 'Value', overal verwijderd omdat die in de hierarchy berekend wordt
#voorbeeld verwijderde 1e regel: ['TECH_A.OVERMUT_GT',{'Value','Adjustment','Original Value','Value Cum'}]=N: IF(['A.OVERMUT' ] > 0, ['A.OVERMUT' ], 0);
['TECH_A.OVERMUT_GT',{'Adjustment','Original Value'}] = IF(['A.OVERMUT' ] > 0, ['A.OVERMUT' ], 0);
['TECH_A.OVVOLM_GT',{'Adjustment','Original Value'}] = IF(['A.OVVOLM' ] > 0, ['A.OVVOLM' ], 0);
['TECH_B.OVVOLM_GT',{'Adjustment','Original Value'}] = IF(['B.OVVOLM' ] > 0, ['B.OVVOLM' ], 0);
['TECH_B.OVERMUT_GT',{'Adjustment','Original Value'}] = IF(['B.OVERMUT' ] > 0, ['B.OVERMUT' ], 0);

# A3aan - 20131008 - Overal "N:" toegevoegd om alleen op het laagste nivo te berekenen EN WEER VERWIJDERD IVM VERWIJDEREN VALUE en VALUE CUM
# A3aan - 20131010 - ,'Value Cum' overal verwijderd omdat die verderop berekend wordt
# A3aan - 20131010 - 'Value', overal verwijderd omdat die in de hierarchy berekend wordt
['TECH_A.OVVOLM_LT',{'Adjustment','Original Value'}] = IF(['A.OVVOLM' ] < 0, ['A.OVVOLM' ], 0);
['TECH_A.OVERMUT_LT',{'Adjustment','Original Value'}] = IF(['A.OVERMUT' ] < 0, ['A.OVERMUT' ], 0);
['TECH_B.OVERMUT_LT',{'Adjustment','Original Value'}] = IF(['B.OVERMUT' ] < 0, ['B.OVERMUT' ], 0);
['TECH_B.OVVOLM_LT',{'Adjustment','Original Value'}] = IF(['B.OVVOLM' ] < 0, ['B.OVVOLM' ], 0);

# A3aan - 20131007 - STET vervangen door CONTINUE
# A3aan - 20131008 - Overal "N:" toegevoegd om alleen op het laagste nivo te berekenen EN WEER VERWIJDERD IVM VERWIJDEREN VALUE en VALUE CUM
# A3aan - 20131010 - ,'Value Cum' overal verwijderd omdat die verderop berekend wordt
# A3aan - 20131010 - 'Value', overal verwijderd omdat die in de hierarchy berekend wordt
['A.OTHERINC',{'Adjustment','Original Value'}] =
   IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1, ['TECH_A.OVERMUT_GT'] + ['TECH_A.OVVOLM_GT'], CONTINUE);
['B.OTHERINC',{'Adjustment','Original Value'}] =
   IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1, ['TECH_B.OVERMUT_GT'] + ['TECH_B.OVVOLM_GT'], CONTINUE);
['A.OTHERDEC',{'Adjustment','Original Value'}] =
   IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1, ['TECH_A.OVERMUT_LT'] + ['TECH_A.OVVOLM_LT'], CONTINUE);
['B.OTHERDEC',{'Adjustment','Original Value'}] =
   IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1, ['TECH_B.OVERMUT_LT'] + ['TECH_B.OVVOLM_LT'], CONTINUE);


# 5. Overige Polis Line Berekeningen - Budget & Outlook


############################# EINDE REKENREGELS MEETWAARDEN #################################

# 6. Cumulatieve waarden
[{'Original Value','Adjustment', 'Value'}] = C:
IF(SUBST(!Polis_Line,1,7)@='Bestand' & Ellev('Tijd',!Tijd) > 0
   , IF(DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)), !Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden)<>0
        , DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden)
        , IF(DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)-1),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden)<>0
             , DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)-1),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden)
             , IF(DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)-2),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden)<>0
                  , DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)-2),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden)
                  , IF(DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)-3),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden)<>0
                       , DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)-3),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden)
                       , 0))))
   , STET);

# A3aan - 20131010 - VALUE CUM op ieder nivo bepalen
['Value Cum'] = N:
  IF(ATTRS('Tijd', !Tijd,'Month_Code')@='1',
    ['Value' ],
    IF (SUBST(!Polis_Line,1,7)@='Bestand',
      ['Value' ],
      ['Value' ] + DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, ATTRS('Tijd',!Tijd,'M-1'),!Polis_Branche,!Scenario,!Polis_Line,'Value Cum')));

['Value Cum'] = C:
IF(Ellev('Tijd',!Tijd) > 0,
  IF (SUBST(!Polis_Line,1,7)@='Bestand',
    IF(DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)), !Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden)<>0,
      DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden),
      IF(DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)-1),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden)<>0,
        DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)-1),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden),
        IF(DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)-2),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden)<>0,
          DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)-2),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden),
          IF(DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)-3),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden)<>0,
            DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)-3),!Polis_Branche, !Scenario, !POLIS_Line, !POLIS_Detail_Meetwaarden),
            0)))),
    DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, elcomp('Tijd',!Tijd,Elcompn('Tijd',!Tijd)), !Polis_Branche, !Scenario, !Polis_Line,'Value Cum')),
  IF(ATTRS('Tijd', !Tijd,'Month_Code')@='1',
    ['Value' ],
    IF (SUBST(!Polis_Line,1,7)@='Bestand',
      ['Value' ],
      ['Value' ] + DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator, ATTRS('Tijd',!Tijd,'M-1'),!Polis_Branche,!Scenario,!Polis_Line,'Value Cum'))));


FEEDERS;

# 0. Vrijgegeven Actuals
['Actual', {'Original Value','Adjustment'}] => ['Actual_Def'];
['Actual','Value Cum'] => ['Actual_Def','Value Cum'] ;

# 1. Gemiddelde berekeningen
['A.NWPOST',{'Adjustment','Original Value','Value Cum'}] => ['G.NWPOST' ] ;
['B.ROYEM',{'Adjustment','Original Value','Value Cum'}] => ['G.ROYEM' ];
['B.OVVOLM',{'Adjustment','Original Value','Value Cum'}] => ['G.OVVOLM' ];
['B.OVERMUT',{'Adjustment','Original Value','Value Cum'}] => ['G.OVERMUT' ];
['B.AUTPREM',{'Adjustment','Original Value','Value Cum'}] => ['G.AUTPREM' ];
['B.BESTANDP',{'Adjustment','Original Value','Value Cum'}] => ['G.BESTANDP' ];
['B.REALGROW',{'Adjustment','Original Value','Value Cum'}] => ['G.REALGROW' ] ;
['B.BESTAND',{'Adjustment','Original Value','Value Cum'}] => ['G.BESTAND' ];

# 2. REALGROW
# VALUE CUM moet ook geFEED worden omdat het item anders niet wordt getoond bij "Suppress Zeroes"
[{'A.NWPOST','A.ROYEM'},{'Adjustment','Original Value','Value Cum'}] =>
  DB(IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1
     , 'Polis_Detail'
     , ''),!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,!Tijd,!Polis_Branche,!Scenario,'Real Growth Aantal',!Polis_Detail_Meetwaarden);

[{'B.NWPOST','B.ROYEM'},{'Adjustment','Original Value','Value Cum'}] =>
  DB(IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1
        , 'Polis_Detail'
        , ''),!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,!Tijd,!Polis_Branche,!Scenario,'Real Growth Bedrag',!Polis_Detail_Meetwaarden);


# 3 MOVING AVERAGE
# VALUE CUM moet ook geFEED worden omdat het item anders niet wordt getoond bij "Suppress Zeroes"
['A.BESTAND',{'Adjustment','Original Value','Value Cum'}] => ['Bestand Aantal VS' ] ;
['A.BESTAND',{'Adjustment','Original Value','Value Cum'}] => DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M+1'),!Polis_Branche,!Scenario,'Bestand Aantal VS', !Polis_Detail_Meetwaarden);
['A.BESTAND',{'Adjustment','Original Value','Value Cum'}] => DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M+2'),!Polis_Branche,!Scenario,'Bestand Aantal VS', !Polis_Detail_Meetwaarden);
['A.BESTAND',{'Adjustment','Original Value','Value Cum'}] => DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M+3'),!Polis_Branche,!Scenario,'Bestand Aantal VS', !Polis_Detail_Meetwaarden);
['A.BESTAND',{'Adjustment','Original Value','Value Cum'}] => DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M+4'),!Polis_Branche,!Scenario,'Bestand Aantal VS', !Polis_Detail_Meetwaarden);
['A.BESTAND',{'Adjustment','Original Value','Value Cum'}] => DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M+5'),!Polis_Branche,!Scenario,'Bestand Aantal VS', !Polis_Detail_Meetwaarden);
['A.BESTAND',{'Adjustment','Original Value','Value Cum'}] => DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M+6'),!Polis_Branche,!Scenario,'Bestand Aantal VS', !Polis_Detail_Meetwaarden);
['A.BESTAND',{'Adjustment','Original Value','Value Cum'}] => DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M+7'),!Polis_Branche,!Scenario,'Bestand Aantal VS', !Polis_Detail_Meetwaarden);
['A.BESTAND',{'Adjustment','Original Value','Value Cum'}] => DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M+8'),!Polis_Branche,!Scenario,'Bestand Aantal VS', !Polis_Detail_Meetwaarden);
['A.BESTAND',{'Adjustment','Original Value','Value Cum'}] => DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M+9'),!Polis_Branche,!Scenario,'Bestand Aantal VS', !Polis_Detail_Meetwaarden);
['A.BESTAND',{'Adjustment','Original Value','Value Cum'}] => DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M+10'),!Polis_Branche,!Scenario,'Bestand Aantal VS', !Polis_Detail_Meetwaarden);
['A.BESTAND',{'Adjustment','Original Value','Value Cum'}] => DB('Polis_Detail',!Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M+11'),!Polis_Branche,!Scenario,'Bestand Aantal VS', !Polis_Detail_Meetwaarden);


# 4. INCREASE / DECREASE
# VALUE CUM moet ook geFEED worden omdat het item anders niet wordt getoond bij "Suppress Zeroes"
['A.OVERMUT',{'Adjustment','Original Value','Value Cum'}] => ['TECH_A.OVERMUT_GT'];
['B.OVERMUT',{'Adjustment','Original Value','Value Cum'}] => ['TECH_B.OVERMUT_GT'];
['A.OVVOLM',{'Adjustment','Original Value','Value Cum'}] => ['TECH_A.OVVOLM_GT'];
['B.OVVOLM',{'Adjustment','Original Value','Value Cum'}] => ['TECH_B.OVVOLM_GT'];

['A.OVERMUT',{'Adjustment','Original Value','Value Cum'}] => ['TECH_A.OVERMUT_LT'];
['B.OVERMUT',{'Adjustment','Original Value','Value Cum'}] => ['TECH_B.OVERMUT_LT'];
['A.OVVOLM',{'Adjustment','Original Value','Value Cum'}] => ['TECH_A.OVVOLM_LT'];
['B.OVVOLM',{'Adjustment','Original Value','Value Cum'}] => ['TECH_B.OVVOLM_LT'];

# A3aan - 20131010 - Tijd M+11 vervangen door tijd om te onderzoeken waarom dec12 nu (in oktober 2013) niet gevuld is
# VALUE CUM moet ook geFEED worden omdat het item anders niet wordt getoond bij "Suppress Zeroes"
#[{'TECH_A.OVERMUT_GT','TECH_A.OVVOLM_GT'},{'Adjustment','Original Value','Value Cum'}] =>
#DB(IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1, 'Polis_Detail', ''), !Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,
#!Polis_Zakelijk_Indicator,ATTRS('Tijd',!Tijd,'M+11'),!Polis_Branche,!Scenario,'Other Increases Aantal', !Polis_Detail_Meetwaarden);
[{'TECH_A.OVERMUT_GT','TECH_A.OVVOLM_GT'},{'Adjustment','Original Value','Value Cum'}] =>
  DB(IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1
        , 'Polis_Detail'
        , ''), !Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,!Tijd,!Polis_Branche,!Scenario,'Other Increases Aantal', !Polis_Detail_Meetwaarden);

[{'TECH_B.OVERMUT_GT','TECH_B.OVVOLM_GT'},{'Adjustment','Original Value','Value Cum'}] =>
  DB(IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1
        , 'Polis_Detail'
        , ''), !Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,!Tijd,!Polis_Branche,!Scenario,'Other Increases Bedrag', !Polis_Detail_Meetwaarden);

[{'TECH_A.OVERMUT_LT','TECH_A.OVVOLM_LT'},{'Adjustment','Original Value','Value Cum'}] =>
  DB(IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1
        , 'Polis_Detail'
        , ''), !Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,!Tijd,!Polis_Branche,!Scenario,'Other Decreases Aantal', !Polis_Detail_Meetwaarden);

[{'TECH_B.OVERMUT_LT','TECH_B.OVVOLM_LT'},{'Adjustment','Original Value','Value Cum'}] =>
  DB(IF(ELISANC('Scenario','Actual Scenarios',!Scenario)=1
        , 'Polis_Detail'
        , ''), !Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,!Tijd,!Polis_Branche,!Scenario,'Other Decreases Bedrag', !Polis_Detail_Meetwaarden);

# 5. Overige Polis Line Berekeningen - Budget & Outlook

# 6. Cumulatieve waarden
[{'Adjustment','Original Value'} ] =>
  DB(IF(ATTRS('Polis_Line',!Polis_Line,'Type')@<>'Berekend'
        , 'Polis_Detail'
        , ''), !Polis_Label,!Polis_Bronsysteem,!Polis_Kenmerk,!Polis_Zakelijk_Indicator,!Tijd,!Polis_Branche,!Scenario,!Polis_Line,'Value Cum');

['Value Cum' ] =>
  DB(IF(SUBST(!Tijd,5,2)@=SUBST(ATTRS('Tijd',!Tijd,'M+1'),5,2) & ATTRS('Polis_Line',!Polis_Line,'Type')@<>'Berekend'
     , 'Polis_Detail'
     , ''), !Polis_Label, !Polis_Bronsysteem, !Polis_Kenmerk, !Polis_Zakelijk_Indicator, ATTRS('Tijd',!Tijd,'M+1'),!Polis_Branche,!Scenario,!Polis_Line,'Value Cum');
The problem is that the normal hierarchy for level year is overruled by the previous code.
As you can see in Polis_Detail_view.JPG the last not-zero value in month is put into the Quarter and the last non-zero value in quarter is put into year. So far so good.
But now the hierarchy Polis_Brache/VC Branche Totaal is not as required: The sum of level "PSB DL" is not the sum of the underlying values, but the value from "Dec 07"

Can I get the hierarchy to calculate as requested? If so how?
Last edited by A3aan on Tue Sep 01, 2015 10:46 am, edited 2 times in total.

TrevorGoss
Community Contributor
Posts: 217
Joined: Thu Aug 15, 2013 9:05 am
OLAP Product: TM1
Version: 10.2.1.1
Excel Version: 14.0.6129.5000

Re: TM1 Rule Last value in next level and hierarchy

Post by TrevorGoss » Tue Sep 01, 2015 9:49 am

Hello,

you have not included any files so it is difficult to understand the actual error.

Have you made sure that the Area Definition is not over ruled by a rule above?

Your statement:
The problem is that the normal hierarchy for level year is overruled by the previous code.
Makes me think that a rules area definition is overriding it because of precedence.

You could also show us the rule that is overriding it.

Thanks.

Trevor.

A3aan
Posts: 3
Joined: Tue Sep 01, 2015 8:55 am
OLAP Product: TM1
Version: 10_1
Excel Version: 2003

Re: TM1 Rule Last value in next level and hierarchy

Post by A3aan » Tue Sep 01, 2015 10:49 am

Hi Trevor,

I updated the original post. It now includes the complete Polis_Detail RULES.
I cannot attach the jpg's. It looks OK, but when I submit no attachments ar visible. Do you know what's wrong?

OOps, I used the word "previous" as in "the tekst just before this remark and not as "a previous rule"...

A3aan

User avatar
Michel Zijlema
Site Admin
Posts: 705
Joined: Wed May 14, 2008 5:22 am
OLAP Product: TM1, PALO
Version: both 2.5 and higher
Excel Version: 2003-2007-2010
Location: Netherlands
Contact:

Re: TM1 Rule Last value in next level and hierarchy

Post by Michel Zijlema » Tue Sep 01, 2015 7:31 pm

Hi A3aan,

It’s not easy to find out what’s wrong based only on the rules sheet and your brief description.
What I can see is that:
1. Based on the comments I see you have been editing the original rules set. Did the problems occur after your changes?
2. There are quite some rule calculations defined on C: level. These calculations overrule the normal hierarchy consolidations. When these C: level rules are defined on different dimensions, the outcome on the top level cells can become dependent on the consolidation path of the calculation, where various paths can lead to various results - at this point the outcome will become unpredictable.

Michel

A3aan
Posts: 3
Joined: Tue Sep 01, 2015 8:55 am
OLAP Product: TM1
Version: 10_1
Excel Version: 2003

Re: TM1 Rule Last value in next level and hierarchy

Post by A3aan » Wed Sep 02, 2015 2:33 pm

Hoi Michel,
Michel Zijlema wrote:1. Based on the comments I see you have been editing the original rules set. Did the problems occur after your changes?
No, the problem existed before these last changes.
Michel Zijlema wrote:2. There are quite some rule calculations defined on C: level. These calculations overrule the normal hierarchy consolidations. When these C: level rules are defined on different dimensions, the outcome on the top level cells can become dependent on the consolidation path of the calculation, where various paths can lead to various results - at this point the outcome will become unpredictable.
I understand your point about the C:-level overruling normal Hiererchy consolidations. I'll see if that gets me on the right track.

Thanks,
A3aan

Post Reply