Download instabiel, API-limiet bereikt na enkele pogingen

let
  Bron = OData.Feed("https://bridge-online.cloud/xxxxx-exact-online-acme/odata4", null, [Implementation = "2.0"]),
  #"Navigatie 1" = Bron{[Name = "ExactOnlineREST.Sync.SyncTransactionLines@eol", Signature = "table"]}[Data],
  #"Andere kolommen verwijderd" = Table.SelectColumns(#"Navigatie 1", {"Account","AmountDC","Division","Asset","CostCenter","CostUnit","Description","DueDate","EntryNumber","FinancialPeriod","FinancialYear","GLAccount"})
in
  #"Andere kolommen verwijderd"

Deze query in dataflows wordt dagelijks gepland. Als deze lukt duurt de vernieuwing tussen de 70 en 80 minuten, soms slecht 10 minuten. Maar even vaak bereikt deze vernieuwing de uitgebreide timeout.

Na ettelijke vernieuwing zie ik in het monitor-center dat de dagelijkse API-limiet van 5000 Calls van Exact Online bereikt werd. Deze tabel bevat ongeveer 2,1 miljoen rijen voor deze database.

Het lijkt alsof de query ergens blijft hangen of opnieuw start.

Hoe zorg ik ervoor dat deze data-ophaling stabiel wordt en dit dagelijks maar rond de 10 minuten in beslag neemt (wat ook de logische duurt lijkt te zijn)?

Na het downloaden van sessie I/O’s in het gelijknamige scherm van Invantive Cloud blijkt dat op 1 divisie meer dan 5.000 API calls gedaan werden.

Circa 80% hiervan komt voor rekening van de tabel ExactOnlineREST.FinancialTransaction.BankEntryLines. Advies is om deze af te leiden uit TransactionLinesIncremental of maar deels op te halen, bijvoorbeeld via een filterstap (met query-folding).

De rest behelst:

Tabel API-calls
ExactOnlineREST.Assets.AssetGroups 6
ExactOnlineREST.Assets.Assets 167
ExactOnlineREST.Budget.Budgets 988
ExactOnlineREST.Financial.GLAccountClassificationMappings 44
ExactOnlineREST.FinancialTransaction.BankEntryLines 4255
ExactOnlineREST.HRM.Costcenters 16
ExactOnlineREST.HRM.Costunits 131
ExactOnlineREST.HRM.HrmDivisions 1
ExactOnlineREST.Incremental.PurchaseOrderLinesIncremental (deleted) 16
ExactOnlineREST.Incremental.PurchaseOrderLinesIncremental (metadata) 1
ExactOnlineREST.Incremental.PurchaseOrderLinesIncremental (new/modified) 13
ExactOnlineREST.Incremental.PurchaseOrderLinesIncremental/$count 3
ExactOnlineREST.Incremental.TransactionLinesIncremental/$count 39
ExactOnlineREST.Sync.SyncAccounts 19
ExactOnlineREST.Sync.SyncGLAccounts 2
ExactOnlineREST.Sync.SyncGLClassifications 3
ExactOnlineREST.Sync.SyncTransactionLines 12
ExactOnlineREST.Workflow.CustomerCooperations 11

Hiervoor is het advies om de Sync*-tabellen niet te gebruiken tenzij men zelf alle logica hiervoor wil bouwen. Gebruik in plaats hiervan de *Incremental.

Zie:

Zorg er verder voor dat bij elke query de time-out ingesteld, ook bij de kleine downloads, want die kunnen achter een langzame download komen; zie ook Vermijd time-out fout bij Power BI OData download

Advies is er om rekening mee te houden dat Exact Online omgevingen van deze omvang ook zal wensen onder te brengen in het Premium-abonnement in de komende tijd voor Belgie.