Weet je nog, de geprognosticeerde opbrengst hebben we veranderd toen het project op de Dwarsdreef afliep?

Ron is business analist bij een middelgroot bedrijf. Het bedrijf ontleent zijn bestaansrecht aan de excellente uitvoering van projecten voor klanten, deels bouwmanagement op nacalculatie basis en deels door voor eigen rekening en risico panden te renoveren in de steden. De economische crisis heeft diepe sporen getrokken in de kredietlijnen en de accountant kijkt kritisch naar de onderbouwing van de gerealiseerde omzet en de balans. Het valt nog mee dat ze niet volgens IFRS hoeven te werken, maar het is toch elk jaar weer spannend en vooral druk. Dit jaar is het extra spannend, want de geldschieter is nerveus en wil zeker weten dat zijn geld rendeert en hij toch weinig risico loopt omdat de bestuurders aantoonbaar grip hebben op de bedrijfsvoering.

De teamleider John van het accountants team komt op de tweede controledag binnen bij Ron. Hij zit een beetje in zijn maag met een grote positie die twee jaar geleden verworven is met de doelstelling om het gehele gebied Kloosterdreef te herontwikkelen. Alleen, vorig jaar stond het voor een mooi bedrag op de balans en nu voor weinig. John vraagt zich af of de controller de opbrengst het vorig jaar niet wat te rooskleurig had ingeschat tegen beter weten in.

John zou graag van Ron weten hoe de inzichten zich in de tijd ontwikkeld hebben.
Pff, Ron baalt. Typisch zo’n vraag die veel tijd kost om goed te beantwoorden. En leidt tot een akkoordverklaring, want de processen zijn gewoon goed onder controle. Dat wordt weer laat. Even rustig nadenken of de vraag slimmer beantwoord kan worden door alle onderleggers onder de afwaarderingen bij elkaar te zoeken.

Ron herinnert zich dat het in Invantive Estate mogelijk is om door de tijd te reizen door het gewenste inzichtsmoment op te geven in de web of Outlook gebruikersinterface. Bijvoorbeeld een paar weekjes terug:

Alle rapporten komen er dan uit met de situatie van het gekozen moment. Maar ja, de accountant is vooral geïnteresseerd in de mutaties en de maanden waarin ze optreden. Dat wordt dan nog steeds de rapporten in Excel formaat naast elkaar leggen en uitpluizen. Beter dan de dikke ordners weer openslaan, maar toch… Geheid dat er nog zo’n vraag komt.

Kan het niet slimmer? In de cursus van Invantive Estate werd verteld dat het heel gemakkelijk is om door de tijd te reizen. Misschien kan Ron met zijn beperkte ervaring met SQL daar snel een resultaat mee boeken. Met het handboek open ontdekt Ron dat hij zich vanuit de SQL editor eerst moet aanmelden op de bedrijfslaag:

begin
   --
   -- Aanmelden op de bedrijfslaag van Invantive Estate.
   --
   bubs_session.set_session_info
   ( 'Mijn querytool'
   , 'Analyseren'
   , 'ron'
   , 'Analyse opbrengsten grondpositie voor John'
   , 'Mijn netwerk'
   , 'Mijn PC'
   , 'Handmatig'
   , 'Mijn sessie om ' || to_char(sysdate, 'YYYYMMDDHH24MISS')   , 'GeheimenDeelJeMetSandeman'
   );
 end;

Wat is de actuele gebudgetteerde opbrengst? Alle gegevens staan al voorgekookt klaar in een SQL view, dus dat scheelt. Je hoeft het datamodel niet uit te vlooien:

select sum(obt_gebudgetteerde_opbr_unit)
        gebudgetteerde_opbrengst
from   bubs_opbrengsten_v
where  1=1
and    pjt_code='Kloosterdreef'

