Overslaan en naar de inhoud gaan

📕 Download ons e-book 'De Lusten en Lasten van een Dataplatform'

Creates
11-05-2023 - 5 min

Een dag in het leven van Annelijn

Sinds april 2021 werk ik als Data Engineer bij Creates. Als Data Engineer houd ik mij vooral bezig met de technische backend van dataplatformen. Hiervoor heb ik circa 13 jaar in de toerisme branche gewerkt. Qua technische skills kom ik dus eigenlijk net kijken, maar deze carriĂšreswitch is Ă©Ă©n van de beste beslissingen in mijn leven geweest.

Extra leuke uitdaging

De wekker gaat om 06.45 uur. Het is vandaag woensdag en ik werk vanuit Utrecht op het kantoor van Creates. Woensdag is vaak een rustige dag, wat voor mij helpt om mijn focus te behouden. Een extra reden om naar kantoor te gaan is omdat ik vanavond een bordspel ga spelen met collega’s uit een andere unit. Om 07.45 uur ga ik de deur uit. Zonder file is het een rit van 50 minuten vanuit Santpoort-Zuid. Helaas toch iets meer file dan verwacht, maar ik kom om 08.57 uur aan op kantoor. Net op tijd voor de stand-up met mijn klant INretail om 09.00 uur.

INretail is een branchevereniging voor non-food retailwinkels in Nederland. Creates heeft samen met INretail een dataplatform gerealiseerd. Op dit platform wordt data, zoals kassa-data, verzameld van de aangesloten retailers. Vervolgens wordt deze data verrijkt en gemodelleerd en hier worden Power BI rapportages van gemaakt, waarmee ondernemers bijvoorbeeld kunnen benchmarken. Het dataplatform beheer en onderhoud ik. Hiervoor werk ik met Azure Databricks waar ik zowel de talen PySpark als SQL gebruik. Azure Data Factory gebruiken we voor de orkestratie van de datastromen. PySpark is eigenlijk gewoon Python maar heeft soms een iets andere syntax; zie het als een dialect van Python. Ik had nog niet eerder gewerkt met PySpark bij een klant (of met Python ĂŒberhaupt), daarom is dit een extra leuke uitdaging voor mij. In de stand-up bespreken we waar zij afgelopen week tegenaan zijn gelopen en/of geconstateerd hebben. Deze issues worden vastgelegd op het sprintboard in Azure DevOps.

Om 09.30 uur begin ik aan mijn to do lijstje. Ik begin met het aanmaken van een nieuwe sprint en het overzetten van alle openstaande bugs en taken. Zo, dat ziet er weer een stuk overzichtelijker uit! Ik breng mijn team op de hoogte dat de nieuwe sprint is aangemaakt en of ze voortaan vanuit daar de nieuwe bugs en taken willen opvoeren.

Oplossen van technische problemen

Een collega bij de klant geeft aan dat het niet lukte om een csv-bestand in zijn platform te uploaden. Ik probeer dat om 09.45 uur eerst in de ontwikkelomgeving, zodat ik niets op het productieplatform dwarsboom voor het geval dat de ingelezen data niet klopt. Alle stromen werken goed en het bestand wordt correct ingelezen. Ik koppel dit terug aan mijn team en laad het bestand nu ook in, in de productieomgeving. Zo kan er gecontroleerd worden of de data correct vertoond wordt in het Power BI dashboard. De orkestratie van het dataplatform wordt gedaan vanuit Azure Data Factory. Ik controleer eerst of er al een load bezig is om te voorkomen dat er meerdere bewerkingen gedaan worden op Ă©Ă©n tabel. Die is inderdaad nog bezig, dus tijd voor een kop thee.

Valideren en controleren van data

Om 10.15 uur kijk ik naar het volgende punt; of ik wil controleren dat een csv-bestand correct is ingelezen. Bij een bepaalde waarde zit er een komma tussen waardoor de rij verspringt als je deze opent in Excel. Vorige week voerde ik met mijn collega Ian een verbetering door op het platform. De bestanden worden nu vĂČĂČr het inlezen gevalideerd of alle kolommen wel gevuld zijn in. Als het bestand inhoudelijk niet klopt dan wordt deze verplaatst naar een mapje “Failed” zodat deze niet wordt verwerkt in het dataplatform. Een goede check dus of deze validatie wel werkt zoals wij deze bedacht hadden.

