In het eerste deel van deze serie beschreef ik hoe ik een lokale ontwikkelomgeving heb opgezet voor onze golfconditie-applicatie. In dit tweede deel ga ik het vooral hebben over het overzetten van deze setup naar Microsoft Fabric. Waarom heb ik gekozen voor Microsoft Fabric, wat viel me op en waar liep ik tegen aan?
Waarom Microsoft Fabric?
De keuze voor Microsoft Fabric was voor mij een logische stap. Het biedt een geïntegreerd platform waarin je data kunt binnenhalen, opslaan, transformeren en visualiseren – allemaal binnen dezelfde omgeving. De lokale setup bestond uit losse componenten:
- Python voor data ingestion
- JSON-bestanden voor opslag
- PySpark voor transformaties
- SQL Server voor de database
- Power BI voor visualisatie
Al deze functionaliteit vind je terug in Fabric. Je hebt notebooks met geïntegreerde PySpark-support voor datatransformatie, een lakehouse voor bestand- en tabelopslag, SQL Analytics-endpoints, en directe Power BI-integratie. Daarnaast kun je eenvoudig data pipelines maken om alles aan elkaar te knopen.
De nieuwe architectuur
De basis van onze architectuur blijft grotendeels hetzelfde, maar alles komt nu samen in het Fabric-ecosysteem. De extractie- en transformatienotebooks zijn onderdeel van een pipeline geworden, de opslag is verplaatst naar een lakehouse, en de datamodellering gebeurt nu direct in SQL Analytics Endpoints.

Deze afbeelding toont hoe de verschillende componenten met elkaar communiceren binnen Microsoft Fabric. De data stroomt van de REST API via notebooks naar het lakehouse, waar het zowel als JSON files en Delta tables wordt opgeslagen, om uiteindelijk in Power BI te worden gevisualiseerd.
Binnen het lakehouse wordt de data opgeslagen volgens een gestructureerd datamodel:

Dit datamodel toont hoe je de ruwe data kan transformeren naar een star-schema met dimensie-tabellen voor locaties, tijdstippen en parameters, met een centrale feiten-tabel voor alle meetwaarden. Deze structuur maakt het mogelijk om efficiënt analyses uit te voeren en rapporten te bouwen.
Stap-voor-stap migratie
Workspace-setup
Je begint met het aanmaken van een nieuwe workspace in Microsoft Fabric. De stappen zijn als volgt:
- Een workspace aanmaken.
- Een lakehouse aanmaken.
- Een map voor ruwe data aanmaken binnen het lakehouse.
- Een notebook voor data-extractie aanmaken vanuit het lakehouse
- Dit zorgt ervoor dat de notebook aan het lakehouse verbonden wordt waardoor het gemakkelijker is om de bestanden op te slaan en op te halen.
- Kopieer de cellen van het notebook een voor een, zodat het makkelijk debuggen is in het geval van fouten.
- Wijzig de opslaglocaties van de bestanden naar het lakehouse.
output_file = '/lakehouse/standaard/Files/catalog.json'
- Maak een tweede notebook aan voor de datatransformatie.
- Wijzig de bestandslocaties van de JSON-bestanden.
- Maak een nieuwe omgeving aan waar je alle benodigde libraries (pyproj) aan toevoegt.
- Het kan even duren voor deze aangemaakt is.
- Het kan even duren voor deze aangemaakt is.
- Maak alle transformaties aan binnen dit notebook zodat je deze niet meer in Power BI hoeft te doen.
- Sla de tabellen op in deltaformaat zodat ze in het lakehouse worden opgeslagen.
location_measurement_fact.write.format("delta").mode("overwrite").option("mergeSchema", "true").save("Tables/location_measurement_fact")
- Maak een data-pipeline aan.
- Voeg de ingest notebook toe.
- Voeg de transformatie notebook toe.
- Verbindt de “complete” uitgang van de ingest notebook met de transformatie notebook.
- Ga naar het lakehouse.
- Rechtsboven wijzig de “lakehouse” naar “SQL Analytics Endpoints”.
- Kies voor Model view.
- Hier kun je de relaties tussen tabellen aangeven.
- Hier kun je de relaties tussen tabellen aangeven.
- Selecteer de tabellen in de verkenner en klik linksboven op new report.
- Het voordeel om deze hier vandaan aan te maken is dat de Power BI-interface direct verbinding legt met de tabellen.
- Het voordeel om deze hier vandaan aan te maken is dat de Power BI-interface direct verbinding legt met de tabellen.
- Rechtsboven wijzig de “lakehouse” naar “SQL Analytics Endpoints”.
- Binnen Power BI kun je de visualisaties op dezelfde manier opbouwen als je eerder gewend was.
Uitdagingen en oplossingen
De grootste uitdaging was het verplaatsen van transformaties uit Power BI naar de transformatienotebook. Het gaat dan om:
- Filtering van extreme meetwaarden (>900 naar 0)
- Categorisering van golfcondities
- Omzetting van windrichting naar tekst
Een andere uitdaging was het opzetten van het juiste ontwikkelomgeving met alle benodigde libraries. Het aanmaken van zo’n environment kan even duren, dus houd daar rekening mee.
Performance
In onze tests merkte ik dat de cloudtransformaties soms wat meer tijd kosten dan lokaal. Dit kan te maken hebben met ons proefaccount. Voor onze batchverwerking is dit geen probleem – de data hoeft niet realtime verwerkt te worden
Resultaten van de migratie
De migratie naar Microsoft Fabric heeft geleid tot een gestroomlijnde oplossing waarbij alle componenten van onze data-pipeline zijn geïntegreerd. Hoewel de architectuur compleet is vernieuwd, blijft het eindresultaat in Power BI visueel vergelijkbaar met de lokale installatie.

