Lange duur verversen Exact Online Power BI rapport met W&V, omzet, debiteuren en crediteuren

Voor een klant vul ik regelmatig een Power BI rapport vanuit Microsoft Power BI Desktop. Het downloaden van het rapport duurt lang, rustig tien minuten, en haalt ook GB aan data over volgens de Invantive Bridge Online monitor.

Het rapport toont alleen gegevens van één specifieke klant; in het abonnement zitten veel meer gekoppelde Exact Online klanten en interne administraties.

Het rapport gebruikt een dertigtal tabellen van Exact Online.

Het rapport is als Power BI-sjabloon (pbit) toegevoegd.

Is er laaghangend fruit waarmee dit rapport versneld kan worden? En zaken om de hoeveelheid dataverkeer te beperken?

langzaam-rapport.pbit (566,5 KB)

Het Power BI rapport kan op verschillende manieren verbeterd worden. Advies is om eerst deze tips te verwerken en indien nodig dan nogmaals de ervaringen te delen qua looptijden en datavolume dat met de Power BI connector opgehaald wordt. Er zitten mogelijk veel verbeteringen en correcties in het vat.

Wisselen van Bulk naar Incremental

Het Power BI rapport gebruikt onder andere als databronnen:

  • TransactionLinesBulk
  • DocumentAttachmentsBulk
  • SalesInvoiceLinesBulk
  • SalesInvoicesBulk
  • AccountsBulk
  • GLAccountsBulk
  • DocumentsBulk

Voor de meeste van deze tabellen gebruikt in het rapport is er ook een *Incremental versie, zoals:

  • TransactionLinesIncremental
  • AccountsIncremental

Deze *Incremental tabellen hebben een aantal eigenschappen:

  • de tabellen zijn minder breed qua kolommen en inhoud (halveert pakweg de downloadomvang),
  • de tabellen zijn genormaliseerd (makkelijker datamodel),
  • de tabellen zijn circa 5-10x sneller te importeren.

Advies is om de bestaande tabellen waar het kan te vervangen zoals beschreven op Snel en met minder API-calls Exact Online uitlezen met de incrementele "sync API"-tabellen.

Dit maakt het verversen van het dashboard significant sneller met de Power BI connector voor Exact Online, vooral voor een grote administratie.

Documenten en andere Overbodige Tabellen

In het rapport staat een heel klein blokje met documentgegevens. Voor het Power BI dashboard is dit mogelijk heel relevant, maar ik durf me de vraag te stellen of alle onderdelen van het rapport zoals dit wel gebruikt worden.

Sowieso valt niet uit te sluiten dat meerdere tabellen niet gebruikt worden.

Advies is om eerst te kijken of er grafische onderdelen zijn in het rapport die niet gebruikt worden en om ze in dat geval te verwijderen.

Daarna kan met een tool zoals:

of een van de tools beschreven op Power BI Exchange een analyse gemaakt worden.

In een zogenaamde “CRUD-matrix” is te zien of en waar een tabel gebruikt wordt in rapportagefuncties.

Verwijder alle ongebruikte tabellen uit het Power BI bestand; dat scheelt fors in downloadtijd en omvang.

Vergeet hierbij niet ook naar de tabel GLAccountClassifications te kijken; deze lijkt niet gekoppeld in het datamodel.

Bedenk ook of alle velden wel nodig zijn; dit kan tot pakweg een factor 3 in downloadomvang en PBIX-omvang schelen.

Vooral bij XML-tabellen zoals StockPositions kan het verwijderen van overtollige kolommen tot grote besparingen in de downloadomvang. De Power BI-connector geeft iedere kolom terug en de Exact Online XML-tabellen hebben extreem veel kolommen die ook nog eens heel vaak leeg zijn.

Tabellen met dezelfde informatie weghalen

Financieel

Vooral op het gebied van de Winst & Verlies rekening zijn er veel tabellen in gebruik, zoals BalanceLines, ReportingBalance, ProfitLossOverview, ProfitLossOverviewCompareList en twee openingbalanstabellen.

Vooral de tabel ReportingBalance is erg beroerd qua performance, vooral als er kostenplaatsen of kostendragers gebruikt worden. De tabellen zijn meest onnodig omdat de data al elders aanwezig is.

Advies is om alle tabellen te vervangen door gegevens afgeleid uit BalanceLinesPerPeriod (als er geen kostenplaatsen/kostendragers nodig zijn) of BalanceLinesPerPeriodCostAnalysis (als er wel kostenplaatsen en/of kostendragers nodig zijn).

Verkoop

Ook qua verkoopinformatie qua bespaard worden op ruimte. Als gebruik gemaakt wordt van *Incremental tabellen, dan is de kop van de factuur ook opgenomen in de rijen. De tabel SalesInvoicesBulk hoeft dan niet meer gedownload te worden, maar kan afgeleid worden uit de regels.

Administraties

De gebruikte tabel voor administraties is niet de juiste: HRMDivisions is niet een lijst van administraties op systeemniveau, maar op abonnementsniveau. Dit betekent dat elke administratie hier vaak dezelfde inhoud in heeft staan. Voor accountants met zelfboekende klanten is dat nog iets complexer: er staan in HRMDivisions de administraties die horen bij het Exact Online abonnement van de klant waar de administratie bij hoort.

Meer uitleg over Exact Online tabellen die per abonnement gepartitioneerd zijn zoals Users en MailMessagesReceived is te vinden op Dubbele regels in SystemDivisionClassifications op Exact Online - #2 door guido.leenders.

Een betere keus is SystemDivisions. Deze is significant sneller te downloaden en vereist geen extra stappen om dubbele waarden te verwijderen. Een stap met het verwijderen van dubbele waarden in Power BI is bijna altijd een teken van een ontwerpprobleem (een zogenaamde “code smell”).

De tabel met beschikbare Exact Online administraties kan trouwens ook gebruikt worden als keuzemenu voor de parameter “division-code”.

Verticaal Filteren

Bij bijvoorbeeld documenten valt op dat er niet verticaal gefilterd wordt. Dit betekent dat alle documenten opgehaald worden. Dat is zeer zelden nodig; meestal is maar een paar soorten nodig, zoals de verkoopfacturen.

Advies is om een relevant filter toe te voegen.

Datamodel

Power BI kent alleen relaties op basis van een enkele waarde. Dat voorkomt ook een aantal pijnpunten met lege waardes. Het datamodel maakt gebruik van een samengestelde sleutel met daarin:

  • het label van de Exact Online administratie waar de rij in thuishoort,
  • de natuurlijke sleutel van de rij, zoals de artikelcode.

Dit levert een relatief lange tekst op. Voor het downloaden maakt dat niet uit; de berekening vindt plaats op de Windows PC. Echter, bij het leggen van joins is het relatief duur om lange sleutels te gebruiken.

Advies is om in plaats van de hele administratienaam alleen de divisiecode te gebruiken. Het uitvoeren van de joins kost dan minder rekentijd.