Snellere OData downloads met kleinere omvang met kleine aanpassing in Power BI

Go to English version.

Invantive Cloud biedt toegang via OData tot tientallen (cloud)platformen. Hierbij wordt gebruik gemaakt van OData versie 4.01 met uitbreidingen in de volgende 4.02 versie.

Standaard vraagt Power BI van alle velden de waarde op. Vaak ontbreekt echter een waarde. De kolomnaam plus een waarde “null” wordt dan teruggeven.

Met een kleine aanpassing op het OData.Feed-statement in de Power BI Geavanceerde Editor kan de download versneld worden en bovendien significant kleiner worden door de overhead van ontbrekende waardes en hun kolomnamen te verwijderen.

Aanpassing OData.Feed in Power BI Geavanceerde Editor

Een OData.Feed statement ziet er als volgt uit in de Geavanceerde Editor:

let
    Bron = OData.Feed("URL", null, [Implementation="2.0"]),

Door het toevoegen van , ODataVersion=4, OmitValues=ODataOmitValues.Nulls en meteen ook een hogere timeout in te stellen zoals beschreven in Vermijd time-out fout bij Power BI OData download en OData downloads herleiden naar Power BI data sets krijg je dan:

let
    Bron = OData.Feed("URL", null, [Implementation="2.0", ODataVersion=4, OmitValues=ODataOmitValues.Nulls, Headers=[Referer = "change-to-your-unique-id-for-the-source" ], Timeout=#duration(0,4,0,0)]),

Snellere en Kleinere OData Downloads Buiten Power BI

Het is ook mogelijk om buiten Power BI gebruik te maken van de snellere en kleinere downloads door het weglaten van ontbrekende waardes en de bijbehorende kolomnamen.

Hiervoor dienen de volgende HTTP headers ingesteld te worden:

  • OData-MaxVersion met de waarde 4.0.
  • Prefer met de waarde omit-values=nulls.

Invantive Bridge Online zal dan bij het downloaden ter bevestiging van het verzoek in de HTTP header Preference-Applied de waarde omit-values=nulls zetten.

Metingen

Een aantal metingen zijn uitgevoerd om de impact van het achterwege laten van de ontbrekende waardes te bepalen.

Tabel Omvang voor (KB) Gecomprimeerde omvang voor (KB) Omvang na (KB) Gecomprimeerde omvang na (KB )
Dummy.Demo.Persons 829 101 428 71
REST: TransactionLinesIncremental 6.738 710 4.531 652
REST: TransactionLinesBulk 15.104 1.857 9.971 1618
XML: GLTransactionLines 371.791 33.537 6.758 388
Twinfield 1200 80 75 6

De eerste tabel is een eenvoudige tabel met persoonsgegevens en beperkte denormalisatie.

De andere drie tabellen behelzen telkens dezelfde circa 6.000 grootboekregels uit het boekhoudpakket Exact Online.

Uit de metingen komt naar voren dat tabellen op basis van een goed genormaliseerd datamodel relatief weinig winst boeken qua downloadomvang (15-30% lager voor Persons en TransactionLinesIncremental).

Ook de tabel TransactionLinesBulk met relatief veel gedenormaliseerde gegevens wordt maar 15% kleiner. Dit sluit aan bij de verwachting dat het compressie-algoritme de dubbele gegevens door denormalisatie zoveel mogelijk samenvoegt tot op zekere hoogte.

Voor de tabel GLTransactionLines is de winst echter enorm. Dit is een “sparse” tabel met veel velden zonder waardes. Door hiaten in de Exact Online metadatadefinities (XSD) is niet bekend welke velden gevuld kunnen zijn en worden erg veel velden teruggegeven terwijl maar een relatief klein aantal gevuld is. De compressie zorgt er wel voor dat de dubbele gegevens zoveel mogelijk samengevoegd worden, maar een generiek compressie-algoritme loopt hier tegen zijn grenzen aan.

De download door het weglaten van overbodige lege veldwaardes leidt tot een bijna 100x kleinere download voor het XML-formaat. Het is goed meetbaar dat na deze optimalisatie de tabel TransactionLinesBulk relatief veel last heeft van het gedenormaliseerde karakter. Hij is en blijft ruim 2x zo groot als de incrementele downloadtabel en circa 4x zo groot als de (wat meer beperkte) XML-versie van de grootboektransacties.

In het algemeen geldt dat alle tabellen nog zouden baat hebben van ondersteuning voor het Brotli compressieprotocol door Power BI en honorering van ETag en Cache-Control HTTP response headers door Power BI. Dit zou de hoeveelheid netwerkverkeer met circa 10% kunnen verlagen voor productiegebruik en een factor 10 voor ontwikkelwerk door dataspecialisten.

Beschikbaarheid

De nieuwe optimalisatiemogelijkheden kunnen nu al zonder risico’s toegevoegd worden.

De release die de nieuwe optimalisatiemogelijkheden ondersteunt zal naar verwachting voor 21 januari 2022 in productie genomen zijn.