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 waarde4.0
. -
Prefer
met de waardeomit-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.