Elke applicatie levert data op en data geeft inzicht. Of het nou een bedrijfsapplicatie of een consumentenapplicatie is, de data die je er uit haalt kun je gebruiken. Enerzijds om bedrijfsprocessen te faciliteren, te controleren of te verbeteren. Anderzijds om kennis te vergaren en bijvoorbeeld je klanten of consumenten te analyseren.
Wij hebben dat gedaan op de data uit de Mendix applicatie van een van onze opdrachtgevers. In Mendix kunnen aanpassingen naar wens snel plaats vinden, de uitdaging was de BI architectuur hier op aan te laten sluiten. In dit blog leggen we aan de hand van dit praktijkvoorbeeld uit hoe Mendix en Power BI samen een dynamische en selfservice gerichte oplossing bieden.

Mendix, business applicatie op maat
Mendix is een rapid-app development tool waarmee, snel en effectief IT-oplossingen op maat gerealiseerd kunnen worden. De vraag van de klant was om een flexibel IT systeem te implementeren, waarbij de data invoer en werkprocessen worden gestroomlijnd en inzichtelijk gemaakt. Iets waar Mendix zich perfect voor leent. Nadat de applicatie in gebruik was genomen, ontstond bij onze opdrachtgever de veelvoorkomende wens om over de data te kunnen rapporteren. Aangezien de Mendix applicatie continu in development is, brengt dat de volgende uitdaging met zich mee.
BI transformatie
De eerste stap van Mendix naar BI is het transformeren van de Mendix database. Om over de data te rapporteren is het niet noodzakelijk om de volledige database te reproduceren in de BI tool. Om de applicatie goed te laten functioneren maken wij gebruik van placeholder objecten, generalisatie tabellen of van beheersbare Masterdata tabellen. Om dubbel ontwikkelwerk te minimaliseren is ervoor gekozen om zoveel mogelijk data plat te slaan en functionele koppeltabellen te beperken. Tijdens het transformatieproces worden deze kenmerken vertaald van objecten naar attributen en weggeschreven op de BI tabellen.
Hoewel dit dubbel ontwikkelwerk qua reconstructie van de database structuur scheelt, heeft dit wel een keerzijde; minder flexibiliteit. Elke toekomstige wijziging in de kerntabellen vereist (minimale) additionele werkzaamheden voor het operationeel houden van het BI transformatieproces. Je zou kunnen argumenteren dat zulke werkzaamheden een natuurlijke consequentie zijn van de groeiende en steeds complexer wordende applicatie.
SQL Server Management Studio
De platgeslagen tabellen worden beheerd in SQL Server Management Studio (SSMS). Op deze database worden de Mendix wijzigingen, die betrekking hebben op de rapportages, gefaseerd doorgevoerd. Door combinatie van deze tabellen worden in SSMS virtuele tabellen (views) gecreëerd, waarover gerapporteerd wordt. In SSMS vindt dus een virtuele transformatie plaats, dit om data replicatie te beperken. De uiteindelijke virtuele tabellen waarover gerapporteerd wordt, vormen samen een sterschema, die wordt geconstrueerd in Power BI. Power BI connecteert dus op de views van de platgeslagen tabellen uit Mendix, daarover straks meer. Eerst vertellen we je hoe je in het geval van een veel-op-veel relatie, kan corrigeren voor de data multiplicatie in de dimensie tabel van het sterschema.
Data Multiplicatie Correctie
Een wens is om alle dimensies en waarden met elkaar te kunnen combineren. Mede daarom hebben we ervoor gekozen om een sterschema te construeren.
De kolommen (key-figures) in de waardetabel komen uit circa 10 tabellen. Een gevolg van het combineren van alles met elkaar was dat er veel-op-veel relaties ontstonden. Hierdoor ontstaat datamultiplicatie en dat willen we uiteraard niet terugzien in de rapportages. Daarom voeren we hiervoor een correctie uit.
Dit gebeurt door het tellen van het aantal keer dat keys voorkomen in de joins. Vervolgens deel je dit aantal door de key-figures die met deze key verbonden zijn. Dit zorgt ervoor dat alle key-figures die als som gerapporteerd worden altijd de correcte waarden tonen in de rapporten, ongeacht in welke combinatie ze gerapporteerd worden.
Voor key-figures die als gemiddelde gerapporteerd worden, gaat deze correctie niet op. Bijvoorbeeld: een record met waarde ‘1000’ komt 4 keer voor en zou dan als 4 x ‘250’ voorkomen, waarvan het gemiddelde dus ‘250’ is en niet ‘1000’. Daarom zijn voor deze gevallen aparte key-figures opgenomen, waar geen data multiplicatie correcties op worden gedaan. Belangrijk is wel dat in Power BI deze waarden handmatig op type ‘gemiddeld’ gezet worden.
Power BI Selfservice samenwerking
Power BI is een zeer veelzijdige en gebruiksvriendelijke selfservice BI tool van Microsoft. Er zijn twee omgevingen, de Power BI Desktop en de Power BI Service. Beide toepassingen zijn gratis, wel heb je om content te delen in de web applicatie een Power BI Pro (€8.40 per gebruiker per maand) of Power BI Premium licentie nodig. Het samenwerken in dezelfde rapportage en het delen van content is één van de sterke punten, die Power BI een veelzijdige rapportage en analyse tool maakt.
Datamodel
Power BI Desktop is de tool om het datamodel in te maken. De functionaliteiten hiervoor vinden hun oorsprong in wat voorheen Excel PowerQuery en PowerPivot was. Data vanuit een database kan worden binnengehaald en getransformeerd (ETL) in de ‘query editor’. Vervolgens kunnen relaties tussen de tabellen worden gelegd. Dit is vergelijkbaar met de in Excel zittende functionaliteit van PowerQuery en PowerPivot.
Zoals gezegd hebben we dit gedaan door middel van een sterschema. Dit zorgt naast het overzichtelijk houden van de rapportage tabellen, voor een effectieve behandeling van de query’s op deze data. Het sterschema zou je kunnen zien als het creëren van de datamart in Power BI. Het grote voordeel ten opzichte van Excel is dat de business gemakkelijk samen kan werken aan rapportages gebaseerd op dit datamodel.
Samenwerken in de Cloud
Na de creatie van het datamodel, wordt het geüpload naar een werkruimte in de web applicatie (Power BI Service). Deze werkruimte kun je beheren, zodat elke gebruiker de juiste toegang heeft. Een automatische data verversing vindt iedere dag plaats. De data verversing vindt plaats door middel van de ‘On-premises data gateway’. Dit is een product van Microsoft waarmee de data die on-premise beschikbaar is, in ons geval op de SQL server, wordt geüpload naar de Azure cloud. Deze fungeert als de datamart die wordt benaderd in de Power BI web applicatie.
Importeren of connecteren?
Naast het importeren van data in Power BI is het mogelijk om gebruik te maken van een DirectQuery LINK, waarmee je rechtstreeks kunt connecteren naar de data in de database. Het voordeel hiervan is dat de data altijd ‘up-to date’ is met de data uit de database. De rapportage ervaring van de eindgebruiker is in dit geval wel sterk afhankelijk van de rekenkracht op het netwerk. Bij te weinig capaciteit duurt het ophalen van de data lang, en dat vermindert de ervaring. Daarom hebben wij gekozen voor een data import (hierbij geldt een limiet van 1 GB). Een ander voordeel van de data import is dat de data gecombineerd kan worden met andere databronnen (Dat kan bij een DirectQuery helaas niet). Dit komt ten goede aan de selfservice BI ervaring.
Alternatieve Data bronnen
Het is zeker het vermelden waard dat in Power BI geconnecteerd kan worden naar een heel scala aan databases en online services. Zo kan ervoor worden gekozen om de database server in de cloud te draaien op bijvoorbeeld AWS Redshift of Azure. Ook voor grootschalige oplossingen, die meer rigide datawarehousing vereisen, zijn tal van mogelijkheden, denk aan SAP BW (on HANA).
Helemaal mooi is het als je real-time kunt rapporteren op de Mendix data. Door gebruik te maken van een krachtige in-memory database, en de hele OLTP-OLAP transformatie virtueel te maken, plus de DirectQuery connectie, is het mogelijk om met Power BI real-time te rapporteren op Mendix data.
Een dergelijke real-time rapportage omgeving vermindert wel de flexibiliteit van je Mendix applicatie, omdat veranderingen rechtstreeks invloed hebben op de database transformaties en de rapportage tool. Ook zal deze oplossing een hoger prijskaartje hebben, en kun je je afvragen of je dit echt nodig hebt. In ons geval is dat niet zo en volstaat een dagelijkse verversing van de data.
De business in control over rapportage, analyse en presentatie
Het resultaat van deze oplossing met Mendix en Power BI is een flexibele en aantrekkelijke bedrijfsapplicatie, met een daarop naadloos aansluitende rapportage en analyse tool. Hierin staan samenwerking en selfservice centraal. De business heeft, met de juiste basis, zelf de controle over wat zij rapporteert, analyseert en presenteert.