Omzetting Teamleader query Data Hub naar Invantive Cloud

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:

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;