Hogeschool-Universiteit Brussel · Academiejaar 2011-2012 Toegepaste Informatica Naam: Michael...
Transcript of Hogeschool-Universiteit Brussel · Academiejaar 2011-2012 Toegepaste Informatica Naam: Michael...
Hogeschool-Universiteit
Brussel
Academiejaar 2011-2012
Toegepaste Informatica
Naam: Michael Brunclair
Klasgroep: 3IZ
Studentennummer: 229499
Vak: Stage in België
Voorwoord
Toen ik begon aan mijn stage bij FedEx, was het een sprong in het grote onbekende.
Ik kende wel mensen die er werkten, maar niet de manier waarop er gewerkt werd.
Toen ik te horen kreeg dat ik ETL ging ontwikkelen en daar rapporten op ging
maken, wist ik niet goed wat ik ervan moest denken. Maar mijn teamleden hebben
mij door de eerste weken geloodst hebben en mij zijn blijven steunen en helpen met
een glimlach, wat het ook voor mij een plezier maakte om elke dag te komen werken.
Bij deze wil ik mijn teamleden: Vincent Bersez, David Delabelle, Leena Domun, Mark
De Vits en Parthasarathi Ganesan, en mijn manager, Peter De Boel bedanken voor
hun vertrouwen dat ze in mij hebben getoond en hun steun die het mogelijk maakte
voor mij om de eerste stappen te zetten in de BI-wereld. Ik wil ook Myriam De Wolf
bedanken om mij een stageplaats te bezorgen bij dit team.
1
Inleiding Toen ik het bedrijf moest kiezen voor mijn stage , heb ik besloten dat FedEx me de uitdagingen en de kansen zou bieden die ik nodig heb om te evolueren naar iemand die klaar is om het professionele leven in te gaan . Werken bij FedEx biedt heel wat voordelen ten opzichte van leren en werken. Omdat het zo'n groot bedrijf ( 300.000 + werknemers ) is , zal ik in staat zijn om te werken in een multi-culturele omgeving. Ook mede door het feit dat het zo‟n groot bedrijf is zal ik strikte procedures moeten volgen want een groot bedrijf kan het zich niet veroorloven om te werken met verschillende systemen en principes , omdat er dan chaos zou volgen en de projecten en processen zeer inefficiënt zouden ontwikkeld worden. Mijn collega's en ik zullen werken in een team op het vlak van informatie-uitwisseling en opleiding , maar het project zelf zal rusten op mijn schouders , dus ik heb een unieke mix van teamspel en werken in eenzaamheid . Het Global Development Process, dat bij FedEx wordt gebruikt als richtlijn voor projecten, zal mij de mogelijkheden bieden om te werken aan mijn zwakkere administratieve vaardigheden door het eisen van goede Business Requirements , Software Requirements, etc te maken ... Deze documenten zal ik maken met een Agile mindset, die mij het toelaat van de documenten aan te passen terwijl ik in de ontwikkelingsfase van het project zit. Aangezien ik dit project end-to-end zal doen, zal ik veel moeten leren over de technologiën en technieken die FedEx gebruikt. Een van de programma‟s waar ik mee zal moeten leren is TeamForge, een overkoepelend systeem dat eenvoudig toegang biedt tot projectdocumentatie . Het is een web-interface die informatie over de projecten en de documentatie weergeeft . Voor de projecten zelf , zal ik Informatica PowerCenter gebruiken om ETL toe te passen om de enorme hoeveelheden gegevens die gevonden kunnen worden in de databases aan te passen en door te sturen. Ik heb alleen maar oppervlakkig iets gehoord over ETL dus is dit een kans om iets helemaal nieuw bij te leren. Als een manier om de data verzameld door ETL in een gebruiksvriendelijke en volledige wijze informatie weer te geven, zal Business Objects goed te pas komen. Het lijkt op Access rapportage , zodat het een beetje makkelijker te leren zal zijn dan een compleet nieuwe technologie, maar ik zal moeten rekening houden met de behoeften van het bedrijf, in plaats van alleen informatie die ik denk dat getoond zou moeten worden weer te geven . Werken bij FedEx zal zeker een uitdaging zijn, maar de beloningen zijn er in overvloed, als ik rekening hou met de vaardigheden die ik zal verwerven door hier te werken, zowel de soft skills ( communicatie in een multi-culturele omgeving ) als de hard skills ( transformeren van de gegevens, zodat het kan worden begrepen door de dagelijkse gebruikers) .
2
Inhoudsopgave Voorwoord .................................................................................................................. 0
Inleiding ...................................................................................................................... 1
Overzicht van specifieke termen en afkortingen ......................................................... 4
Deel 1 Algemene beschrijving van de stage-opdracht ................................................ 5
1.1 ETL Monitoring .................................................................................................. 5
1.2 CT Meter Reporting ........................................................................................... 7
Deel 2 Technische uitwerking ..................................................................................... 8
2.1 ETL Reporting ................................................................................................... 8
2.1.1 Verzamelen van nodige informatie .............................................................. 8
2.1.2 Database Development ............................................................................... 8
2.1.3 ETL Development ........................................................................................... 8
2.1.4 BO Development ............................................................................................ 9
2.1.5 Testing............................................................................................................ 9
2.2 CT Meter Reporting ......................................................................................... 10
2.1.1 Verzamelen van nodige informatie ............................................................ 10
2.1.2 Database Development ............................................................................. 11
2.1.3 ETL Development ......................................................................................... 11
2.1.4 BO Development .......................................................................................... 12
2.1.5 Testing.......................................................................................................... 12
Deel 3 Kritische SWOT-analyse van het resultaat .................................................... 13
3.1 Strengths ......................................................................................................... 13
3.2 Weaknesses .................................................................................................... 13
3.3 Opportunities ................................................................................................... 13
3.4 Threats ............................................................................................................ 13
Deel 4 Persoonlijk onwtwikkeingsplan (focuscompetenties) ..................................... 14
4.1 actief communiceren in drie talen (mondeling en schriftelijk) ...................... 14
4.2 relaties met collega‟s, opdrachtgevers en/of klanten onderhouden ............ 14
4.3 informatiebehoefte van een organisatie gestructureerd en overzichtelijk
weergeven, gebruik makend van analyse- en modelleringstechnieken ................. 14
4.4 gegevens verzamelen, opslaan en ter beschikking stellen zodat deze op een
correcte en gebruiksvriendelijke manier kunnen worden opgevraagd ................... 15
4.5 een IT-opdracht projectmatig en teamgericht aanpakken met respect voor de
planning ................................................................................................................. 15
3
Bronnenoverzicht ...................................................................................................... 16
Bijlagen ..................................................................................................................... 17
1. Meetings ........................................................................................................ 0
2. GDP compliant documents ............................................................................ 5
Business Requirements Specification .................................................................... 5
Software Requirements ...................................................................................... 13
3. Further project documentation ..................................................................... 19
ERD first version ................................................................................................ 19
ERD final version ............................................................................................... 20
SQL .................................................................................................................... 21
Workflows .......................................................................................................... 24
BO reporting ....................................................................................................... 25
Reference document .......................................................................................... 27
Code Review ........................................................................................................ 0
Report week 3 ...................................................................................................... 1
Report week 4 ...................................................................................................... 3
Report week 5 ...................................................................................................... 5
Report week 6 ...................................................................................................... 7
Report week 7 ...................................................................................................... 9
Report week 8 .................................................................................................... 11
Report week 9 .................................................................................................... 13
Report week 10................................................................................................... 15
Timetable ............................................................................................................. 0
Presentatie ........................................................................................................... 3
4
Overzicht van specifieke termen en afkortingen
BO: Business Objects
Een tool waarmee je reports kunt maken van de data die je verzamelt.
BI: Business Intelligence
De analyse van rauwe data tot iets dat men kan gebruiken om de Business te
verbeteren.
BR/BRS: Business Requirements
EMEA: Europe, Middle East, Africa and Indian subcontinent
De aanduiding voor onze regio binnen FedEx.
ETL: Extract, Transform, Load
Een manier om data te manipuleren en in andere databases te stoppen, de tool die
bij FedEx gebruikt wordt is Informatica Powercenter
FedEx: Federal Express
Het stagebedrijf, een van de grootste koerierdiensten ter wereld.
IPC:Informatica Powercenter
De tool om ETL toe te passen die gebruikt wordt bij FedEx.
GDP: Global Development Process
Het proces dat het verloop van een project dicteert en welke benchmarks er zijn.
OEM: Oracle Enterprise Manager
Een tool om uw servercloud te beheren.
SR/SRS: Software Requirements
Meter: Aanzien als een klant
Direct Served: De landen waar FedEx zelf aanwezig is
5
Deel 1 Algemene beschrijving van de stage-opdracht
1.1 ETL Monitoring
Het BI-team van FedEx EMEA zou meer informatie moeten hebben om te zien of er
workflows falen en wanneer dat juist gebeurt. Er is al een mechanisme in plaats
waardoor er een mail gestuurd wordt als er een workflow faalt, maar niet als hij niet
van start gegaan is(ik denk hierbij aan een outage van de server). Het doel van dit
project is om een aantal rapporten te creëeren die informatie hierover kunnen
versturen.
Uitleg over project
BOBOETLETL FrontendFrontendBackendBackend
Oracle
XML
CSV
DB2
ETL
ETL Repository
XML
Oracle
MySQL
CSV
BO
Informatie over de
workflows die al de
data behandelen,
inclusief error
messages etc.
ETL BO
Het is dan ook belangerijk te weten hoe een workflow juist ineen zit en waar ze in
geïntresseerd zijn. Een workflow is een opeenvolging van sessies. Deze sessies
vertegenwoordigen een mapping die data gaat ophalen uit sources, de data gaat
transformeren en deze gaat laden in targets. Om goed te kunnen opvolgen waar er
6
fouten komen en wanneer ze voorkomen, zijn deze elementen nodig om te laten zien
in een rapport, dus ga ik mij beperken tot alleen die zaken.
Het project zal verschillende fases kennen, die ik allemaal zelf zal doorlopen, behalve
de Move To Production. Het zal bestaan uit Business Analysis, Database
Development,ETL, Business Objects en UAT. Overkoepelend hierover zal ik mij
moeten bezig houden met het GDP, om te voldoen aan de kwalitatieve eisen van
FedEx.
Aangezien het volledig vreemde technologiën zijn waarmee ik ga werken zal ik
verschillende trainingen moeten volgen, waaronder voor het GDP proces onder de
knie te krijgen als om rapporten te laten genereren in Business Objects.
Het uiteindelijke doel van dit project is om een proces te ontwerpen dat data gaat
halen uit een geaggregeerde tabel en die verdelen en transformeren naar een
duidelijke, genormaliseerde database. Hierna zullen er rapporten gegenereerd
worden voor de eindgebruikers waar er mogelijke problemen met de workflows
kunnen worden opgespoord.
Er zal een dagelijks rapport gescheduleerd worden, die de laatste 24 laat zien in de
vorm van een grafiek die de abnormale workflows laat zien(workflows die niet
gelopen hebben, worflows met fouten en workflows die te laat zijn).
Een overzichtsrapport zal gestuurd worden elke week, waar men in de verschillende
dagen kan drillen, met dezelfde gegevens zichtbaar als het dagelijkse rapport.
Als bijhorend rapport zal er ook de mogelijkheid zijn om de data met een gebruiker-
gedefiniëerde range te laten zien, van de workflows die men wil laten zien. De
mogelijkheid zal bestaan om tot op tabelniveau te drillen.
Ik ga gebruik maken van de databases van IPC zelf, reference tables van Informatica
Analyst tool(een web interface waar men tabellen via een GUI kan laten invullen) en
van de VCDE003 database van FedEx.
De programma‟s die ik ga gebruiken om dit project tot stand te brengen zijn:
- Informatica Powercenter 9.1.0 - Informatica Analyst Tool (webservice) - Oracle SQL Developer - Business Objects XI 3.1
o Designer o Web Client
Aangezien het enige dat ik van het hierbovenvernoemde ken Oracle SQL is, zal het
een uitdaging zijn om dit te verwezelijken.
7
1.2 CT Meter Reporting
Terwijl het ETL Monitoring project werd getest op productiedata, is mij het volgende
project toegewezen geweest. Het project zal er voornamelijk over gaan dat ik het
aantal actieve meters en CT1 meters per Direct Served land zal moeten weergeven.
Een CT Meter wordt door de volgende criteria bepaald:
- Een CT Meter moet gemiddeld 5 of meer pakjes per dag versturen
- Een CT Meter moet in een specifieke Sharepoint lijst te vinden zijn.
Het uiteindelijke rapport zal geaggregeerde data bevatten van verschillende bronnen:
- Een Sharepoint list waar het Customer Technology departement ze manueel
moeten invullen - Het regionaal Data Warehouse voor de effectieve meters die paketten
versturen.
Door de manier waarop de data gestructureerd is en de business het vereist komen
er een paar moeilijkheden aan het licht waaronder hoe ik de data uit de Sharepoint
list ga kunnen exporteren.
Terwijl het vorige project meer voor de nieuwe software aan te leren was kan ik nu
naar de business toe hun vereisten te weten komen en vlugger een idee geven hoe
ik wat ga doen.
De omgeving waar de data gaat verwerkt worden zal volledig dezelfde zijn als in het
eerste project.
1 Customer Technology
8
Deel 2 Technische uitwerking
2.1 ETL Reporting
2.1.1 Verzamelen van nodige informatie
Nadat we waren overeengekomen welk project ik zou doen, heb ik samen met mijn
project lead samen gezeten om te zien welke informatie er zou moeten weergegeven
worden en wat er met de data zal moeten gebeuren om die op een
gebruiksvriendelijke manier weer te geven.
Eerst en vooral moet de data uit een volledig geaggregeerde hoofdtabel worden
gehaald en gesorteerd op basis van wat de rij voorstelt(Waar we naar zoeken zijn
workflows, sessies en map targets en sources). Dus heb ik een ERD samengesteld
van wat we eerst dachten dat nodig ging zijn. Hierna begon ik aan de database
development.
Maar al vlug kwamen we tot de conclusie dat de eerste versie niet zou werken door
het feit dat we de relaties tussen verschillende data verkeerd verstonden.Nadat de
tweede versie was ontwikkeld kwamen we tot een akkoord en veranderde ik een
paar dingen in de database, aangezien de veranderingen nogal diepgaand waren
had ik daardoor wel redelijk veel werk om aan te passen. Doorheen het project
bleven aanpassingen aan de documentatie gedaan worden, als we op nieuwe cases
stuiten die onvoorzien waren.
2.1.2 Database Development
Toen de eerste versie van de ERD was gemaakt, begon ik de database te
ontwikkelen. Dit ging aanvankelijk redelijk vlug, met behulp van de gemaakte ERD
maar er werden al vlug aanpassingen gemaakt, 1 keer zo ver dat de enige originele
tabel die overbleef was FCT_WORKFLOW_RUN. Hierna was de database redelijk
stabiel en werd er niet veel veranderd, buiten de velden LOAD_DDM en
ORIGINAL_ID.
Nadat de database SLA‟s en extra informatie over de workflow ondersteunde, heb ik
de reference tables aangemaakt in de Informatica Analyst tool. Door het feit dat het
niet mogelijk is om kolommen aan te passen, was het wel enorm lastig om ze op punt
te krijgen.
2.1.3 ETL Development
Nadat de basis van de database was gelegd, begon het ontwikkelen van de ETL op
basis van logica die het ERD volgen. Door het feit dat ik niet bekend was met de
verschillende transformaties en mogelijkheden van Informatica PowerCenter, nam
het redelijk wat tijd in beslag om bepaalde dingen te doen. Ik kreeg hier veel steun
van mijn teamleden die mij enorm hielpen als ik ergens vastzat. In de workflow heb ik
twee denkwijzes toegepast in het verwerken van de data.
9
Ten eerste, vertrok ik vanuit het standpunt van de workflow. Een workflow dat heeft
gerund kan normaal zijn, te laat zijn, of met een error afgelopen, deze data was al
beschikbaar en was dus voornamelijk een kwestie van de SLA‟s ermee vergelijken
en invullen of het in orde is of niet.
Nadat die functionaliteit werkte ben ik beginnen te denken vanuit het SLA-standpunt,
de workflows die niet hebben gelopen zijn hierbij het voornaamste doelwit. Eerst gaat
de mapping M_CHECK_SLA_RUNS voor alle SLA‟s alle workflows genereren die
zouden moeten draaien. Daarna, om de grootte van de tabel te beperken, wordt het
aantal gesimuleerde rijen met het aantal reële rijen per workflow vergeleken en
alleen degene wiens aantallen verschillen worden in de tabel opgeslagen. In de
mapping erna (M_INSERT_DUMMIES_IN_WORKFLOWS) worden met een
SQL_transformatie de workflows die niet in de tabel al zitten erin gezet.
2.1.4 BO Development
Eens dat de ETL-development bijna compleet was. Was het tijd om de resultaten in
rapporten te gieten. Voor ik an de rapporten zelf kon beginnen, moest ik wel eerst de
Universe aanmaken, wat natuurlijk extra bijleren betekende, na een sessie met de
BO-experte was ik zeker genoeg dat ik de Universe zelf kon maken.
In tegenstelling tot je standard Count() expressies in SQL, moest ik nu werken met
een Decode(,) expressie om ervoor te zorgen dat het juiste aantal records werd
getelt.
2.1.5 Testing
Het testen gebeurde na elke aanvulling van functionaliteit in de ETL, bijvoorbeeld: na
het toevoegen van de SLA_COMPLIANT flag, werden er SLA‟s toegevoegd en
werden die workflows getest op compliance. Na de volledige ontwikkeling van de BO-
rapporten werd er nog eens op alle functionaliteiten getest. Deze resultaten werden
dan geregistreerd in de testcase documentatie en zijn geapproved door de project
lead.
10
2.2 CT Meter Reporting
2.1.1 Verzamelen van nodige informatie
tegenstelling tot het eerste project zijn de business voor dit project mensen die geen
ervaring hebben met de IT-afdeling. Om te beginnen heb ik met Leena Domun (mijn
project lead) en de business samen gezeten met een paar voorbereide vragen.
Ze kon mij zeggen dat voor de CT meters er een sharepoint lijst bestaat, maar ze
wist niet zeker hoe ik eraan zou kunnen geraken dus verwees ze mij door naar
derden die daar meer van af weten.
Start
Collect data from past
month(EDW)
Collect data from Sharepoint
Exclude of mutual data
Count per country and
software
Insert into front-end
table
Stop
11
Er bestaat wel een difficulty in het feit dat niet alle CT meters in de sharepoint lijst
staan. Een ander criteria voor een meter om een CT meter te zijn is dat die meer dan
5 pakjes per dag verstuurt. Om dit te berekenen heb ik ook de werkdagen nodig per
land waar het over gaat, aangezien dit per land apart wordt vastgelegd zou ik moeten
weten vanwaar ik deze data zou kunnen halen. Voor de meeste informatiebronnen
verwees ze mij door naar derden, wat al redelijk ingewikkeld zou worden. Nadat ik te
horen kreeg dat ik geen directe access zou krijgen voor de sharepoint list maar het
met een Access Linked Tables zou moeten doen, werd het steeds ingewikkelder en
ingewikkelder.
2.1.2 Database Development
Om de benodigde gegevens te verkrijgen moest ik de data gaan ophalen uit de
regionale data warehouse. De tabellen die ervoor zijn aangemaakt dienen om de
data te aggregeren.
Uit de Access Database komt een linked table met de data uit een Sharepoint lijst.
Die wordt geëxporteerd door middel van een VBA macro naar een .csv bestand met
alle relevante informatie (zoals child meters en Software versie).
De eindgebruiker gaat met diezelfde Access database de landen waarin ze
geïntresseerd zijn kunnen aanpassen en de kolomnamen voor bepaalde
softwaretypes kunnen laten zien.
2.1.3 ETL Development
Door het feit dat de bron uit de regionale datawarehouse komt en over het aantal
paketten per dag gaat uit heel EMEA, moet de workflow enorm performant zijn om de
load op de server te minimaliseren.
Aangezien Informatica Powercenter niet zo graag Access databases heeft, had ik
besloten van de relevante informatie te exporteren naar een. Csv via een query-
macro. In de Query zocht ik al de data op met de benodigde filters en in de macro
was het gewoon de file exporteren.
De primaire workflow gaat over data per maand, en telt het aantal paketten per
operationele dag om te zien of het een Customer Technology klant is. De
operationele dagen worden gehaald uit een .csv file met de operational days per land
per maand.
12
2.1.4 BO Development
Er zullen 2 rapporten moeten gemaakt worden, een maandelijks rapport en een
semestrieel rapport. Door het werken met twee fact tabellen die een
dimensie(semester) deelden, moest ik ook voor de eerste keer met contexts werken,
wat op zich niet zo moeilijk is, maar je moet het wel leren.
2.1.5 Testing
Dit project is tijdens de stage niet officieel in de testing fase geraakt, maar zoals bij
het eerste project heb ik wel geregeld afgewerkte modules getest. Bijvoorbeeld het
systeem dat velden normaliseert is uitvoerig getest geweest, aangezien dat in Java
geschreven is. Zelfs tot zover om te zien of de normaliseer methodes die ze normaal
gebruiken performanter zijn of niet. Het resultaat was dat de nieuwe Java methode
(die het team nog niet veel heeft gebruikt of wil gebruiken) maar een oogwenk sneller
was voor 1 miljoen rijen.
13
Deel 3 Kritische SWOT-analyse van het resultaat
3.1 Strengths
Het BI-team kan nu beter opvolgen waar er problemen zitten bij de workflow. Vroeger
was het zo dat ze een e-mail kregen als een workflow faalde, maar bijvoorbeeld niet
als er een onaangekondigde outage was, nu, door middel van de rapporten wel.
Het laat de manager toe om snel en accuraat de gegevens van verschillende
projecten op te vragen en aan de eindgebruikers van de andere workflows hun
vragen te antwoorden.
3.2 Weaknesses
Als ik vertrek bij FedEx en ze willen er iets aan veranderen of aan aanpassen, dan
moeten ze er meer tijd insteken dan anders. Dit wordt goedgemaakt door het
reference document dat ik als documentatie heb gemaakt.
Het genereert veel onnodige rijen, maar deze zijn nodig om de effectieve
ontbrekende rijen in te vullen. Die rijen worden ook meteen na ze nodig zijn geweest
verwijdert om hun footprint zo laag mogelijk te houden.
3.3 Opportunities
Dit proces zorgt ervoor dat de ETL beter onder controle wordt gehouden en dat er
vlugger gemerkt wordt als er een probleem is, wat de overall efficiency van de
workflows ten goede zal komen.
Het kan er ook voor zorgen dat management meer wordt betrokken bij de resultaten,
als de rapporten in een business-vriendelijke vorm gegoten worden.
3.4 Threats
Een van de grote threats is dat, als de workflows zelf uitvalt, dat er dan geen
notificatie mogelijk is aan het team. Natuurlijk kun je wel zeggen dat, als er in het
dagelijks rapport nog altijd data van de dag ervoor staat, dat mensen de link wel
zullen leggen.
Als de service zelf stopt met draaien, wordt er geen rapport gegenereerd. Dit is
natuurlijk een van de slechtst mogelijke scenario‟s, maar het is mogelijk. Om dit
tegen te gaan is er besloten geweest om het proces in development te laten draaien,
los van de productieomgeving. Dit zorgt ervoor dat, zelfs als productie uitvalt, men
nog altijd het kan zien in het rapport.
14
Deel 4 Persoonlijk onwtikkelingsplan (focuscompetenties)
4.1 actief communiceren in drie talen (mondeling en schriftelijk)
Door het feit dat FedEx een dergelijk groot bedrijf is, is het praktisch
onmogelijk voor mij om niet te worden ondergedompeld in zowel Frans als
Engels. Aangezien Engels de voertaal is heb ik voornamelijk Engels gepraat.
In het team zelf werd er redelijk wat Frans gepraat, dus kon ik mijn niveau van
Frans redelijk goed bijtrekken en ik voel mij dus ook meer vertrouwd met de
taal.
4.2 relaties met collega’s, opdrachtgevers en/of klanten onderhouden
Door in een team te werken en voor business te moeten werken moest ik
geregeld in contact staan met derden. Wekelijkse teammeetings om mijn
vooruitgang te rapporteren en de lay-out van het kantoor droegen daaraan bij.
Door conference calls heb ik kunnen meemaken hoe het contact met de
business verloopt en hoe het soms mis kan lopen ook.
Bijvoorbeeld bij het vaststellen van de Business Requirements, moet er een
transparante communicatie tussen business en IT zijn. Door het gebrek aan
mijn ervaring, was dit in het begin een moeilijk punt, maar door de hulp van
het team, werd het uiteindelijk wel in de goede banen geleidt. Met als gevolg
dat ik er ook beter in werd.
4.3 informatiebehoefte van een organisatie gestructureerd en
overzichtelijk weergeven, gebruik makend van analyse- en
modelleringstechnieken
Het BI-team‟s voornaamste doel is projecten realiseren die personen van
andere departementen in staat stellen de massa aan rauwe data die in het
Data Warehouse te vinden is op een duidelijke en zinvolle manier te zien. Dus
is het vanzelfsprekend dat mijn werk ook aan deze criteria moet voldoen.
Ook voor het project af was, was het nodig om de data die beschikbaar zou
zijn duidelijk te laten zien aan de hand van ERD‟s(in bijlage).
Voor het tweede project was dit laatste zeker een noodzaak, aangezien men
met zoveel verschillende bronnen te maken had.
15
4.4 gegevens verzamelen, opslaan en ter beschikking stellen zodat deze
op een correcte en gebruiksvriendelijke manier kunnen worden
opgevraagd
Het hele proces van DBA-ETL-Reporting is speciaal ontwikkeld om gegevens
te verzamelen en weer te geven op een gebruiksvriendelijke manier door
middel van rapporten die geregeld worden opgestuurd naar de personen die
erom vragen.
Door de natuur van de data die binnenkomt, moet er meestal veel gewerkt
worden aan het leesbaar en gebruiksvriendelijke manier voorstellen van de
data.
4.5 een IT-opdracht projectmatig en teamgericht aanpakken met respect
voor de planning
Door het feit dat mijn kennis van Business Objects en ETL niet verder reikte
dan “er is van gehoord hebben”, was er een periode waar ik heel nauw met
mijn team moest samenwerken om de kneepjes van het vak te leren. Deze
periode heeft me enorm geholpen in het succesvol vervolledigen van de stage.
Een van de opportunities voor mij is het werken volgens een vooropgesteld
sjabloon(het GDP). Ik heb mij moeten plooien naar het werken volgens
standaarden en ik denk dat dit mij enorm heeft geholpen voor de toekomst.
16
Bronnenoverzicht
Business Objects IX 3.1Universe Designer Manual
Informatica Powercenter 9.1.0 Manual
Bijlagen
17
Bijlagen
1. Meetings
Meeting 1: report
Date: 20/08/2013 – 13u
Location: Office
Attendees:
- David Delabelle
- Leena Domun
- Michael Brunclair
- Vincent Bersez
Planning:
1. Workflow and function of the team
2. Explanation of the first project
3. Brainstorm about the first project
4. Explanation of the second project
5. Brainstorm about the second project
6. Explanation of the third project
7. Brainstorm about the third project
Summary:
The BI-team is responsible for the functioning and reporting of the databases of
FedEx. They are first and foremost responsible for maintaining and troubleshooting
the ETL workflows and the databases. Secondly they develop reports about the data
in BO, the reporting tool used in FedEx. ETL receives its data from a lot of different
sources, ranging from DB2, to flat files, to XML-files.
1
The first project is a project for the BI-team itself. The project revolves around the
reporting of bad ETL workflows. At the moment, the team only receives an e-mail
when an ETL-workflow has started, but has encountered an error. When a workflow
doesn‟t start at all, it does not send a mail. The goal of this project is to provide
statistics on workflows (how many have started, how long do they take, how many
have encountered an error,…) and secondly to compare the status of the workflows
with their SLA‟s and to send a mail whenever they fail to comply with their respective
SLA‟s. The E-mail alert posed some problems, since we first thought to do it with
another ETL workflow, but if that fails, we won‟t get notified something is wrong, so
we decided to use OEM to send that mail.
Hardest part: involves another new technology=> OEM
2
The second project is about the reporting of database downtime. At FedEx, we use a
dashboard to poll the databases we use. The goal is to develop a report which states
the server downtime and send that to the appropriate manager, but there needs to be
a filter to remove the redundant servers from the report, since that would cause
wrong data. Since the polls happen at 15 second intervals, they may happen on the
moment that one of the redundant servers goes down and the other hasn‟t started
yet, so they can give a false negative, we will still need to look into that problem, but
the proposed solution was to leave out the one-time negatives and only report on
servers that are down multiple polls in a row.
3
The third project is for a non-IT department which involves the counting of automated
package meters and sorting them by country and by product and over the last six
months, this will involve creating a dimensional database in the Universe. The
difficulty in this project is mainly is the communication between the departments since
this will be kind of a busy time.
After some debate we agreed that the third project will be least favorable because of
the time it will take. The communication with the other department will take a lot of
time, so they fear it may not be finished at the end of my internship.
4
Meeting 2: report
Date: 26/08/2013 – 10u
Location: Office
Attendees:
- Michael Brunclair
- Peter De Boel
Planning:
8. Administration
9. Explanation of the projects
10. Decision of the project
11. In depth explanation
12. Planning
Summary:
At the beginning of the meeting we handled the administrative tasks like signing the
contract and contact Ms. Teerlinck.
Afterwards Michael explained what project he felt was the best for this internship. The
ETL Workflow monitoring had as arguments that it was the most important one and
that it provided the most learning opportunities. It has the highest difficulty because
he will have to work with metadata on the workflows and provide a mailing system
which does not fail.
The second project was the database monitoring since it is a bit easier in terms of
work, but the logical aspect will be the most difficult, for more information on this, see
the BR for project 2.
The third project will provide the least challenge in that the information is supposedly
already available. Businesswise it has the second priority, but since it is quicker to be
done, it has the least priority for him.
We decided that the workflow project will be done first, as it has the highest priority.
The planning of this week will consist of the BR that will be done in more detail and
the SRS that will be done in High level.
5
2. GDP compliant documents
ETL Workflow Monitoring
Business Requirements Specification
Version 2.5 16/09/13
Master Document Location:
6
Key Contacts
Role Name Employee/Vendo
r Number
Approver?
Vincent Bersez
Michael Brunclair 945944
Peter De Boel Y
Janny Ekelson Y
Reference Documents
Document Name Owner Location
ETL Statistics 2011 Vincent Bersez Documentatie
7
TABLE OF CONTENTS
1 Project Description 8
2 Business Process Flows 8
2.1 High-Level Flows 8
2.2 Detailed Flows 5
3 Assumptions and Constraints 5
4 General Requirements 5
5 Detailed RequiREments 6
6 Reconciliation of buSiness Requirements to Features 6
7 Glossary 6
8
Project Description
The goal of this project is to detect whether an ETL workflow has started and how
long it takes to complete. It will be molded into a BO-report which will be sent weekly
to the administrators, giving additional info about the workflows and their projects.
Additionally there will be an e-mail alert when the workflow doesn’t comply with its
SLA.
Business Process Flows
High-Level Flows
Data is going into ETL, which generates workflows and spreads its data over different
databases. The goal of the project will be to automate the sending of a mail when an
ETL workflow fails to comply with its SLA.
ETL Workflow Monitoring – Before
AdministratorsETL BO
ETL
Running
Workflow
information
Data from
various
sources
Data usage
Error?
Mail to
Administrator
Yes
9
ETL Workflow Monitoring
AdministratorsETL BO
ETL
Running
Workflow
information
Report
Data from
various
sources
Data usage
Error?
Mail to
Administrator
Yes
Detailed Flows
An ETL workflow fails to comply with its SLA, so it will be included in the report
that states the failure rates of the workflow. In addition, a mail will be sent to the
administrators every 4 hours with the failed workflows. In the reporting, there
must be the possibility to see each session separately, so it is easier determined
where the problem lies.
It must be possible to see which people to contact for each workflow and of what
project it is part of.
Assumptions and Constraints
It must be assumed that it is possible that the workflow responsible for the
reporting of the failed workflows can fail as well. As such it will need to be made
so that it has the information in the report as well.
For the information about the people, it will have to be input manually, and thus,
mistakes are possible.
10
General Requirements
<BR0001> a mail must be sent 6 times a day with the workflows that fail to
comply with their SLA.
<BR0002> a report stating the % of failed reports or reports that take too much
time will be sent to the administrators every week.
<BR0003> there must be a redundancy to ensure the administrators are aware
of the problem, should the mail fail to be sent.
<BR0004>The data must be kept for 2 years in storage.
<BR0005>Additional information must be viewable on workflow-level.
Detailed Requirements
<BR1000> the weekly report must be sent on Monday.
<BR2000> the mails stating the failed SLA compliances must be sent every 4
hours.
<BR3000> the reporting and SLA checks must be done for all workflows.
<BR4000> the mail will be sent to [email protected].
<BR5000> You must be able to see the sessions separately.
<BR6000> Contacts and project information must be viewable in the report.
11
Reconciliation of Business Requirements to Features
The workflows will be monitored by a weekly report that will be sent to the ETL-
mail account of FedEx, when a workflow fails to meet with its SLA, a mail will be
prepared to be sent twice a day.
In the reports, there will be the option to view which workflow belongs to which
project and who to contact in case of problems.
Glossary
12
Change History
Date By Description of Change
20/08/2013 Michael Brunclair First version
21/08/2013 Michael Brunclair Added more information on features, key document, improved wording.
28/08/2013 Michael Brunclair Added detailed requirements.
29/08/2013 Michael Brunclair Added drilldown to Session-level
16/09/2013 Michael Brunclair Added scopechange
13
ETL Workflow Monitoring
Software Requirements
FWRS Number 158241
Version 4 16/09/2013
Master Document Location: <loc>
14
Key Contributors
Role Name Employee/Vendo
r Number
Recomme
nded
Reviewer/
Approver
*
Michael Brunclair 945944
Peter De Boel A
Vincent Bersez R
Janny Ekelson A
*HFLOW will be utilized to capture the required approvals
Reference Documents
Document Name Owner Location
ERD_WF_Monitoring_V2.5 Michael Brunclair Documenation
15
TABLE OF CONTENTS
1 Project Description ................................................... Error! Bookmark not defined.
2 Assumptions and Constraints ................................................................................. 16
3 Software Requirements .......................................................................................... 16
4 System Interfaces ................................................................................................... 16
4.1 Data Changes for New System Interfaces ......................................................... 16
4.2 Data Changes for Existing System Interfaces ..... Error! Bookmark not defined.
5 Revision History...................................................................................................... 17
16
Project Description
The project’s goal is to provide the BI-team with a report on failed workflows every
week and to send an e-mail once every 4 hours with all the failed workflows. The report
will also contain additional information about the workflow, like Business contact and
such.
Assumptions and Constraints
We have to assume that the workflow metadata does not have their SLA listed, so we will
have to look into how to add their respective SLA’s.
When a SLA fails, we will need to send an e-mail, but we can‟t do that with ETL
because, in the event that that workflow fails as well, we won‟t know it.
Software Requirements
<SR0001>There will need to be a report made in BO about the failure rate of the
workflows.
<SR0002>In the report there must be the possibility to drill down to session-level.
<SR0003>There will need to be a mailing system made in OEM to send mails
when workflows fail.
<SR0004>Because of the way the source data is stored, there will need to be a
transformation into a dimensional database for ease of access.
<SR0005>There has to be additional information regarding the workflows, to be
found in a reference table which is updated manually in Informatica Analyst Tool
System Interfaces
Data Changes for New System Interfaces
In the INFORMATICA-BO interface a formatting on the workflow name will have to be
done to get rid of the timestamp in it.
To get easier details in the BO report, the BO-source will be a dimensional
database with 3 fact tables.
17
Revision History
Version Date By Description of Change
1 23/08/2013 Michael Brunclair
First version of document.
2 28/08/2013 Michael Brunclair
Adding Requirements, Data changes and revisioning
3 02/09/2013 Michael Brunclair
Adding Data changes, modifying project description
4 04/09/2013 Michael Brunclair
Update for ERD
5 16/09/2013 Michael Brunclair
Added scope change
18
Addenda
DM_WORKFLOW
PK WF_ID
WF_NAME
FK1 PROJECT_ID
PROBLEM
SERVICE_DESK_CONTACT
ETL_FIRST_CONTACT
IT_FUNCTIONAL_FIRST_CONTACT
BUSINESS_CONTACT
DESTINATION_SYMPHONY_PROFILE
DM_TABLE
PK TABLE_ID
TABLE_NAME
DM_SESSION
PK SESSION_ID
SESSION_NAME
FT_WORKFLOW_RUN
PK WF_RUN_ID
ROWS_AFFECTED_SOURCE
ROWS_AFFECTED_TARGET
TRANS_ERRORS
DATE_STARTED
DATE_STOPPED
WF_ERROR_CODE
WF_ERROR_MSG
FK1 WF_ID
LOAD_DDTM
DURATION
FT_SESSION_RUN
PK SESSION_RUN_ID
ROWS_AFFECTED_SOURCE
ROWS_AFFECTED_TARGET
DATE_STARTED
DATE STOPPED
SESS_ERR_CORDE
SESS_ERR_MSG
FK2 SESSION_ID
FK1 WF_RUN_ID
LOAD_DDTM
DURATION
FT_SESSION_RUN_DETAIL
PK SESS_DET_ID
FK2 SESSION_RUN_ID
ROWS_AFFECTED
DATE_STARTED
DATE STOPPED
SOURCE_TARGET
FK1 TABLE_ID
LOAD_DDTM
MAP_ERR_CODE
MAP_ERR_MSG
DURATION
SLA
PK SK_SLA_ID
FK1 WF_ID
REPETITIVE
UNIT
PERIOD
Project
PK ID
PROJECT_NAME
19
3. Further project documentation
ERD first version
DM_WORKFLOW
PK WF_ID
WF_NAME
SLA
DM_TABLE
PK TABLE_ID
TABLE_NAME
JOIN_SESSION_TABLE
FK1 TABLE_ID
FK2 SESSION_ID
SOURCE_TARGET
DM_SESSION
PK SESSION_ID
SESSION_NAME
JOIN_WF_RUN_SESSION
FK1 WF_RUN_ID
FK2 SESSION_RUN_ID
FT_WORKFLOW_RUN
PK WF_RUN_ID
ROWS_AFFECTED_SOURCE
ROWS_AFFECTED_TARGET
TRANS_ERRORS
DATE_STARTED
DATE_STOPPED
WF_DURATION
WF_ERROR_CODE
WF_ERROR_MSG
FK1 DM_WORKFLOW
FT_SESSION_RUN
PK SESSION_ID
ROWS_AFFECTED_SOURCE
ROWS_AFFECTED_TARGET
DATE_STARTED
DATE STOPPED
SESS_DURATION
SESS_ERR_CORDE
SESS_ERR_MSG
MAP_ERR_CODE
MAP_ERR_MSG
DM_SESSION_ID
20
ERD final version
DM_WORKFLOW
PK WF_ID
WF_NAME
FK1 PROJECT_ID
PROBLEM
SERVICE_DESK_CONTACT
ETL_FIRST_CONTACT
IT_FUNCTIONAL_FIRST_CONTACT
BUSINESS_CONTACT
DESTINATION_SYMPHONY_PROFILE
DM_TABLE
PK TABLE_ID
TABLE_NAME
DM_SESSION
PK SESSION_ID
SESSION_NAME
FT_WORKFLOW_RUN
PK WF_RUN_ID
ROWS_AFFECTED_SOURCE
ROWS_AFFECTED_TARGET
TRANS_ERRORS
DATE_STARTED
DATE_STOPPED
WF_ERROR_CODE
WF_ERROR_MSG
FK1 WF_ID
LOAD_DDTM
DURATION
FT_SESSION_RUN
PK SESSION_RUN_ID
ROWS_AFFECTED_SOURCE
ROWS_AFFECTED_TARGET
DATE_STARTED
DATE STOPPED
SESS_ERR_CORDE
SESS_ERR_MSG
FK2 SESSION_ID
FK1 WF_RUN_ID
LOAD_DDTM
DURATION
FT_SESSION_RUN_DETAIL
PK SESS_DET_ID
FK2 SESSION_RUN_ID
ROWS_AFFECTED
DATE_STARTED
DATE STOPPED
SOURCE_TARGET
FK1 TABLE_ID
LOAD_DDTM
MAP_ERR_CODE
MAP_ERR_MSG
DURATION
SLA
PK SK_SLA_ID
FK1 WF_ID
REPETITIVE
UNIT
PERIOD
Project
PK ID
PROJECT_NAME
21
SQL
Creating tables drop table DM_WORKFLOW;
drop table DM_SESSION;
drop table DM_TABLE;
drop table FCT_SESSION_DETAIL;
drop table FCT_SESSION_RUN;
drop table FCT_WORKFLOW_RUN;
drop table FT_SESSION_DETAIL;
drop table FT_SESSION_RUN;
drop table FT_WORKFLOW_RUN;
drop table DM_SLA;
drop table tch_data_load_time_stamp;
drop table FCT_DUMP_WORKFLOW;
drop table FCT_SQL_ERROR_LOG;
truncate table DM_WORKFLOW;
truncate table DM_SESSION;
truncate table DM_TABLE;
truncate table FT_SESSION_DETAIL;
truncate table FT_SESSION_RUN;
truncate table FT_WORKFLOW_RUN;
truncate table FCT_SESSION_DETAIL;
truncate table FCT_SESSION_RUN;
truncate table FCT_WORKFLOW_RUN;
truncate table DM_SLA;
truncate table tch_data_load_time_stamp;
truncate table FCT_DUMP_WORKFLOW;
truncate table FCT_SQL_ERROR_LOG;
create table FCT_SQL_ERROR_LOG(ERROR_ID int not null, ERROR_MSG
varchar2(250) not null,LOAD_DDM date not null, PRIMARY KEY(ERROR_ID));
create table BACKUP_FDX_WF_LAST_RUN as (select * from
TMP_FDX_WF_LAST_RUN);
create table tch_data_load_time_stamp(time_stamp_id int not null,
Start_Time date not null,
end_time date not null,
last_workflow_end_time date not null,
last_workflow_start_time date not null,
Succeeded varchar2(1) int not null,
primary key(time_stamp_id));
create table DM_PROJECT(PROJECT_ID int not null, PROJECT_NAME
varchar2(50),LOAD_DDM date not null, PRIMARY KEY(PROJECT_ID));
create table DM_WORKFLOW(WF_ID int not null,
WF_NAME varchar2(20),
PROJECT_ID int not null,
PROBLEM varchar2(1500),
Service_Desk_Contact varchar2(100) not null,
ETL_FIRST_CONTACT varchar2(100) not null,
IT_FUNCTIONAL_FIRST_CONTACT varchar2(100) not null,
BUSINESS_CONTACT varchar2(100),
DESTINATION_SYMPHONY_PROFILE varchar2(100),
LOAD_DDM date,
22
primary key(WF_ID));
create table DM_SLA(WF_ID int not null,
REPETITIVE varchar2(1) not null,
UNIT varchar2(5),
PERIOD int not null,
LOAD_DDM date,);
create table DM_TABLE(TABLE_ID int not null,
TABLE_NAME varchar2(20),
LOAD_DDM date,
primary key(TABLE_ID));
create table DM_SESSION(SESSION_ID int not null,
SESSION_NAME varchar2(20),
LOAD_DDM date,
primary key(SESSION_ID));
create table DM_PROJECT(PROJECT_ID, PROJECT_NAME, );
create table FT_SESSION_DETAIL(SESS_DET_ID int not null,
SESSION_ID int not null,
TABLE_ID INT NOT NULL,
ROWS_AFFECTED_SOURCE INT,
ROWS_AFFECTED_TARGET INT,
DATE_STARTED date not null,
DATE_STOPPED date,
LOAD_DDM date,
SOURCE_TARGET varchar2(1) not null,
MAP_ERR_CODE int,
MAP_ERR_MSG varchar2(200),
Original_ID int not null,
TARGET_REJECTED_ROWS int,
primary key(SESS_DET_ID));
create table FT_SESSION_RUN(SESS_RUN_ID int not null,
ROWS_AFFECTED_SOURCE int,
ROWS_AFFECTED_TARGET int,
DATE_STARTED date,
DATE_STOPPED date,
SESS_DURATION int,
DM_SESSION_ID int not null,
RUN_WORKFLOW_ID INT NOT NULL,
INST_ERR_CODE varchar2(10),
INST_ERR_MSG varchar2(200),
LOAD_DDM date,
Original_ID int not null,
primary key(SESS_RUN_ID));
create table FT_WORKFLOW_RUN(SK_WF_RUN_ID int not null,
ROWS_AFFECTED_SOURCE int,
ROWS_AFFECTED_TARGET int,
TRANS_ERRORS int,
DATE_STARTED date not null,
DATE_STOPPED date,
WF_DURATION int,
DM_WORKFLOW int not null,
23
WF_ERR_CODE varchar2(10),
WF_ERR_MSG varchar2(200),
LOAD_DDM date,
SLA_COMPLIANT varchar2(1),
Original_ID int not null,
primary key(WF_RUN_ID));
create table FCT_SESSION_DETAIL(SESS_DET_ID int not null,
SESSION_ID int not null,
TABLE_ID INT NOT NULL,
ROWS_AFFECTED_SOURCE INT,
ROWS_AFFECTED_TARGET INT,
DATE_STARTED date not null,
DATE_STOPPED date,
LOAD_DDM date,
SOURCE_TARGET varchar2(1) not null,
MAP_ERR_CODE int,
MAP_ERR_MSG varchar2(200),
Original_ID int not null,
TARGET_REJECTED_ROWS int);
create table FCT_SESSION_RUN(SESS_RUN_ID int not null,
ROWS_AFFECTED_SOURCE int,
ROWS_AFFECTED_TARGET int,
DATE_STARTED date,
DATE_STOPPED date,
SESS_DURATION int,
DM_SESSION_ID int not null,
RUN_WORKFLOW_ID INT NOT NULL,
INST_ERR_CODE varchar2(10),
INST_ERR_MSG varchar2(200),
LOAD_DDM date,
Original_ID int not null);
create table FCT_WORKFLOW_RUN(SK_WF_RUN_ID int not null,
ROWS_AFFECTED_SOURCE int,
ROWS_AFFECTED_TARGET int,
TRANS_ERRORS int,
DATE_STARTED date not null,
DATE_STOPPED date,
WF_DURATION int,
DM_WORKFLOW int not null,
WF_ERR_CODE varchar2(10),
WF_ERR_MSG varchar2(200),
LOAD_DDM date,
SLA_COMPLIANT varchar2(1),
Original_ID int not null);
24
Workflows
25
BO reporting
Universe
26
Report
27
Reference document
Reference document
ETL monitoring
28
TABLE OF CONTENTS
TABLE OF CONTENTS...................................................................................................................... 28
1 Adding a workflow......................................................................................................................... 29
1.1 Workflow Details .................................................................................................................... 29
1.2 SLA Details ............................................................................................................................ 29
2 Translating the report .................................................................................................................... 30
2.1 What kind of reports .............................................................................................................. 30
2.1.1 Daily ................................................................................................................................... 30
2.1.2 Weekly ............................................................................................................................... 30
2.1.3 Variable .............................................................................................................................. 30
2.2 The graph .............................................................................................................................. 30
2.3 The table................................................................................................................................ 30
3 Revision History ............................................................................................................................ 33
29
Adding a workflow
Workflow Details
When you receive the details about the workflow (regarding project, contacts, what to
do when there‟s a problem…), it is a good habit to fill in the reference table with them.
This can be found in the Informatica Analyst tool2. Here, you:
1. Log in with your OLAP 2. Go to project “IT_ETL” 3. Click on the table ETL_MONITOR_PROJECT_DATA 4. Fill in the available information, with the missing information as “NONE”
Now, whenever the report is run, the data will be added to that workflow.
SLA Details
After it is determined when and how the workflow should run, you should add the
workflow to the SLA reference table, this can also be found in the Informatica Analyst
tool1. To fill in the SLA data you:
1. Log in with your OLAP 2. Go to project “IT_ETL” 3. Click on the table SLA_REFERENCE_IPC_MONITORING
4. Fill in the SLA according to this guideline: a. Repetitive:
i. Yes if the workflow should run EVERY x time(for example: every hour, every 2 days, every 6 months)
ii. No if the workflow should HAVE RUN BY x time(for example: by 2PM, by the third of the month, by September)
b. Unit: i. HOUR: indicates the amount is in hours ii. DAY: indicates the amount is in days iii. MONTH: indicates the amount is in months
c. Period: i. If it is repetitive: the amount of [Unit] between runs, if you need to
fill in with minutes(e.g. every half hour), you will need to divide the amount of minutes by 60, and fill in the first two numbers, rounded up)
ii. If it is not repetitive: this needs to be done at [Period] [Unit] every [Larger Unit], if you need to fill in the minutes, take the amount of minutes, and put them in the decimal region (e.g. at 2.30 PM every day becomes: 14.30).
2 http://hilda:8085/AnalystTool/login.jsp
30
Translating the report
What kind of reports
Daily
The daily report will be sent daily to the BI-team, it consists of an overview of
workflows that ran in the last 24 hours, together with failures and late ones.
Weekly
In the weekly report you can find a summary of the data over the past week, as well
as a drill-down on day-level, for easy consulting of the data, should the need arise
Variable
The variable report requires three inputs of the user:
- The minimum date: The minimum range of dates that you want the statistics of. It can go back until the first of the previous month.
- The maximum date: The maximum range of dates that you want the statistics of. It‟s ceiling is the day before.
- The workflows: the workflows that you want to select in your report. The report consists of a summary like the others, with a graph and a table, as well as
a session run summary, providing an overview of sessions in error for the requested
workflow(s). A third part is the Session Details, it gives you the number of tables
consulted in each workflow, with a drill down to the table level where the number of
errors is displayed.
The graph
Indicates when in the range of the report there has been a problem, spikes in late
reports or failed reports could indicate a problem.
The table
When you look at the table, you see the aggregated data of every workflow run in the
period of the report. A short explanation of the data:
- Workflows: amount of workflows run in the period - Late: How many of them were late - Failed to run: Workflows that should have run, but didn‟t - First Failure: when the first workflow that failed to run should have run - Last Failure: when the last workflow that failed to run should have run - Severity: This indicates if there is a problem, and how bad it is:
o Green: All is OK o Yellow: There are late workflows, but they still ran o Orange: There were errors in the workflow o Red: Workflows haven‟t run at all at some point
- Problem: What to do when there is a problem at workflow level - Project Name: to which project that workflow belongs. - Contacts: the person to contact regarding the specified areas.
31
Explanation of the workflow
general description
The workflow is designed to string out a single, aggregate table into a factional
database. It starts by retrieving the data from the aggregated table
FDX_WF_LAST_RUN, located in the Informatica repository. Afterwards, it will check
if there are any new workflows, sessions, or tables in that table.
When that is done, the workflow will retrieve the data put into the two reference
tables to check if the information is still up to date. With all that data gathered it will
proceed to check if the workflows that HAVE run, are on time, if not, there will be a
flag indicating it. When all the workflows are checked, it will detect any missing
workflows and add a custom row with a custom error message to indicate there is a
workflow missing.
When that‟s been done, the most complicated part has finished.
What remains is to put sessions in the session_run table and the table_runs in the
session_details table.
Start
S_MAIN_TO_TMP handles the data coming from the repository itself, it retrieves the
data of the last two years and that is not in the FT tables.
Dimensions
S_M_FILLUP_DIMENSIONS handles the new projects, workflows, sessions and
tables found. Projects and workflows each get filled up by the reference table
already. Afterwards, the S_FILLUP_SLA fills up the workflows even further with the
SLA data.
Worklow fillup
S_M_FILLUP_WORKFLOW will retrieve all the data of the workflows run and will add
the flag „SLA_COMPLIANT‟ to see if the workflow run is SLA-compliant.
When that is done, S_M_CHECK_SLA_RUNS generates rows based on how many
workflows there should‟ve run. It then checks to see if there is a difference between
the amount of rows simulated and the real ones and outputs the ones that differ into
FT_DUMP_WORKFLOW_RUN. From here
S_M_INSERT_DUMMIES_IN_WORKFLOW will check the ones that are actually
missing and inserts them in the FCT_WORKFLOW_RUN table.
Session run
When the workflows have been handled, it is time to go over the sessions. The
names get normalized and they get added to the FCT_SESSION_RUN.
32
Session detail
At the end of the transformations, the table runs get processed, adding if it is a
source or a target and proceeding to load them into FCT_SESSION_DETAIL.
The Session info
When the workflow has almost finished, a log of the run gets filled in, where the start
date, end date, first workflow date to be loaded, last workflow date to be loaded and if
the workflow succeeded get filled in.
33
Revision History
Date By Description of Change
30/09/2013 Michael
Brunclair(945944)
First Version of Reference document(SLA/Workflow
reference tables, Translating the Report)
2/10/2013 Michael
Brunclair(945944)
Added the different reports
4/10/2013 Michael
Brunclair(945944)
Added the explanation of the workflow
Code Review
ETL Workflow Monitoring
Code Review Work Request Number 158241
Version 1 10/10/13
1
Table of Contents
1. Definition Phase - Business Requirement Specification (BRS) Error! Bookmark
not defined.
1.1 Business Requirements Specification (BRS) Error! Bookmark not defined.
2. Planning Phase - Software Requirement Specification (SRS) Error! Bookmark
not defined.
Submit for EZ-Work Product Review A Error! Bookmark not defined.
3. Development Phase – Detailed Design Specification (DDS) 3
3.1 DataFlow 3
3.2 Database Changes(IPC_MONITORING): 4
3.3 Analyst Tool Setup : 9
3.4 ETL Changes: 11
3.4.1 Mappings : 11
3.4.1.1 M_MAIN_TO_TEMP .........................................................................................................................11 3.4.1.2 M_FILLUP_DIMENSIONS ................................................................................................................13 3.4.1.3 M_FILLUP_SLA.................................................................................................................................14 3.4.1.4 M_FILLUP_FCT_WORKFLOW_RUN1 ............................................................................................14 3.4.1.5 M_CHECK_SLA_RUNS ....................................................................................................................15 3.4.1.6 M_INSERT_DUMMIES_IN_WORKFLOWS.....................................................................................20 3.4.1.7 M_FILLUP_SESSION_RUN .............................................................................................................20 3.4.1.8 M_FILLUP_SESSION_DETAIL ........................................................................................................21 3.4.1.9 M_FILLUP_SLA_TABLES ................................................................................................................22
3.4.2 Workflow : WF_BOOST 22
3.5 BO changes24
3.5.1.1 Universe lay_out ................................................................................................................................24 3.5.1.2 Filters .................................................................................................................................................24 3.5.1.3 Derived tables ....................................................................................................................................25 3.5.1.4 New reports .......................................................................................................................................26
4. Launch Phase - Test Control and Test Execution Error! Bookmark not defined.
4.1 UT Error! Bookmark not defined.
4.1.1 ETL Error! Bookmark not defined.
4.1.2 BO Error! Bookmark not defined.
5. Launch Phase - Implementation Plan Error! Bookmark not defined.
5.1 Software Installation Error! Bookmark not defined.
5.2 Configuration/Setup Error! Bookmark not defined.
5.3 Security Implementation Error! Bookmark not defined.
5.4 Back-out Plan Error! Bookmark not defined.
5.5 Deployment Plan Error! Bookmark not defined.
Submit for EZ-Work Product Review B Error! Bookmark not defined.
6. Move to Production Error! Bookmark not defined.
2
6.1 Post-Load Integrity Check (PLIC) Error! Bookmark not defined.
7. Assumptions, Constraints and limitations Error! Bookmark not defined.
8. Unresolved issues and action points Error! Bookmark not defined.
9. Appendices 35
Revision History
Name Date Description
Michael Brunclair 08/10/13 Initial
Document References
Document Description
BRS_Create new monitoring Report
for ETL The BRS
SRS_Create new monitoring Report
for ETL The SRS
3
Development Phase – Detailed Design Specification (DDS)
DataFlow
Dataflow
ETLETL BOBOBackendBackend
ETL-repository
TMP_FDX_WF_L
AST_RUN
DM_SLA
DM_WORKFLOW
DM_SESSION
DM_PROJECT
SLA_REFERENC
E_IPC_MONITOR
ING
ETL_MONITOR_P
ROJECT_DATA
FCT_WORKFLOW_
RUN
FCT_SESSION_
RUN
DM_TABLE
FCT_SESSION_
DETAIL
FT_SESSION_R
UN
FT_WORKFLOW_R
UN
FT_SESSION_
DETAIL
4
Database Changes(IPC_MONITORING):
create table FCT_SQL_ERROR_LOG(
ERROR_ID int not null,
ERROR_MSG varchar2(250) not null,
LOAD_DDM date not null,
PRIMARY KEY(ERROR_ID));
create table FCT_DUMP_WORKFLOW(
SK_WF_RUN_ID int not null,
ROWS_AFFECTED_SOURCE int,
ROWS_AFFECTED_TARGET int,
TRANS_ERRORS int,
DATE_STARTED date not null,
DATE_STOPPED date,
WF_DURATION int,
DM_WORKFLOW int not null,
WF_ERR_CODE varchar2(10),
WF_ERR_MSG varchar2(200),
LOAD_DDM date,
SLA_COMPLIANT varchar2(1),
Original_ID int not null);
create table tch_data_load_time_stamp(
time_stamp_id int not null,
Start_Time date not null,
end_time date not null,
last_workflow_end_time date not null,
last_workflow_start_time date not null,
Succeeded varchar2(1) not null,
primary key(time_stamp_id));
create table DM_PROJECT(
PROJECT_ID int not null,
PROJECT_NAME varchar2(50),
LOAD_DDM date not null,
PRIMARY KEY(PROJECT_ID));
5
create table DM_WORKFLOW(
WF_ID int not null,
WF_NAME varchar2(20),
PROJECT_ID int not null,
PROBLEM varchar2(1500),
Service_Desk_Contact varchar2(100) not null,
ETL_FIRST_CONTACT varchar2(100) not null,
IT_FUNCTIONAL_FIRST_CONTACT varchar2(100) not null,
BUSINESS_CONTACT varchar2(100),
DESTINATION_SYMPHONY_PROFILE varchar2(100),
LOAD_DDM date,
primary key(WF_ID));
create table DM_SLA(
WF_ID int not null,
REPETITIVE varchar2(1) not null,
UNIT varchar2(5),
PERIOD int not null,
LOAD_DDM date,
SK_SLA_ID int not null);
create table DM_TABLE(
TABLE_ID int not null,
TABLE_NAME varchar2(20),
LOAD_DDM date,
primary key(TABLE_ID));
create table DM_SESSION(
SESSION_ID int not null,
SESSION_NAME varchar2(20),
LOAD_DDM date,
primary key(SESSION_ID));
create table DM_PROJECT(
PROJECT_ID int not null,
PROJECT_NAME varchar2(50) not null,
LOAD_DDM date not null);
6
create table FT_SESSION_DETAIL(
SESS_DET_ID int not null,
SESSION_ID int not null,
TABLE_ID INT NOT NULL,
ROWS_AFFECTED_SOURCE INT,
ROWS_AFFECTED_TARGET INT,
DATE_STARTED date not null,
DATE_STOPPED date,
LOAD_DDM date,
SOURCE_TARGET varchar2(1) not null,
MAP_ERR_CODE int,
MAP_ERR_MSG varchar2(200),
Original_ID int not null,
TARGET_REJECTED_ROWS int,
primary key(SESS_DET_ID));
create table FT_SESSION_RUN(
SESS_RUN_ID int not null,
ROWS_AFFECTED_SOURCE int,
ROWS_AFFECTED_TARGET int,
DATE_STARTED date,
DATE_STOPPED date,
SESS_DURATION int,
DM_SESSION_ID int not null,
RUN_WORKFLOW_ID INT NOT NULL,
INST_ERR_CODE varchar2(10),
INST_ERR_MSG varchar2(200),
LOAD_DDM date,
Original_ID int not null,
primary key(SESS_RUN_ID));
7
create table FT_WORKFLOW_RUN(
SK_WF_RUN_ID int not null,
ROWS_AFFECTED_SOURCE int,
ROWS_AFFECTED_TARGET int,
TRANS_ERRORS int,
DATE_STARTED date not null,
DATE_STOPPED date,
WF_DURATION int,
DM_WORKFLOW int not null,
WF_ERR_CODE varchar2(10),
WF_ERR_MSG varchar2(200),
LOAD_DDM date,
SLA_COMPLIANT varchar2(1),
Original_ID int not null,
primary key(WF_RUN_ID));
create table FCT_SESSION_DETAIL(
SESS_DET_ID int not null,
SESSION_ID int not null,
TABLE_ID INT NOT NULL,
ROWS_AFFECTED_SOURCE INT,
ROWS_AFFECTED_TARGET INT,
DATE_STARTED date not null,
DATE_STOPPED date,
LOAD_DDM date,
SOURCE_TARGET varchar2(1) not null,
MAP_ERR_CODE int,
MAP_ERR_MSG varchar2(200),
Original_ID int not null,
TARGET_REJECTED_ROWS int);
8
create table FCT_SESSION_RUN(
SESS_RUN_ID int not null,
ROWS_AFFECTED_SOURCE int,
ROWS_AFFECTED_TARGET int,
DATE_STARTED date,
DATE_STOPPED date,
SESS_DURATION int,
DM_SESSION_ID int not null,
RUN_WORKFLOW_ID INT NOT NULL,
INST_ERR_CODE varchar2(10),
INST_ERR_MSG varchar2(200),
LOAD_DDM date,
Original_ID int not null);
create table FCT_WORKFLOW_RUN(
SK_WF_RUN_ID int not null,
ROWS_AFFECTED_SOURCE int,
ROWS_AFFECTED_TARGET int,
TRANS_ERRORS int,
DATE_STARTED date not null,
DATE_STOPPED date,
WF_DURATION int,
DM_WORKFLOW int not null,
WF_ERR_CODE varchar2(10),
WF_ERR_MSG varchar2(200),
LOAD_DDM date,
SLA_COMPLIANT varchar2(1),
Original_ID int not null);
9
Analyst Tool Setup :
New reference table SLA_REFERENCE_IPC_MONITORING (/IT_ETL)
http://hilda:8085/AnalystTool
10
New reference table ETL_MONITOR_PROJECT_DATA (/IT_ETL)
http://hilda:8085/AnalystTool
11
ETL Changes:
Mappings :
M_MAIN_TO_TEMP
Pull workflow information from FDX_WF_LAST_RUN SQL :
SELECT DISTINCT FDX_WF_LAST_RUN.WF_RUN_ID,
FDX_WF_LAST_RUN.WORKFLOW_NAME, FDX_WF_LAST_RUN.TASK_TYPE,
FDX_WF_LAST_RUN.WF_STATUS, FDX_WF_LAST_RUN.WORKLET_NAME,
FDX_WF_LAST_RUN.INS_ID, FDX_WF_LAST_RUN.INSTANCE_NAME,
FDX_WF_LAST_RUN.INS_STATUS, FDX_WF_LAST_RUN.MAPPING_NAME,
FDX_WF_LAST_RUN.INS_SRC_TGT_ID,
FDX_WF_LAST_RUN.INS_SRC_TGT_NAME,
FDX_WF_LAST_RUN.WF_ERR_CODE, FDX_WF_LAST_RUN.WF_ERR_MSG,
FDX_WF_LAST_RUN.INS_ERR_CODE, FDX_WF_LAST_RUN.INS_ERR_MSG,
FDX_WF_LAST_RUN.SRC_SUCCESS_ROWS,
FDX_WF_LAST_RUN.SRC_FAILED_ROWS,
12
FDX_WF_LAST_RUN.TARG_SUCCESS_ROWS,
FDX_WF_LAST_RUN.TARG_FAILED_ROWS,
FDX_WF_LAST_RUN.TOTAL_TRANS_ERRS,
FDX_WF_LAST_RUN.MAP_ERR_CODE,
FDX_WF_LAST_RUN.MAP_QRY_TGT_ERR_MSG,
FDX_WF_LAST_RUN.DURATION, FDX_WF_LAST_RUN.START_TIME,
FDX_WF_LAST_RUN.END_TIME
FROM
FDX_WF_LAST_RUN
WHERE
WF_STATUS !='Running'
and
sysdate - FDX_WF_LAST_RUN.START_TIME <2*365
ORDER BY
FDX_WF_LAST_RUN.WF_RUN_ID
SELECT FT_WORKFLOW_RUN.ORIGINAL_ID
FROM
FT_WORKFLOW_RUN
ORDER BY
FT_WORKFLOW_RUN.ORIGINAL_ID 1 parameter defined in the mapping : $$STARTTIME sysdate
13
M_FILLUP_DIMENSIONS
Extracts the dimensions and inserts(or updates) them in the appropriate table
14
M_FILLUP_SLA
Insert the SLA data gathered from the reference table
M_FILLUP_FCT_WORKFLOW_RUN1
Insert the workflows that have run into the FCT table with their respective
SLA_COMPLIANT flag.
15
M_CHECK_SLA_RUNS
16
Java code:
double int_Counter=0;
int Teller=0;
WF_ERR_CODE="";
WF_ERR_MSG="";
DATE_STARTED=DATE_FIRST_STOPPED;
DATE_STOPPED=DATE_FIRST_STOPPED;
REPETITIVE_out=REPETITIVE;
UNIT_out=UNIT;
PERIOD_out=PERIOD;
DM_WORKFLOW=WF_ID;
Date DF = new Date(DATE_FIRST_STOPPED);
//.longValueExact()
Calendar calDF = Calendar.getInstance();
calDF.setTime(DF);
BigDecimal TEMP = new BigDecimal(DATE_DIFF);
BigDecimal DAYHOURS = new BigDecimal(24);
if(REPETITIVE_out.equals("Y")){
if(UNIT.equals("HOUR")){
if((DATE_DIFF)>=PERIOD){
int_Counter=(double)DATE_DIFF;
while(int_Counter>=0){
Counter=Teller;
WF_ERR_CODE="";
WF_ERR_MSG="HOURLY WORKFLOW DID NOT RUN";
calDF.add(Calendar.MINUTE,(int)(PERIOD*60));
DATE_STARTED=calDF.getTimeInMillis();
//.valueOf(
int_Counter-=PERIOD;
Teller++;
generateRow();
}
}
}
else if(UNIT.equals("DAY")){
if((DATE_DIFF/24)>=PERIOD){
int_Counter=(long)(DATE_DIFF/24);
17
while(int_Counter>=0){
Counter=Teller;
WF_ERR_CODE="";
WF_ERR_MSG="DAILY WORKFLOW DID NOT RUN";
calDF.add(Calendar.DAY_OF_MONTH,(int)PERIOD);
DATE_STARTED=calDF.getTimeInMillis();
//.valueOf(
int_Counter-=PERIOD;
Teller++;
generateRow();
}
}
}
else if(UNIT.equals("MONTH")){
if(((DATE_DIFF/24)/30)>=PERIOD){
int_Counter=((long)DATE_DIFF/24)/30;
while(int_Counter>0){
Counter=Teller;
WF_ERR_CODE="";
WF_ERR_MSG="MONTHLY WORKFLOW DID NOT RUN";
calDF.add(Calendar.MONTH,(int)PERIOD);
DATE_STARTED=calDF.getTimeInMillis();
//.valueOf(
int_Counter-=PERIOD;
Teller++;
generateRow();
}
}
}
else{
WF_ERR_MSG="Invalid Input:
"+WF_NAME+","+DATE_FIRST_STOPPED+","+REPETITIVE+","+UNIT+","+P
ERIOD+","+WF_ID+","+DATE_DIFF;
WF_ERR_CODE="";
DM_WORKFLOW=0;
DATE_STARTED=DATE_FIRST_STOPPED;
generateRow();
}
18
}
else if(REPETITIVE_out.equals("N")){
if(UNIT.equals("HOUR")){
if((DATE_FIRST_STOPPED+(DATE_DIFF/24))<=DATE_LAST_STOPPED)
{
//.add(TEMP.divide(DAYHOURS))).max(DATE_LAST_STOPPED)==DATE_LA
ST_STOPPED){
int_Counter=DATE_DIFF/24;
calDF.set(Calendar.MINUTE, (int)((PERIOD*60)-720));
while(Teller<int_Counter){
Counter=Teller;
WF_ERR_CODE="";
WF_ERR_MSG="WORKFLOW NOT
VALID(NON_REPETITIVE-HOUR)";
calDF.add(Calendar.DAY_OF_MONTH, 1);
DATE_STARTED=calDF.getTimeInMillis();
//.valueOf(
TRANS_ERRORS=0;
Teller++;
generateRow();
}
}
}
else if(UNIT.equals("DAY")){
if((DATE_FIRST_STOPPED+(DATE_DIFF))<=DATE_LAST_STOPPED){
int_Counter=DATE_DIFF/30;
calDF.set(Calendar.DAY_OF_MONTH, (int)(PERIOD));
while(Teller<int_Counter){
Counter=Teller;
WF_ERR_CODE="";
WF_ERR_MSG="WORKFLOW NOT
VALID(NON_REPETITIVE-DAY)";
calDF.add(Calendar.MONTH,1);
DATE_STARTED=calDF.getTimeInMillis();
//.valueOf(
TRANS_ERRORS=0;
Teller++;
19
generateRow();
}
}
}
else if(UNIT.equals("MONTH")){
if((DATE_FIRST_STOPPED+(DATE_DIFF))<=DATE_LAST_STOPPED){
int_Counter=(DATE_DIFF/30)/12;
calDF.set(Calendar.MONTH, (int)(PERIOD));
while(Teller<int_Counter){
Counter=Teller;
WF_ERR_CODE="";
WF_ERR_MSG="WORKFLOW NOT
VALID(NON_REPETITIVE-MONTH)";
calDF.add(Calendar.YEAR,1);
DATE_STARTED=calDF.getTimeInMillis();
//.valueOf(
TRANS_ERRORS=0;
Teller++;
generateRow();
}
}
}
else{
WF_ERR_MSG="Invalid Input:
"+WF_NAME+","+DATE_FIRST_STOPPED+","+REPETITIVE+","+UNIT+","+P
ERIOD+","+WF_ID+","+DATE_DIFF;
WF_ERR_CODE="";
DM_WORKFLOW=0;
DATE_STARTED=DATE_FIRST_STOPPED;
generateRow();
}
}
Simulates workflows that should have run in the Java code, then checks if there is a
difference in real vs simulated counts, before inserting the simulated rows in a dump
table
20
M_INSERT_DUMMIES_IN_WORKFLOWS
SQL code:
insert into FCT_WORKFLOW_run
(select * from FCT_DUMP_WORKFLOW where (DATE_STARTED<
?DATE_STARTED_REAL_v? and DATE_STARTED > ?PREV_DATE_STARTED_v?) and
DM_WORKFLOW=?DM_WORKFLOW1?);
After checking which records are missing, this will insert them via SQL transformation
into FCT_WORKFLOW_RUN.
M_FILLUP_SESSION_RUN
21
Extracting the sessions which have a workflow and haven’t already been processed
and inserting them into FCT_SESSION_RUN
M_FILLUP_SESSION_DETAIL
Inserting tables that have sessions in the FCT_SESSION_DETAIL
22
M_FILLUP_SLA_TABLES
Load Strategy :
1) Insert if the workflow is not in the FT_table AND less than 2 years in the past 2) ETL will not update any existing workflow run, session run or session detail 3) SLA and workflow information can be updated 4) In all other cases, an update will occur , but only if data has changed
compared to the previous run.
Workflow: WF_ETL_MONITORING_MAIN_DATA_FLOW
23
Workflow will be scheduled on production once a day ( Scheduled Task)
-7:30 AM
A mail is sent to [email protected] in case of error encountered
during the process.
24
BO changes
Universe lay_out
Filters
Past 24 hours
A filter to be used in the daily report, it filters out all the records that are more than a
day from sysdate
Code:
(sysdate-1)-FT_WORKFLOW_RUN.DATE_STARTED<=0
Last week
Only retrieves data from the past week, starting on Monday and ending on Sunday
Code:
to_number(to_char(sysdate,'iw'))-
to_number(to_char(FT_WORKFLOW_RUN.DATE_STARTED,'iw'))=1
or
to_number(to_char(sysdate,'iw'))-
to_number(to_char(FT_WORKFLOW_RUN.DATE_STARTED,'iw'))=-51
25
Rangedate
Filtering for a variable date that proves useful in the third report
Code:
FT_WORKFLOW_RUN.DATE_STARTED>=@Prompt('Please select the minimum
date','D','Month\Hour Of Month',MONO,Constrained,Persistent)
and
FT_WORKFLOW_RUN.DATE_STARTED<=@Prompt('Please select the maximum
date','D','Month\Hour Of Month',MONO,Constrained,Persistent)
Derived tables
HOUR_OF_RUN/HOUR_OF_DAY
select to_date(to_char((TIME+(HOUR_OF_DAY/24)),'DD/MM/YYYY
HH24'),'DD/MM/YYYY HH24') as DATE_TIME from
(SELECT LEVEL-1 HOUR_OF_DAY
FROM dual
CONNECT BY LEVEL <= 48),
(select min(DATE_STARTED) as TIME
FROM FT_WORKFLOW_RUN
where
SYSDATE-DATE_STARTED<=2)
DAY_OF_MONTH/MONTH
select LEVEL/24+to_date(concat('01/',to_char(add_months(sysdate,-
1),'MM/YYYY')),'DD/MM/YYYY') as HOUR_OF_MONTH_RUN
from dual
connect by LEVEL/24+to_date(concat('01/',to_char(add_months(sysdate,-
1),'MM/YYYY')),'DD/MM/YYYY') <
to_date(to_char(SYSDATE,'DD/MM/YYYY'),'DD/MM/YYYY')
DAY_OF_RUN/
SELECT LEVEL DAY_OF_RUN
FROM dual
CONNECT BY LEVEL <= 7
DAY_OF_WEEK
SELECT LEVEL DAY_OF_WEEK,
to_char(to_date('22/09/2013','DD/MM/YYYY')+LEVEL,'Day') as Day_Name
FROM dual
CONNECT BY LEVEL <= 7
26
HOUR_OF_WEEK/ HOUR_OF_WEEKLY_RUN
select to_date(to_char((TIME+(HOUR_OF_DAY/24)),'DD/MM/YYYY
HH24'),'DD/MM/YYYY HH24') as TIME_OF_WEEK,
floor(HOUR_OF_DAY/24+1) as DAY
from
(SELECT LEVEL-1 HOUR_OF_DAY
FROM dual
CONNECT BY LEVEL <= 7*24),
(select min(DATE_STARTED) as TIME
FROM FT_WORKFLOW_RUN
where
to_number(to_char(sysdate,'iw'))-
to_number(to_char(FT_WORKFLOW_RUN.DATE_STARTED,'iw'))=1
or
to_number(to_char(sysdate,'iw'))-
to_number(to_char(FT_WORKFLOW_RUN.DATE_STARTED,'iw'))=-51)
New reports
There were three requests for new reports:
Daily
Graph:
27
Statistics:
Session statistics:
28
Daily report:
Wo
rkfl
ow
s
Date Time of run
SLA Non-compliantRuns(Count)
29
Monthly
Graph:
Statistics:
30
Day-By-Day:
Weekly
31
Daily:
Variable
Graph:
Statistics:
32
Session statistics:
Session details:
Workflow summary
33
Session summary
34
Session Details:
35
Appendices
Executive summary
When I had to choose the company for my internship, I decided that FedEx would
give me the challenges and the opportunities I need to evolve into a person ready to
enter the professional life.
FedEx has a lot of advantages in terms of learning and working. Since it is such a
large company (300.000+ employees), I will be able to work in a multi-cultural
environment. Another of the positive sides of working for a large company is that
there are strict procedures to follow, a large company can’t afford to work with
multiple systems and principles, since it would be way to costly.
My colleagues and I will be working in a team in terms of information sharing and
training, but the project development itself will be resting on my shoulders, so I have
a unique mix of team play and working in solitude.
The Global Development Process that is in place at FedEx provides a lot of
opportunities to work on my weaker administration skills by providing the necessity
to make good Business Requirements, Software Requirements etc… I will be making
these with an agile mindset, documenting the requirements on the go.
Since I will be doing a project end-to-end, I will have to learn a lot about what’s
getting used in this company, an overarching system that provides easy access to
project documentation is Teamforge. It is a web interface which provides information
about projects and their documentation.
For the projects themselves, I will use Informatica Power center to apply ETL to the
massive amounts of data that can be found in the databases. Since I only heard
about it superficially during the school courses, I will be able to learn something from
the ground up.
As a way to display the information gathered by ETL in a user-friendly and
comprehensive way, the tool of choice here is Business Objects. It resembles Access
reporting so it will be a bit easier to learn than a complete new technology, but I
have to take into account the needs of the business, rather than just display
information I think should be displayed.
Working at FedEx certainly is a challenge, but the rewards are plentiful if I count the
skills I will acquire from working here, both the soft skills (communicating in a multi-
cultural environment) and the hard skills (transforming the data so that it can be
understood by the day-to-day users).
1
Reports
ETL Workflow Monitoring
Report week 3 FWRS Number 158241
1
2
Planned activities
My planning of the week consisted mainly of developing the workflow in Informatica
Powercenter, consisting of:
- Reworking the workflow - Improve workflow performance - Solve errors - Testing
Activities completed
At the beginning of the week we realized during a consultation that the workflow
needs reworking after we found a flaw in our data model, so the first two days of the
week were dedicated to that.
Wednesday, I began working on the performance of the workflow, trying to remove
the “distinct” statements where they weren‟t necessary and change how data gets
read.
Thursday I found a few errors in the workflow and I spent the whole day solving them,
as well as Friday afternoon. After the lunch break I was able to start implementing the
SLA-checking and testing.
Addendums
Since my manager and my project lead are both out of office Friday and Monday, I
am unable to get approval to send screenshots and documents of what I worked on. I
will send them as soon as possible.
3
ETL Workflow Monitoring
Report week 4
1
4
Planned activities I could finish the ETL this week and start on the BO Universe, for which I will receive
a small training session in French to explain the basic functionalities of BO Universe
Designer. I was also planning on getting the BRS and SRS officially approved.
Activities completed The ETL workflow finished as expected and I received the training for BO, but I had
to wait for access to update the BO on my workstation to the newest version, so I had
to wait. In the mean time, the project lead came up with a scope change that would
include the Project information for each workflow. Since I had to wait I accepted it
and implemented it, finishing today.
Addendums The addendums this week will consist of the reviewed BRS, SRS and ERD. As well
as a screenshot of a mapping.
5
ETL Workflow Monitoring
Report week 5
1
6
Planned activities
Comping upon an unexpected aspect of the project, I will probably spend another
week on the ETL part. Near the end of the week I will be testing and slowly start
developing the BO.
There is also a training planned for the use of Teamforge which I will attend in
English.
Activities completed
The development of the workflow is nearly complete, I only need to do the Unit
Testing and UAT. The testing is something that has been partially done, but more
testing is required to completely check the workflow. The training has been given and
I took notes of them. The BO-part was really basic since I only knew the basic
requirements for the report
Addendums
- The Java code I developed to generate the simulated amount of workflows. - A screenshot of the BO-universe. - A spreadsheet containing the rough drafts of the report (no real data) - The timetable
7
ETL Workflow Monitoring
Report week 6 FWRS Number 158241
1
8
Planned activities
The planning consists mainly of developing the BO part of the project
Activities completed
In the beginning, I worked on the daily report, creating a template for the reports to
follow, after which I kept on improving on it, adding a second tab, the date of the
failed workflow min and max.
Afterwards, I used the template of the daily report to create a weekly report with a drill
down on daily level.
The last major request was a report with a variable time span. For ease of lookup, I
also added a prompt for which workflow you wanted to see the results. In there, there
is a drilldown report to see which tables had errors in the given period.
The most difficult part was the graph, because I had to generate the dates even
when there is no data on said date, I used derived tables for that and a deviation of
the code in the addendum.
After my reports were generally finished, I started on a reference document which
provides a support tool for when there are questions about the reports or the
workflows.
Addendums
- The reports I made - An example of the row-generating SQL - The Reference document I made for the project
9
ETL Workflow Monitoring
Report week 7 FWRS Number 158241
10
Planned activities
This week, my focus will lie on Unit Testing, writing a code review and starting the
internship-report
Activities completed
Whilst testing, I found a small bug which I resolved over the course of a day and a
half, afterwards, no more bugs were found and I sent a preliminary test case
document to the project lead. Afterwards, I started on the code review, essentially
collecting all aspects of the project into one file. I also started on the internship report
because it was a lull in the workload.
Addendums
- Test case document - Code Review - First draft of the internship report
11
CT Meter reporting
Report week 8
12
Planned activities
Having finished my first project, Peter and I agreed that I would start a second project
and see how far I would progress in the month that I have left, so I will talk to Leena
Domun for additional information and who to contact if I would need to know more
Activities completed
In the beginning of the week Leena and I had a conference call with Nathalie Boon,
our business contact to acquire more information about the second project. After the
initial meeting I set out to make the BRS and SRS for this document. Afterwards I
started asking around to see where all the data is stored. I will probably have to wait
until next week until I can access a piece of the information, but I can already explore
the available Databases.
Addendums
- Meeting report for second project - BRS - SRS - SQL
13
CT Meter reporting
Report week 9
14
Planned activities
I will be working on the CT Meter project, Making tables, ETL and BO
Activities completed
By 31/10/2013 the ETL and BO was finished and I added an automated updater for
the Sharepoint side of the CT Meters, if this was not in place, someone would have to
manually upload a CSV that was extracted from a linked file
Addendums
- VBA Code - ETL Screenshot
15
CT Meter reporting – ETL Monitoring
Report week 10
16
Planned activities I will be working on the CT Meter project, Finishing the VBA code, making the code
review and testing
Activities completed At the beginning of the week, it came to my attention that there was still a bug in the
first project, so I spent the majority of my time solving this bug and any subsequent
bugs I found.
Addendums N/A
Timetable
TIMETABLE
Date TODO DONE?
19/08-23/08
Decide on project | receive additional training | meeting with teammembers | make BR for all three projects
19/08 Introduction to GDP of FedEx Y
20/08 Introduction to GDP of FedEx | Meeting about projects | make BR YYY
21/08 Make a report about the meeting | get feedback on BR YY
22/08 Set up schoolfiles | fill in all the gaps of the first week | Learn to work in BO YYY
23/08 learn about OEM | Learn to work in BO YY
Result: 100%
26/08-30/08 Meeting with manager | Executive Summary | make BR's better | High-level SRS
26/08
Meeting with manager | make Executive Summary | Attend team meeting | Collect additional BR YYNY
27/08 Improve executive summary |Explore Powercenter YY
28/08 Make BR better | fill in SRS | Work in Powercenter | Make ERD YYY
29/08 Adapt data model and workflow to new model Y
30/08 Get Approval for BR|Finish new workflow NN
Result: 75%
2/09-6/09 Work on workflow: Performance, errors, readability of output
2/09 Report to manager|Get approval for BRS|Work on SRS|Workflow YYYY
3/09 Rework workflow Y
4/09 Make workflow more performant Y
5/09 Get errors out of workflow N
6/09 Complete Workflow|Administration|GDP|Testing of results Y
Result: 85%
9/09-13/09 Consult with Vincent | Receive SLA test-data
9/09
Present workflow to Vincent|Get SLA-testdata| Team meeting|Start Workflow-testing NNNN
Vincent and Peter were Out of Office
10/09 Continue Workflow-testing|Teammeeting Y
11/09
Present results to Vincent|Implement SLA-input |Start on Load Strategy|Start with developing the BO-universe YYYN
12/09 Continue on log table|Start Developing BO-Universe Y
13/09 BO-universe|Adding Scope Change NY
Result: 50%
16/09-20/09 Adding Scope Change|BO-universe | BO-report
16/09 Team meeting | Scope Change YY
17/09 BO-universe Y
18/09 BO-universe|Starting BO-Report YY
19/09 ETL Improvement Y
20/09 ETL Improvement Y
Result: 100%
1
23/09/27/09 Finishing ETL|Testing|Demo'ing result|BO
23/09 Team meeting|ETL YY
24/09 ETL Y
25/09 Testing|Demo'ing result YY
26/09 Testing|BO YY
27/09 BO Y
Result: 100%
30/09-04/10 BO|Wrapping up first project
30/09 Improve Universe|Make daily report YY
01/10 Make weekly report|Make variable report YY
02/10 Improve and add functionality to reports|Add field to FT table YY
03/10 Wrap up project Y
04/10 Wrap up project Y
Result: 100%
07/10-11/10 Testing Debugging
07/10 Wrapping up project|Team meeting|Documenting Testing| YYY
08/10 Testing|Debugging YY
09/10 Testing|Debugging YY
10/10 Testing|Debugging YY
11/10 Testing|Debugging YY
Result: 100%
14/10-18/10 Testing|Project meeting|BRS|SRS
14/10 Testing|Debugging YY
15/10 Project meeting|Team meeting|BRS CT METER YYY
16/10 BRS|SRS YY
17/10 SQL|ETL YY
18/10 ETL Y
Result: 100%
21/10-25/10 ETL|BO|Macro making
21/10 Team meeting|BO YY
22/10 ETL|BO YY
23/10 Access Y
24/10 VBA Y
25/10 VBA Y
Result: 100%
28/10-1/11 Testing |VBA
28/10 Office Cleanup|VBA YY
29/10 Testing|Team meeting YY
30/10 BO Y
31/10 Testing Y
1/11 HOLIDAY
Result: 100%
4/11-8/11 Debugging ETL Monitoring
2
4/11 Team meeting|Debugging ETL YY
5/11 Debugging ETL Monitoring Y
6/11 Debugging ETL Monitoring Y
7/11 Debugging ETL Monitoring Y
8/11 ETL CT Meter Reporting Y
Result: 100%
CT Meter Reporting
11/11 Team meeting Y
12/11 ETL CT meter reporting Y
13/11 ETL|BO Y
14/11 ETL|BO Y
15/11 Testing Y
Result: 100%
3
Presentatie