Dynamische filteren op datum in Startup SQL

Filter

Invantive SQL gebruikt server-side filtering en kan daardoor - waar technisch mogelijk - filters over de gehele verwerkingsketen meenemen (meer uitleg over server-side filtering staat bijvoorbeeld bij How to filter data from OData query on Azure Data Factory? - 3 van forums).

Specifiek voor Exact Online is het - afhankelijk van de toepassing - mogelijk om de genoemde tabel te gebruiken of de incrementele varianten (zie Snel en met minder API-calls Exact Online uitlezen met de incrementele "sync API"-tabellen).

De getoonde query zal zelden tot nooit resultaten opleveren. De evaluatie van dateadd('day', 2, getdate()) levert meestal een tijdstip op gedurende de dag dat niet kan voorkomen.

Een betere benadering is bijvoorbeeld:

select *
from   ExactOnlineREST.SalesOrder.SalesOrders
where  DeliveryDate = trunc(sysdate) + 2

of in het kader van defensief programmeren nog beter:

select *
from   ExactOnlineREST.SalesOrder.SalesOrders
where  DeliveryDate >= trunc(sysdate) + 2
and    DeliveryDate <  trunc(sysdate) + 3

Dit kan met een where-clause, een filter via OData, een custom view en waarschijnlijk nog op andere manieren doorgegeven worden.

Merk op dat sysdate de lokale tijd weergeeft van het apparaat waar Invantive SQL draait. Dit kan een andere tijdzone of zomertijd zijn. sysdateutc geeft altijd de UTC-tijd weer. Het veld ServerUtcOffset in de tabel me geeft de UTC-offset aan van Exact Online.

Uitgevoerde API-calls

Het aantal uitgevoerde API-calls is te vinden: