Hoe weekdefinities BI-rapportages kunnen maken of breken

weekdefinities-bi

Recentelijk werd mij tijdens een Oracle BI project gevraagd naar een inzicht van de te verwachte goederen per week. De logistiek manager had dit inzicht nodig voor zijn operationele planning van bemensing in het magazijn en voor afspraken over bloktijden met de transporteurs.

Deze heldere vraag ging rap tot verduivelde details leiden en al snel was ik weer “die vervelende meneer, die alleen maar nare vragen stelde”.

Op de weg terug naar huis was ik zelf ook redelijk met stomheid geslagen. Dat iets ogenschijnlijk zo evident als deze eenvoudige vraag van een lijstje met gegevens per week zoveel stof zou doen opwaaien. Stof genoeg om een blog aan te wijden: De ene week is de andere niet…

Weken in de wereld

Voor bedrijven die binnen Europa rapporteren, is het vaak eenvoudiger om weekgegevens te beheren. Maar zodra een bedrijf internationaal opereert, ontstaan er verschillen in de definitie van weken. Wereldwijd beginnen weken op verschillende dagen, variërend van zaterdag tot maandag. Dit heeft direct invloed op weeknummers.

En wat is week 1 eigenlijk? In Europa beschouwen we de eerste week met minstens vier dagen in het nieuwe jaar als week 1. In de Verenigde Staten is week 1 de week waarin 1 januari valt.

Maar wat als 1 januari nog valt in week 52 of 53 van het vorige jaar? Hoort 1 januari dan bij het oude of het nieuwe jaar?

De overgang tussen maanden en kwartalen brengt ook complicaties met zich mee. Hoort 1 april bijvoorbeeld bij het eerste of het tweede kwartaal?

Tijdshiërarchie en vergelijking vorige jaren

Tijdens een eerdere Oracle BI-implementatie kreeg ik te maken met een uitdaging rondom de tijdshiërarchie. De klant wilde het weeknummer opnemen in de dimensie Tijd. De constructie was snel gemaakt en leek aanvankelijk goed te werken.

De hiërarchie werkte prima voor het doorklikken naar details. Gebruikers konden per laag verder inzoomen naar onderliggende niveaus. Maar zodra we naast het aantal geleverde hoeveelheden ook cijfers van het voorgaande jaar toevoegden, ging het mis. De getallen klopten niet meer. Bij het optellen van data vanaf dagen naar weken, maanden en kwartalen ontstonden afwijkingen. Zo bleek de datum 2 april soms bij maand 3 en kwartaal 1 terecht te komen. Wat nu logisch klinkt, was destijds een eye-opener voor zowel mij als de klant: de manier waarop weken worden gebruikt in de tijdshiërarchie veroorzaakte de problemen.

Valkuil

De week bleek de grootste valkuil. Bij weken die midden in een maand vielen, ging het nog goed, maar bij weken op de grens van maanden of jaren ontstonden fouten. Zo hoorde week 13 in het ene jaar bij kwartaal 1, en in het andere jaar bij kwartaal 2. Week 53 kwam in sommige jaren wel voor en in andere jaren niet. 1 januari hoorde soms bij de laatste week van het voorgaande jaar. Dit zorgde voor een onoverzichtelijke situatie.

Ook het gebruik van werkweken kan voor problemen zorgen. Wanneer een werkweek van vijf dagen wordt vergeleken met een periode die een weekend bevat, worden data van vijf werkdagen vergeleken met drie werkdagen. Dit levert scheve inzichten op.

Hoe dan wel?

Wat is een week eigenlijk? Dit wil ook nog wel per bedrijf verschillen. Bij 24×7 productiebedrijven doet het weekend hier niet aan af. Bij bedrijven, die werkweken aanhouden, is de maandag tot en met de vrijdag het interessante tijdsvenster.

Het is natuurlijk wel degelijk mogelijk om een week als aggregatie te gebruiken. Ik som hieronder een aantal vuistregels op, die dit mogelijk maken en de valkuilen vermijden:

  • Stop Week nooit in de hiërarchie van de dimensie Tijd. Dit gaat nooit goed op.
  • Gebruik Week als attribuut in de dimensie Tijd om op te aggregeren, maar probeer hier nooit een kolom Vorig Jaar naast te zetten.
  • Uniformeer Week als over de wereld heen wordt gerapporteerd. Er zal een eenduidige definitie nodig zijn. Kies of voor Amerikaanse of voor Europese. Uniformeer start van de week (zondag of maandag) en uniformeer Week nummer 1.
  • Werk liever met de afgelopen zeven dagen als tijdsvenster. Dit levert een datum vanaf en een datum tot en met op. Dit is prima te vergelijken met dezelfde periode van vorig jaar. In beide vensters zullen waarschijnlijk 2 dagen weekend zitten, maar het levert een vergelijkbare dataset op. Neem dan voor lief dat er soms wel en soms niet een feestdag in zit.
  • Creëer desgewenst zogenoemde bins van periodes van 7 aansluitende dagen, of maak hier een formule van, en noem dat ‘weeknummers’. Zeker bij 24×7 bedrijven levert dit veel zinvoller informatie op. Gecombineerd met dagnaam of dagnummer in de week zijn prima inzichten te maken.
  • Bij eerder genoemde implementatie is onder meer een slimme dashboardprompt bedacht, die de afgelopen werkweek als default selecteert. De datums van vorige week maandag tot en met vorige week vrijdag worden hierdoor automatisch gefilterd.

En zo gaat het dus wel: Oracle BI – dimensie Tijd met een hiërarchie zonder de week, maar de week als attribuut.

Uiteraard heeft de bovengenoemde klant een dashboard in Oracle BI voor de leveringen bij klanten in de afgelopen weken gesommeerd per week. Op hetzelfde dashboard is een pagina met te verwachten verzendingen per week gemaakt (zie voorbeeld hieronder). Uiteraard is er ook een dashboard met de te verwachten goederenontvangsten in de komende week per uur van de dag. Deze weken zijn echter geüniformeerd naar Europese standaard. Met de leverancier wordt gecommuniceerd op gewenste leverdatum en nooit op gewenste week. De kans dat een bestelling geplaatst in Amerika dan namelijk een week eerder komt dan verwacht, is nu een voor de hand liggend verhaal geworden.

Oracle BI dashboard – te verwachten goederenontvangst

Jelle Huisman managing partner

Jelle Huisman

Managing Partner