De query is dankzij de compatibiliteit over platformen heen van Invantive SQL vrijwel 1-op-1 meteen te gebruiken op Invantive Cloud. Een paar aandachtspunten worden besproken.
Gebruik Invantive Script
Er wordt gebruik gemaakt van ${NAME}
zijnde variabelen in Invantive Script. Invantive Script is by design alleen beschikbaar op on-premises omgevingen. Deze variabelen kunnen vervangen worden door bijvoorbeeld Invantive PSQL zoals in:
declare
l_start_date datetime := to_date('20230101', 'YYYYMMDD');
l_end_date datetime := to_date('20230101', 'YYYYMMDD');
begin
create or replace table V2_Planning_2025@sqlserver
as
select A.id user
, B.*
, sysdateutc update
from teamleader.v2.users@teamleader A
join Teamleader.V2.Events(A.id)@teamleader B
where B.starts_at between to_date(${Start}, 'YYYYMMDD') and to_date(${Eind}, 'YYYYMMDD')
;
--
-- ...
-- Eventueel meer statements.
--
end;
Parameteriseerbaar
Voor het dagelijks verversen is het wenselijk om het PSQL-block voor het kopieren van Teamleader naar SQL Server in een Invantive Cloud-applicatie te zetten. Eventueel kunnen dan ook parameters doorgegeven worden via een curl
statement in de batchfile die de actie initieert.
Uitleg hierover is te vinden in:
- Excel download uit Exact Online in eigen formaat met een cloud app (applicatie maken)
- App Online module om alle Exact Online verkoopfactuurregels te downloaden (gebruik parameters)
- Invantive SQL generic PSQL packages (beschikbare packages)
- Wat is Invantive App Online?
- Massaal inlezen Excel-sheet met bestellingen als bestellingen in Exact Online (complexer voorbeeld)
- Uploaden WICS XML pick files naar Invantive App Online (automatisch initieren via
curl
) - Elementaire datareplicatie tussen Exact Online en Azure SQL Server (voorbeeld met
curl
)
Via Invantive is ondersteuning beschikbaar op consultancy-basis voor training en begeleiding hierin.
Performance
Daarnaast is het verstandig om de query te herschrijven zodat de performance beter kan worden. De where-clause staat buiten de join, waardoor die (te) laat wordt toegepast om optimalisaties zoals xxx hun werk te laten doen.
Beter is:
declare
l_start_date datetime := to_date('20230101', 'YYYYMMDD');
l_end_date datetime := to_date('20230101', 'YYYYMMDD');
begin
create or replace table V2_Planning_2025@sqlserver
as
select A.id user
, B.*
, sysdateutc update
from teamleader.v2.users@teamleader A
join Teamleader.V2.Events(A.id)@teamleader B
on B.starts_at between to_date(${Start}, 'YYYYMMDD') and to_date(${Eind}, 'YYYYMMDD')
;
--
-- ...
-- Eventueel meer statements.
--
end;