Dit artikel schrijf ik op basis van mijn ervaring bij mijn huidige opdracht en gaat over Power BI Shared datasets. Daarnaast krijg ik circa 1x per maand het verzoek om met klanten te delen wat de beste manieren zijn om Power BI te delen. Shared datasets zijn hierin vaak een goede oplossing, al dien je wel met een aantal overwegigen rekening te houden.
Dit artikel schrijf ik vanuit mijn werkzaamheden bij mijn huidige opdrachtgever, en ik deel vooral overwegingen die ik heb gemaakt en uiteindelijke keuzes. Ik denk jouw hiermee verder op weg te kunnen helpen om jouw eigen afwegingen te kunnen maken.
Klantvraag
De opdracht die mijn gevraagd is, is om een Power BI oplossing op te zetten die de cash flow van het bedrijf weergeeft. De business vraag was dus om inzicht en sturing te geven aan cash flow ontwikkelingen. Dit waren de aller belangrijkste eisen / kenmerken:
- Er zowel is te filteren op Actual (verleden) als Forecast (toekomst);
- Er iedere maand een nieuwe Forecast is voor het huidige jaar;
- Sommige eindgebruikers alle rechten hebben, en andere enkel één land;
- De data dient automatisch ververst te worden, dus geen handmatige downloadjes naar Excel en dan uploaden etc.;
- De oplossing dient schaalbaar te zijn (dus zo van 5 naar 200 eindgebruikers), en modulair (er is een basis model, toevoegingen zijn snel gekoppeld aan het bestaande model);
- De finance afdeling van het bedrijf moet zelf in staat zijn om het model te onderhouden en verder aan te passen. Geen uber complexe DAX functies dus (dat zou ik sowieso niet doen 😉
- Er is een bron systeem waarin alle data periodiek door de verwerkers wordt geladen, maar er is geen DataWareHouse (en dit komt er voorlopig ook niet voor deze data).
- De transactie tabellen bevatten als snel 1 miljoen rijen, dus performance moet goed zijn en blijven.
Wanneer dit de eisen zijn, dan begin altijd met het schetsen van twee onderdelen:
- Hoe loopt de dataflow van Bron naar Eindgebruiker, waarin ook zichtbaar is hoe dit periodiek wordt geupdate
- Hoe ziet het datamodel in Power BI Desktop eruit (dimensies, feitentabellen, metingen, Rollen wie wat mag zien etc.)
Omdat dit artikel gericht is op het delen van een Power BI model via shared datasets, ga ik nu een sprong maken in de tijd en veronderstel ik dat er een Power BI Desktop model is gemaakt waarin aan alle belangrijke eisen en bovenstaande 2 onderdelen is voldaan. Dit datamodel is geupload naar 1 groepswerkruimte (je hebt dus een Pro of Premium licentie nodig). Vervolgens maak je losse Power BI Desktop rapporten voor ieder van de verschillende hoofdonderwerpen. Bij een Cash Flow gaat dan dan bijv. over 1) Cash Flow hoogover 2) Operationele Cash flow detail rapport 3) Bankstanden rapport 4) eventuele andere detail rapporten etc.
Power BI Datamodel splitsen van Power BI rapporten (Shared datasets)
Om maar gelijk met de deur in huis te vallen: Wanneer je bovenstaande eisen hebt (en die heb je al snel bij afdelingsbrede oplossingen) dan is het slim om je Power BI datamodel te splitsten van je Power BI rapporten. Hierdoor bouw je in één Power BI bestand je model (met Query Editor, metingen, metingengroepen etc.) en heb je een aantal andere Power BI bestanden die een verbinding maken met je Power BI datamodel. Dit heeft als belangrijke voordeel dat:
- Je voorkomt dat je 1 Power BI monsterbestand hebt met 50 rapport pagina’s (onoverzichtelijk, veel ballast omdat iedere gebruikersgroep vaak maar een stukje van het geheel aan rapportpagina’s wil zien).
- Rollen en Rechten (Row-Level-Security). Wanneer RLS goed werkt in je datamodel PBI, dan doet dat het ook goed in je rapporten PBI’s. Dus je hoeft maar 1x rollen aan te maken, en maar 1x Rollen aan Rechten te koppelen op de dataset in de Power BI Service.
- Wanneer je met twee schermen werkt (lijkt mij essentieel als Power BI bouwer) je op 1 scherm het datamodel open hebt, en op het ander scherm één of meerdere rapporten
Schematisch ziet dit er al volgt uit:
Eén of meerder bronsytemen worden vanuit Power BI Desktop geopend, dit PBI bestand wordt je PBI datamodel. Hierin maak je je Query Editor transformaties, je datamodel, metingen etc. Dit model upload je naar een Groepswerkruimte (group workspace). Vervolgens open je een nieuw leeg Power BI Desktop bestand en kies je als bron voor Power BI dataset. Nu maak je jouw rapport en dat upload je weer naar dezelfde groepswerkruimte.
Overige voordelen van Power BI (shared) datasets
Een andere reden (en dat is voor mij een Nice to Have waarin ik hier geen gebruik van maak) kan je 1) eindgebruikers het model laten gebruiken vanuit Power BI Apps, 2) het Power BI datamodel van uit een Group workspace delen in andere group workspaces en 3) delen via Excel. Voordeel 1 licht ik kort extra toe:
Wanneer je eindgebruikers de mogelijkheid wil geven om het model te gebruiken zal je ze eerst via Power BI apps toegang moeten geven. Dit doe je door onderstaande twee vinkjes die hier uit staan wel aan te zetten. Verder info hierover kan hier je bij de toelichting van Microsoft zelf vinden.
Schoon en helder datamodel
Ik wil met klem benadrukken dat je goed moet testen want eindgebruikers zien die je toegang geeft tot het datamodel. Zo bestaat mijn datamodel uit circa 10 tabellen en 50 metingen. Eindgebruikers weten relatief minder goed welke meting waarvoor gebruikt worden (ondanks de strakke naamgeving en toelichting). Dit kan je een eindgebruiker niet kwalijk nemen, en daarom zorg ik er voor dat ik altijd een (1) aparte metingen tabel hebt, (2) metingen onzichtbaar maakt die niet geheel helder zijn voor een eindgebruiker. Zo is Net Sales hier op drie manieren gemaakt, wellicht is dit wat veel / overbodig. (3) nagenoeg alle velden die niet relevant zijn voor een eindgebruiker onzichtbaar worden gemaakt. Enkel in Power BI desktop kan je kiezen of je onzichtbare velden toch lichtgrijs zichtbaar wilt hebben. Voor eindgebruikers in Power BI Service kan dit niet.
In dit artikel ben ik niet in gegaan op het delen via een tablet /telefoon, PDF, PowerPoint etc. Dat kan allemaal ook, maar in beginsel zou ik dit nog niet doen. Kijk eerst eens hoe een rapport wordt beoordeelt wanneer het wordt gedeeld in de Power BI Service.