Power BI aggregations

Geplaatst in: PowerBI | 0

Een nieuwe feature die vanaf de september 2018 update in Power BI Desktop aanwezig is – zij het als preview – is ondersteuning van aggregaat-tabellen. In feite komt het hierop neer:

  • Power BI kan bij zeer grote hoeveelheden data niet alles in-memory hebben staan.
  • In die gevallen kun je de data in ingedikte vorm opslaan in een aggregaat-tabel,
  • Deze aggregaat-tabel wel in-memory plaatsen,
  • En dus query snelheid verkrijgen bij het opvragen van ingedikte data,
  • Met de mogelijkheid om in de details in te zoomen en die dan “live via een direct query” op te halen.

Dit feature komt neer op wat we al kennen bij andere leveranciers als “Aggregate Awareness”.

Voor de business user maakt het opvragen van de data geen verschil, hooguit komt het antwoord sneller.

Hoe werkt het?

Eerst een praktische opmerking. In onze proeftuin is er geen sprake van grote volumes. We hebben zo’n 120.000 rijen voor de verkoopdetails. Dit zal in de praktijk geen reden zijn om een aggregaat-tabel in het leven te roepen. Het dient hier nu als illustratie, maar in de praktijk gaat het echt om tabellen met vele miljoenen (miljarden ?) rijen aan data.

Voorbeeld

In ons voorbeeld hebben we verkoopdetails opgeslagen per dag, klant, promotie en product.

De geaggregeerde verkoopdata ligt opgeslagen per dag, klant en product sub-categorie. Het niveau voor de dimensie product is dus anders, en promotie speelt geen rol.

De aggregaat-tabel wordt gekoppeld aan een fysieke tabel die data per maand bevat, dezelfde tabel voor markt en dezelfde tabel voor product.

De dimensie voor de tijd is opgesplitst in meerdere tabellen. Voor elk niveau een aparte tabel, waarmee we in feite dus voor een snow-flake model kiezen en geen stermodel.

Aggregaat-tabel in het model opnemen

De aggregaat-tabel wordt verborgen voor de business users, omdat zij in feite geen weet moeten hebben van het bestaan van deze tabel. Ze vragen de feiten nog steeds uit het detailmodel.

Tijdens het inlezen van de tabeldefinitie hebben de wijze van benaderen van de tabel op “Import” gezet, zodat de data in-memory wordt geplaatst voor de snelheid.

De oorspronkelijke detailtabel komt dan overigens op “Direct query” of “Dual” te staan; Niet alle data komt in-memory te staan en wordt alleen gelezen indien nodig bij een drill-down.

Aggregatie inrichten

Eerst moet aangegeven worden dat er sprake is van een aggregatietabel in het model.

En dan moeten de juiste levels worden gespecificeerd waarop de data in de aggregaattabel ligt opgeslagen.

Conclusies

Met de introductie van het feature “Aggregations” heeft Microsoft wederom een verrijking toegevoegd aan het product Power BI.

Power BI had en heeft voor kleinere datasets geen noemenswaardige performance problemen, omdat alle data in-memory wordt gelezen. In hoeverre dit feature frequent toegepast gaat worden is nog niet helemaal duidelijk.

Een van de vragen die bij ons blijft openstaan is of het verstandig is om direct alle tabellen als een snow-flake model in te richten? Dan ben je in elk geval voorbereid op de introductie van aggregaat-tabellen.

Maar hoe snel moeten we terugvallen op deze werkwijze? Je zit immers niet zomaar aan 2 miljard rijen in je model.