Limieten Dataverlading in Azure Data Factory

Ik haal voor een klant meerdere tabellen op uit Exact Online, maar ik loop tegen de ingestelde limieten aan, specifiek de dagelijkse limiet van 50 GB dataverkeer. Ik wil graag achterhalen welke tabellen of kolommen zoveel data genereren dat ik deze limiet bereik.

Een voorbeeld: in de tabel ExactOnlineREST.CRM.Accounts zit een kolom Logo, waarschijnlijk een encoded afbeelding. Nadat ik deze kolom had uitgesloten, kon ik mijn dataverwerking weer hervatten. Inmiddels loop ik echter opnieuw tegen dezelfde limiet aan, vermoedelijk door andere zware tabellen of kolommen.

Hoe kan ik monitoren of analyseren welke tabellen/kolommen verantwoordelijk zijn voor het hoge dataverbruik? Zijn er tools, logging-mogelijkheden of best practices om dit inzichtelijk te maken?

Deze tabellen haal ik momenteel op:

  • ExactOnlineREST.System.SystemDivisions@eol
  • ExactOnlineREST.CRM.Accounts@eol
  • ExactOnlineREST.Budget.Budgets@eol
  • ExactOnlineREST.Budget.BudgetScenarios@eol
  • ExactOnlineREST.Cashflow.Payments@eol
  • ExactOnlineREST.Cashflow.ReceivablesBulk@eol
  • ExactOnlineREST.Financial.GLAccounts@eol
  • ExactOnlineREST.Financial.Journals@eol
  • ExactOnlineREST.FinancialTransaction.TransactionLinesBulk@eol
  • ExactOnlineREST.Inventory.BatchNumbers@eol
  • ExactOnlineREST.Logistics.Items@eol
  • ExactOnlineREST.Financial.FinancialPeriods@eol
  • ExactOnlineREST.Inventory.AssemblyOrders@eol
  • ExactOnlineREST.Inventory.Warehouses@eol
  • ExactOnlineREST.Purchase.PurchaseInvoiceLines@eol
  • ExactOnlineREST.PurchaseOrder.PurchaseOrderLines@eol
  • ExactOnlineREST.SalesInvoice.SalesInvoiceLines@eol
  • ExactOnlineREST.SalesOrder.SalesOrderLines@eol

Ik verwacht eigenlijk niet dat deze tabellen samen in de buurt van 50 GB zouden moeten komen.

Heeft iemand tips hoe ik dit beter kan onderzoeken of monitoren?

50 GB verbruik qua netwerkverkeer is extreem veel, zeker als het niet gaat om honderden omgevingen. Een aantal adviezen zijn:

Analyse

Het is niet bekend welke monitoring tools Azure Data Factory zelf biedt voor een netwerkverkeeranalyse. Daarom wordt hier enkel beschreven vanuit Invantive Cloud. De meestgebruikte opties zijn:

Monitoring

Veel details zijn beschikbaar vanaf bijvoorbeeld de Cloud-pagina “Tijdslijn”. Zie ook:

Sessie I/O’s

Het scherm Sessie I/O’s toont ook het netwerkverkeer van Invantive Cloud naar Azure Data Factory, naast de individuele API-calls.

Merk op dat enkel de I/O’s sinds 0:00 UTC huidige dag beschikbaar zijn.

SQL-queries

De verwerking van een query kan gedetailleerd bekeken worden via queries op de datadictionary. Zie:

Veel Voorkomende Optimalisaties

Compressie

Bij gebruik van OData is advies om data gecomprimeerd uit te wisselen. Geef aan via de reguliere HTTP-header dat de data gecomprimeerd verstuurd kan worden. Zie:

Dit scheelt normaliter grofweg een factor 10.

Horizontaal Filteren

In het algemeen is het advies om velden met grote inhoud weg te laten zoals bij relaties en artikelen:

  • ExactOnlineREST.CRM.Accounts@eol
  • ExactOnlineREST.Logistics.Items@eol

Specifiek op Twinfield is het ook aan te raden om null-waardes over te slaan, zie ook:

Verticaal Filteren

In het algemeen is advies om filters toe te passen indien u van mening bent dat Items gebruikt moet worden in plaats van ItemsIncremental of ItemsBulk.

Merk op dat UniversalSQL “server-side filtering” kent. Zie bijvoorbeeld:

Op de *Bulk-tabellen kan ook gefilterd worden, maar iets beperkter effectief dan op de niet-bulk. Op de *Incremental-tabellen zal een filter enkel binnen UniversalSQL toegepast worden. De engine verwerkt alle rijen in de tabel. Zie ook:

Van de volgende tabellen kunt u de keuze tussen varianten en juiste filters overwegen:

  • ExactOnlineREST.CRM.Accounts@eol
  • ExactOnlineREST.Logistics.Items@eol
  • ExactOnlineREST.Financial.GLAccounts@eol
  • ExactOnlineREST.FinancialTransaction.TransactionLinesBulk@eol
  • ExactOnlineREST.Inventory.BatchNumbers@eol
  • ExactOnlineREST.Inventory.AssemblyOrders@eol
  • ExactOnlineREST.Purchase.PurchaseInvoiceLines@eol
  • ExactOnlineREST.PurchaseOrder.PurchaseOrderLines@eol
  • ExactOnlineREST.SalesInvoice.SalesInvoiceLines@eol
  • ExactOnlineREST.SalesOrder.SalesOrderLines@eol

Meer optimalisaties zijn te vinden vanaf bijvoorbeeld: