Binnen Invantive hebben we één database waarbij we de volgende opties hebben aangekruist:
In Azure Data Factory is het (voor zover ik weet) niet mogelijk om extra Headers mee te geven bij de OData connector. Om dit te omzeilen heb ik geprobeerd de REST connector te gebruiken. Deze REST connector geeft de data terug in één ‘single line’.
Is het mogelijk om de data via REST op meerdere lines te krijgen in een .json output?
OK. OData is inderdaad een speciale vorm van REST / JSON.
Het OData4-formaat kan vaak via een REST-driver verwerkt worden. Het is momenteel 1 lange regel (en zelfs een “stream” waarbij resultaten al teruggegeven worden voordat inlezen klaar is).
Wat maakt dat het nodig is om de REST op meerdere regels verspreid te krijgen?
Is dat een eis vanuit de ADF REST driver? Zo ja, is daar ergens documentatie (URL) van te vinden?
Goede vraag! Omdat we de rest van onze .json files data wel verspreid hebben over verschillende regels (dus de data die wel via de OData connector wordt opgehaald).
Het is geen eis vanuit de ADF REST Driver, eerder gewoon een consistency in het opslaan van de data. Ik heb hier dus (helaas) geen URL van .
Is het ook een optie om de opties uit te vinken? Zo ja, wat kan dit als gevolg hebben voor de datastroom van die Database?
Standaard is het formaat altijd een lange stroom aan data. Er zijn momenteel geen plannen om de JSON op te maken, mede vanwege performanceredenen.
De opties kunnen uitgevinkt worden. Echter, de eerste optie “Omit-Null” values zal het datavolume fors laten stijgen. Dit wordt afgeraden, mede in relatie tot het Fair Use-beleid, maar om dit te activeren moet sowieso de OData v4-header, evenals het verzoek tot weglaten van null-values meegestuurd worden in de HTTP-headers van het verzoek:
OData-MaxVersion: 4.0
Prefer: omit-values=nulls.
Meer informatie hierover is te vinden in de OData-specificaties:
Na het uitvinken van de optie wordt de data goed opgehaald. Het is een groot bestand, maar we gaan deze tabel (Incremental.TransactionLinesIncremental) incrementeel inladen. De hoeveelheid data die we hierbij dagelijks inladen zal veel minder zijn. In dit geval kan de omit-null values optie worden uitgezet.