Ik open het csv-bestand in Notepad++, en hierin zie ik dat het scheidingsteken geen komma is maar een puntkomma. Dit geven wij ook onder andere als criteria mee bij het inlezen van het bestand in het dataplatform. Naar mijn inzicht zou dit dus goed moeten gaan bij het inlezen en zou de komma onderdeel moeten zijn van de waarde in de kolom. Ik controleer vervolgens in de verschillende lagen in de Delta Lake of deze rijen inderdaad correct getoond worden. Yep, dat ziet er goed uit! Ik maak om 10.45 uur een printscreen van mijn bevindingen en koppel dit terug in de bug op het Azure DevOps sprintboard.

De load in Data Factory is inmiddels voltooid. Ik zet het bestand om 11.20 uur klaar in de Bronze-folder van de Data Lake, zodat deze automatisch wordt ingelezen bij de volgende load om 12.00 uur.

Het volgende punt op mijn lijstje is het maken van een Azure Logic App. Het doel hiervan is dat er een e-mail notificatie wordt verzonden wanneer er Ă©Ă©n of meerdere bestanden binnen de run in Azure Data Factory zijn gefaald om in te lezen. Dit werd al bijgehouden in een log tabel in een SQL database, maar ik wil de Logic App zodanig configureren dat ik en de klant direct een e-mail krijg zodra er een bestand met de status ‘failed’ in de SQL log tabel wordt vastgelegd.

Correctie denkfout en handmatig proces uitvoeren

Om 12.00 uur lunch ik met mijn collega’s en om 12.30 uur loop ik nog even een rondje met een collega en halen we onderweg koffie. Om 12.55 uur zit ik weer achter mijn laptop en realiseer ik mij dat ik een denkfout heb gemaakt, waardoor het bestand uit de Bronze-folder niet is meegenomen in de Azure Data Factory run van 12.00. Enfin, dan maar zelf handmatig het proces uitvoeren. Het lukt me om de data in de gewenste Fact-tabel te zetten. Om 13.40 uur zie ik dat de run klaar is. Tijd om te controleren in Azure Databricks of de data inderdaad getoond wordt zoals verwacht. Alles ziet er goed uit, ik zie geen gekke afwijkingen. Ik koppel dit terug naar mijn team en ben nu in afwachting of ik de rest van de bestanden ook kan inlezen.

Foutieve data verwijderen en documentatie lezen

Dan krijg ik om 15.00 uur een mail van mijn collega of ik foutieve data afkomstig uit een specifiek bestand kan verwijderen uit het platform, omdat deze data opnieuw is aangeleverd maar dan met de correcte inhoud. Ik check in het platform of ik deze data inderdaad terugzie alvorens ik data ga verwijderen, maar ik krijg geen query resultaten te zien. Ik check daarom de FileLog tabel en zie dat dit bestand de status “Failed” heeft meegekregen. Dus aangezien er geen bestand is ingelezen, valt er ook geen data te verwijderen. Ik koppel dit vervolgens weer terug aan mijn collega.

Ik heb om 16.00 uur geen taken meer op mijn to do lijstje staan dus ik lees documentatie om het dataplatform eventueel te kunnen verbeteren. Zo is het lastig om Power BI rechtstreeks met een delta tabel in Databricks te koppelen, en gebruiken we Azure Synapse Analytics als semantische laag ertussen. Na samen met een collega hiernaar te Googlen, stuiten we op de term “Delta-sharing” en ik besluit om me hier wat meer in te verdiepen.

Ik kijk op de klok en zie dat het alweer 17.15 uur is. De tijd is weer enorm snel gegaan vandaag! Ik klap mijn laptop dicht en vergezel mijn collega’s. We bestellen pizza’s en spelen het bordspel “Betrayal at House on the Hill”. Om 21.15 uur zijn we klaar en rijd ik naar huis. Het was een lange maar erg leuke dag vandaag!

Over de schrijver

Creates
Contact