Vaak worden Power BI Datasets en Tabular modellen alleen maar uitgebreid met nieuwe functionaliteit. Er wordt vaak pas aandacht aan het optimaliseren van het model besteedt als het eigenlijk al te laat is. Als het laden te lang duurt worden tabellen opgesplitst in partities, maar er wordt maar weinig gekeken naar het geheugengebruik van het model. Totdat het model niet meer ververst kan worden, omdat de Analysis-server of de Power BI service te weinig geheugen tot zijn beschikking heeft. 

Geheugengebruik

Allereerst even kort iets over het geheugengebruik van een model. Power BI Premium per user heeft bijvoorbeeld een dataset limiet van 100 GB. Dat lijkt veel, maar als een model niet gecleared wordt en er redelijk veel data dagelijks ververst wordt kan het zomaar zijn dat je bij een model van 30 GB al tegen de limiet aanloopt. 

DAX Studio

Met DAX Studio maak je het geheugengebruik van je model heel makkelijk inzichtelijk. Zo kan je snel zien welke tabellen en/of kolommen het meeste geheugen kosten. Vaak is het zo dat je met een paar kleine aanpassingen je model al aanzienlijk kan verkleinen. DAX Studio is niet alleen in te zetten op SSAS, maar kan ook op de Power BI Service gebruikt worden. 

Memory optimaliseren

Hoe je een model het beste kan optimaliseren is natuurlijk per model verschillend, maar ik zal hieronder een aantal basisstappen bespreken die je vrijwel altijd kan toepassen. Ter illustratie laat ik ook van een aantal stappen de impact zien op een model van 32 GB. Een aantal stappen zullen misschien voor de hand liggen, maar vaak zijn mensen zich niet bewust dat de impact soms enorm is. 

BI4SAP begin

Verborgen velden

Uit gemak worden in een model vaak velden die niet gebruikt worden op "hidden" gezet. Het model voor de eindgebruiker wordt minder complex, maar de velden worden nog wel geladen. Afhankelijk van de grootte van het veld, het aantal records en het aantal unieke waarden kan een veld wat niet wordt gebruikt toch veel geheugen innemen. Met de Advanced Scripting Language van Tabular Editor kan een script worden geschreven waarmee alle verborgen velden die niet worden gebruikt uit het model worden verwijderd. Hieronder zie je dat bijvoorbeeld het verwijderen van 2 velden het model al met bijna 13% verkleind. 

BI4SAP OverbodigeVelden

Datatypen

Een integer neemt nu eenmaal minder geheugen in dan een String. In dit model was in 1 oogopslag te zien dat er 1 samengestelde key werd gebruikt die in totaal ongeveer 20% van het geheugen van het model claimde. Door deze key te vervangen door een numerieke teller ([KY] in de afbeelding) werd dit beperkt tot minder dan 2%. 

BI4SAP KeyGeheugen

Datum/tijd velden

Zoals hierboven aangegeven wordt het geheugen wat een veld gebruikt mede bepaald door het aantal unieke waarden. Door datum/tijd velden op te splitsen in een datumveld en een tijdveld kan er dus ook veel geheugen bespaard worden.  

Data inperken

Data in feitentabellen wordt in verband met performance regelmatig ingeperkt tot de afgelopen X aantal jaar. Door deze strategie ook door te voeren in een van de bijbehorende dimensies hebben we in dit model ook zomaar 5 GB aan geheugen kunnen besparen. 

Dubbele velden

Simpel, maar doeltreffend. Kijk of er geen data dubbel in je model staat. In dit model stond het documentnummer bijvoorbeeld en in de feitentabel en in de dimensie. Het verwijderen van het veld uit de feitentabel levert weer een verkleining van 8% op. 

Conclusie

Met DAX Studio is het inzichtelijk krijgen van het geheugengebruik van een model erg simpel. Met een aantal eenvoudige en simpele stappen is het geheugen vaak snel met een aanzienlijk percentage terug te brengen. Vooral in het begin is hier veel winst te behalen. Daarna wordt het wel steeds lastiger, maar meestal is het doel dan al bereikt. 

BI4SAP Eind

Deze website maakt gebruik van cookies: meer informatie