1. Home
  2. Power BI Connector voor E...
  3. 2. Power BI Desktop
  4. 2.3 Functie GetTable

2.3 Functie GetTable

Met de functie GetTable kun je alle endpoints (tabellen) van Exact Online gebruiken, zodat je meer gegevens kunt inlezen dan alleen de voorgedefinieerde tabellen.

Kijk op https://start.exactonline.nl/docs/HlpRestAPIResources.aspx voor een overzicht van alle endpoints, met de beschikbare velden, die Exact Online aanbiedt.

Let op: dit vereist technische kennis over het gebruik van de API endpoints van Exact Online. Ook zijn er een aantal belangrijke aandachtpunten met betrekking tot de fair use policy en de performance waar je rekening mee moet houden. Bij overmatig datagebruik kunnen extra kosten in rekening gebracht worden. Lees deze handleiding aandachtig door voordat je deze functie gaat gebruiken!

Als je zelf niet de benodigde kennis hebt van de API endpoints van Exact Online dan kunnen we je daar op consultancybasis bij helpen. Neem hiervoor contact met ons op.

 

Gebruik indien mogelijk de Bulk-services

Een kenmerk van de Exact Online API is dat de data in calls van 60 regels worden ingelezen. Van een aantal endpoints is naast de gewone endpoint ook een bulk-endpoint aanwezig. Deze bulk-endpoints worden in calls van 1000 regels ingelezen en geven daardoor een veel beter performance. De bulk-endpoints zijn te herkennen aan de naam Bulk in de kolom Service.

Door de Exact Online API wordt een limiet gehanteerd van 5000 calls per dag per administratie, als je dat limiet bereikt hebt kun je de rest van de dag geen gegevens meer ophalen.

blank

Controleer daarom altijd of er van de endpoint ook een bulk-service beschikbaar is en maak daar dan gebruik van. Je krijgt dezelfde gegevens, maar dan 16x sneller. Veel gebruikte bulk-services zijn:

  • GrootboekMutaties (bulk/Financial/TransactionLines)
  • Grootboek (bulk/Financial/GLAccounts)
  • VerkoopFacturen (bulk/SalesInvoice/SalesInvoices en bulk/SalesInvoice/SalesInvoiceLines)
  • VerkoopOrders (bulk/SalesOrder/SalesOrders en bulk/SalesOrder/SalesOrderLines)
  • Leveringen (bulk/SalesOrder/GoodsDeliveries en bulk/SalesOrder/GoodsDeliveryLines)
  • Offertes (bulk/CRM/Quotations en bulk/CRM/QuotationLines)
  • Artikelen (bulk/Logistics/Items)
  • VerkoopPrijzen (bulk/Logistics/SalesItemPrices)
  • Relaties (bulk/CRM/Accounts)

Gebruik altijd de Filter-parameter

Verder is het van belang om alleen de regels in te lezen die je daadwerkelijk nodig hebt. Hiervoor kun je de filter-parameter gebruiken in de GetTable functie.

Zonder het gebruik van deze filter-parameter zal de connector alle regels inlezen die er zijn. Dus heb je 10 jaar historie in Exact Online staan, dan wordt dit volledig ingelezen. Ook als je hierna in de Power Query editor regels filtert, dan worden ze eerst toch allemaal ingelezen. In theorie kan het dan zo zijn dat je eerst 1.000.000 regels inleest en vervolgens 900.000 weg filtert. Dat is niet efficiënt, je kunt dan beter alleen de 100.000 regels inlezen die je nodig hebt. Dat kan met de Filter parameter.

Voorbeelden van filters zijn:

  • InvoiceDate ge DateTime'2021-01-01T00:00:00' (factuurdatum op of na 01-01-2021)
  • "InvoiceDate ge DateTime'" & Text.From(Date.Year(DateTime.LocalNow())-1) & "-01-01T00:00:00'" (factuurdatum op of na 01-01 vorig jaar, achteraf aan te passen in de Power Query Editor)
  • "InvoiceDate ge DateTime'" & Date.ToText(Date.AddMonths(Date.From(DateTime.LocalNow()),-2),"yyyy-MM-dd") & "-01-01T00:00:00'" (factuurdatum in de laatste 2 maanden, achteraf aan te passen in de Power Query Editor)
  • Status eq 50 (alleen facturen met status 50 – Verwerkt)
  • InvoiceNumber ge 20200001 (factuurnummer groter dan of gelijk aan 20200001)

De vergelijkingen die je in het filter kunt gebruiken zijn: eq (gelijk aan), ne (niet gelijk aan), gt (groter
dan), lt (kleiner dan), ge (groter dan of gelijk aan), le (kleiner dan of gelijk aan), and en or.