Het hoofddashboard toont de golfcondities op verschillende meetlocaties langs de Nederlandse kust, met grafieken voor zowel golfhoogte als windsnelheid over een periode van meerdere dagen.

De popup-functionaliteit toont alle relevante meetgegevens in één overzicht, inclusief golfhoogte, windsnelheid, windrichting en tijdstip.

De popup-functionaliteit toont alle relevante meetgegevens in één overzicht, inclusief golfhoogte, windsnelheid, windrichting en tijdstip.

Het dashboard past zich dynamisch aan bij het selecteren van verschillende windrichtingen, wat direct invloed heeft op de getoonde golfcondities.
Een groot voordeel van de migratie is de verbeterde structuur van de onderliggende code. Door alle transformaties te verplaatsen naar de notebooks is het proces veel overzichtelijker geworden. De data-pipeline is nu volledig geïntegreerd, wat het onderhoud en toekomstige uitbreidingen aanzienlijk vereenvoudigt.
Security
Bij deze implementatie heb ik de basis-beveiligingsinstellingen van Microsoft Fabric gebruikt, aangezien er geen gevoelige data verwerkt wordt. De standaardinstellingen bieden:
- Notebooks zijn alleen binnen de organisatie te delen
- Lakehouse-toegang is beperkt tot workspace-admins
- Power BI-rapporten hebben aparte toegangscontrole
Voor productie-omgevingen met gevoelige data is het aan te raden om een uitgebreide security-analyse uit te voeren en aanvullende beveiligingsmaatregelen te implementeren.
Conclusie
De migratie naar Microsoft Fabric heeft de setup een stuk gestroomlijnder gemaakt.
Een praktische tip voor toekomstige migraties: onderzoek of je bestaande Jupyter notebooks en Power BI-rapporten direct kunt uploaden naar Fabric. Dit kan veel tijd besparen omdat je de componenten dan alleen hoeft aan te passen in plaats van opnieuw op te bouwen.
Onze belangrijkste tips:
- Begin klein en test elke stap
- Neem de tijd om Fabric goed te leren kennen
- Test je transformaties grondig
- Documenteer wat je doet
Wat nu?
Nu de migratie naar Microsoft Fabric is afgerond, kan ik verder bouwen op deze basis. De cloud-setup maakt het makkelijker om nieuwe functionaliteit toe te voegen en aanpassingen door te voeren. Door alles in één platform te integreren, is het onderhoud een stuk eenvoudiger geworden. De volgende stappen die ik wil nemen zijn:
- De pipeline verder optimaliseren door betere scheduling en error handling
- Meer Fabric-features verkennen zoals Power BI dashboards delen
- De applicatie schaalbaar maken voor pieken in datagebruik
- Monitoring toevoegen om inzicht te krijgen in prestaties
Vooruitblik
Nu de migratie naar Microsoft Fabric met succes is afgerond, ga ik verder met het uitbreiden van de applicatie. De volgende stap is het bouwen van een gebruiksvriendelijke webinterface waarmee de golfconditie-gegevens toegankelijk worden voor een breder publiek. In het volgende deel van deze serie laat ik zien hoe je API’s opzet om de data vanuit Fabric beschikbaar te maken en hoe je een interactieve webinterface ontwikkelt.
Dit artikel is het tweede deel in een serie over de ontwikkeling van een intelligente golfconditie-applicatie. In het volgende deel staat de webinterface-ontwikkeling centraal.