Zo, denkt Ron, dat is de situatie per nu, 1,2 miljoen Euro. Nu nog per kwartaal de toenmalige inzichten op de eerste van de maand. Laat ik eerst de situatie die volgens de peildatum van 1 januari gold reproduceren. De cijfers daarvan zijn volgens de projectversie definitief gemaakt de 15e januari om 10:23. Om terug te reizen naar dat moment is heel eenvoudig:

begin
   bubs_session.set_point_in_time(to_date('15-01-2010 10:23:00', 'DD-MM-YYYY HH24:MI:SS'));
 end;

Om de gebudgetteerde opbrengst van dat moment te krijgen is een kleine aanpassing nodig, namelijk het veranderen van ‘bubs_’ in ‘bubsp’ in de naam van de SQL view:

SELECT sum(obt_gebudgetteerde_opbr_unit) gebudgetteerde_opbrengst 
FROM   bubspopbrengsten_v 
WHERE  1 = 1 
AND    pjt_code = 'Kloosterdreef' 

Hmm, John heeft wel een punt, begin vorig jaar was het ruim boven de twee miljoen, denkt Ron. Hoe krijg ik nu een tabelletje met voor elke peildatum een cijfer? Het schijnt mogelijk te zijn dat met een query direct op de onderliggende historie op te lossen, maar dat is me te moeilijk. Ik voer de bovenstaande query wel twaalf keer uit. Voor elke rapportageperiode zoek ik het inzichtsmoment op en dan druk ik de gebudgetteerde opbrengst af. Na een vijf minuten klussen is het klaar:

DECLARE 
    g_pjt_code bubs_project_versies_v.pjt_code%TYPE := 'Kloosterdreef'; 
    l_gebudgetteerde_opbrengst 
           bubs_opbrengsten_v.obt_gebudgetteerde_opbr_unit%TYPE; 
BEGIN 
    FOR r_pve IN (SELECT pve.pve_datum_rapportage, 
                         pve.pjt_code, 
                         pve.pve_code 
                  FROM   bubs_project_versies_v pve 
                  WHERE  1 = 1 
                         AND pve.pjt_code = g_pjt_code 
                         AND pve.pce_code = 'Boekhouding' 
                         AND pve.pve_code IN ( '201001', '201004', '201007', 
                                               '201010', '201101' ) 
                  ORDER  BY pve.pve_code) LOOP 
        SELECT SUM(obt_gebudgetteerde_opbr_unit) gebudgetteerde_opbrengst 
        INTO   l_gebudgetteerde_opbrengst 
        FROM   bubspopbrengsten_v 
        WHERE  1 = 1 
               AND pjt_code = r_pve.pjt_code; 

        dbms_output.Put_line ('Periode ' 
                              || r_pve.pve_code 
                              || ' (inzichtsmoment ' 
                              || To_char(r_pve.pve_datum_rapportage, 
                                 'DD-MM-YYYY HH24:MI:SS') 
                              || '): ' 
                              || To_char(l_gebudgetteerde_opbrengst)); 
    END LOOP; 
END; 

Een paar seconden later staan de cijfers op het scherm:

Periode 201001 (inzichtsmoment 03-03-2011 19:37:07): 2.013.488
Periode 201001 (inzichtsmoment 03-03-2011 19:37:07): 2.013.488
Periode 201001 (inzichtsmoment 03-03-2011 19:37:07): 1.740.354
Periode 201001 (inzichtsmoment 03-03-2011 19:37:07): 1.233.000
Periode 201001 (inzichtsmoment 03-03-2011 19:37:07): 1.233.000

Dat zit weer mee. Ron stuurt de cijfers op naar John en bewaart de query bij zijn favorieten. Standaard komt er al veel informatie uit Invantive Estate, maar ook deze analyse vraag kan hij voortaan snel beantwoorden. Hoe het afloopt met de controle? Goed! John schrijft nog een extra alinea in het verslag waarin hij verteld dat John met Ron in de tijd terug gereisd heeft en dat hij zeldzaam verrast was over de snelheid waarmee analyses opgelepeld werden.