Drie oplossingen voor ‘Data as a Service’ in Azure

Bij Infiniot helpen we onze klanten met het halen van waarde uit hun data. Natuurlijk laten we daarbij graag onze data science kennis los om gave voorspellende modellen te maken, bijvoorbeeld om de impact van de energietransitie op het elektriciteitsnet te voorspellen op basis van verschillende scenario’s. Daarvoor moet echter eerst het fundament op orde zijn: inzicht in de bestaande data, de kwaliteit ervan en de relatie tussen de (data)systemen en business processen. 

We maken daarbij graag gebruik van het data lake concept: een centrale verzamelplaats voor data uit verschillende bronnen en van verschillende formaten, zodat we vanaf één plek kunnen analyseren en combineren. Natuurlijk kunnen we dan zelf bijvoorbeeld een dashboard ontwikkelen om de opgedane inzichten te delen met business gebruikers, maar nog mooier is het als deze mensen zelf met de data aan de slag kunnen. In deze blog laat ik drie manieren zien hoe we dit voor elkaar kunnen krijgen, gebaseerd op de Microsoft Azure stack.

Data lake zones

Even bij het begin beginnen: dat data lake. In Azure wordt een ‘Data Lake Storage’ aangeboden, wat in feite Hadoop (specifiek HDFS) as a service is: hiërarchische file storage die het best te benaderen is met Spark. De hoofdmappen op het data lake noemen we ook wel ‘zones’. In de ‘raw’ zone wordt data uit de bronsystemen onbewerkt neergezet. Het schoonmaken, koppelen en oppoetsen van deze data leidt tot de bestanden die we in de ‘curated’ zone neerzetten: gestructureerde datasets (in bijvoorbeeld CSV-formaat) met duidelijke naamgeving van de kolommen en velden. Deze zones worden ook wel aangeduid met bronze/silver/gold, zoals in het plaatje hieronder.


Architectuur van Delta Lake (https://delta.io) waar de verschillende data lake zones neer worden gezet.

In een toekomstig blog gaan we misschien nog verder in op hoe je zo’n data processing pipeline opzet, maar voor nu gaan we er vanuit dat er nette curated data op het data lake staat. Nu komt er een vraag van een gebruiker die wel handig is met Power BI en graag met die data aan de slag wil. Hoe richten we dit goed in? Hiervoor zijn een aantal verschillende mogelijkheden.

Optie 1: direct op het data lake

Het meest eenvoudige is om de gebruiker direct toegang te geven tot de files op het data lake. De gebruiker kan dan zelf via Power BI iedere file apart ophalen en moet hierna zelf de datasets aan elkaar koppelen om een datamodel te maken. Hoewel deze oplossing het meest eenvoudig is om te realiseren, is ze ook het minst gebruiksvriendelijk, en kan een gebruiker zo wellicht de data verkeerd koppelen en daarmee onjuiste conclusies trekken. Maar het is een logische eerste stap om gebruikers zelf aan het analyseren van data te zetten, zeker als de modellen nog niet heel complex (i.e. meerdere datasets en relaties) zijn.

Optie 2: dataset in de Power BI Service

Een volgende stap is om die modellen zelf op te leveren. Door het model te maken in Power BI (zonder een dashboard aan de voorkant) en deze te uploaden naar de Power BI Service (de cloud) stel je gebruikers in staat om vanaf hun desktop te verbinden met zo’n model. Zij kunnen het model vervolgens niet wijzigen, maar er wel allerlei rapportages op bouwen. Een dergelijk model wordt ook wel een golden dataset genoemd. Met de gratis Power BI workspaces in de Service kom je een heel eind, maar er zitten limieten aan de hoeveelheid data in een model en aan de performance, wat je gaat merken als meerdere mensen tegelijk van het model gebruik willen maken.

Daarnaast kun je de Power BI Desktop bestanden niet handig in versiebeheer zetten