Bij de volgende API endpoints (standaard én bulk) is het verplicht om een filter te gebruiken:

  • Cashflow/PaymentTerms
  • CRM/Accounts
  • CRM/Addresses
  • CRM/Contacts
  • CRM/Quotations en CRM/QuotationLines
  • Documents/DocumentAttachments
  • Documents/Documents
  • Financial/GLAccounts
  • Financial/GLClassifications
  • Financial/TransactionLines
  • Logistics/Items
  • Logistics/SalesItemPrices
  • SalesInvoice/SalesInvoices en SalesInvoice/SalesInvoiceLines
  • SalesOrder/GoodsDeliveries en SalesOrder/GoodsDeliveryLines
  • SalesOrder/SalesOrders en SalesOrder/SalesOrderLines

Gebruik indien mogelijk de Expand-parameter

Van een aantal gegevens zijn afzonderlijke endpoints beschikbaar voor de headers en de regels. Bijvoorbeeld SalesInvoices / SalesInvoiceLines, SalesOrders / SalesOrderLines en GoodsDeliveries / GoodsDeliveryLines. Met de expand-parameter kun je de headers en de regels in één keer inlezen. Dat levert een betere performance op dan het afzonderlijk inlezen van beide.

Verder heb je bij de Lines niet altijd de mogelijkheid om op datum te filteren, wat bij de headers wel kan. Gebruik dus altijd de header-endpoint in plaats van de lines!

Bijvoorbeeld het gebruik van de bulk/SalesOrder/GoodsDeliveries endpoint. Door bij de expand-parameter GoodsDeliveryLines in te vullen (en dit veld ook in de select-parameter in te vullen), lees je tegelijk met de header alle bijbehorende regels in. In Power Query kun je deze regels zichtbaar maken door ze uit te klappen.

 

Werkwijze GetTable functie

De werkwijze is als volgt:

  • Klik in de navigator de map Functions open en vink de functie GetTable aan.
  • In dit schermvoorbeeld hebben we de verkoopprijzen (SalesItemPrices) opgevraagd.
  • blank
  • Vul bij AdministratieCode de administratiecode van PowerBIConnector.nl in.
  • Vul bij Service de servicenaam van de endpoint in, zoals die staat in de Resource URI. In ons voorbeeld is dat de service bulk. (let op: zonder hoofdletters!)
  • Vul bij Endpoint de naam van de endpoint in, zoals die staat in de Resource URI. In ons voorbeeld is dat de endpoint Logistics/SalesItemPrices. (let op: hoofdlettergevoelig!)
  • Vul bij Select de velden in die je wilt inlezen van deze endpoint, gescheiden door een komma. In ons voorbeeld zijn dit de velden: Account,Item,Quantity,Price (hoofdlettergevoelig!)
    Lees alleen de velden in die je daadwerkelijk gebruikt in het dashboard. Dat is één van de basisprincipes van een goed datamodel in Power BI. Elk veld dat je onnodig inleest kost onnodige importtijd en zal het datamodel in Power BI onnodig vertragen.
  • Vul bij Expand indien mogelijk de regel endpoint in, te herkennen aan de omschrijving ‘Collection of lines’. Dit kun je gebruiken om de headers en regels in één keer in te lezen, bij de endpoints waar dit van toepassing is. Bijvoorbeeld in de endpoint bulk/SalesOrder/SalesOrders is een expand mogelijk naar de SalesOrderLines.
  • Vul bij Filter altijd een filter in, zodat alleen die regels ingelezen worden die je nodig hebt (zie hierboven). Gebruik bijvoorbeeld een datumfilter om alleen de regels uit het gewenste periodebereik in te lezen. Bijvoorbeeld InvoiceDate ge DateTime'2020-01-01T00:00:00' om alleen de facturen vanaf 1 januari 2020 in te lezen. Of bijvoorbeeld Status eq 50 om alleen de verwerkte facturen in te lezen. Of InvoiceNumber ge 20200001 om alleen de factuurnummer groter dan of gelijk aan 20200001 in te lezen.
    De vergelijkingen die je kunt gebruiken zijn: eq (gelijk aan), ne (niet gelijk aan), gt (groter dan), lt (kleiner dan), ge (groter dan of gelijk aan), le (kleiner dan of gelijk aan), and en or.
  • Vul bij Criteria de function criteria in, dit is alleen verplicht bij de meeste Function URI’s. Bijvoorbeeld de function uri AgingOverviewByAccount heeft als verplichte parameter accountId={Edm.Guid}. Vul hier dan de volledige parameter in inclusief de naam, bijvoorbeeld accountId=guid'1fecc344-5957-4099-8bd4-94b650064467'
  • Vul bij Beta de tekst ‘true’ in als het een endpoint betreft die in beta is, anders kan dit veld leeg gelaten worden.
  • Klik op Apply, het voorbeeld wordt nu getoond.
  • blank
  • Klik vervolgens op Transform Data (zorg dat het vinkje voor GetTable aan staat) om de tabel in de Power Query Editor in te lezen. Daar kun je de Result kolom uitklappen om de inhoud van de records te tonen.