Omzetting Teamleader query Data Hub naar Invantive Cloud

In de Query tool en Data Hub gebruik ik queries zoals bijvoorbeeld:

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')

Hoe maak ik deze queries in de Invantive Cloud om deze data ook in mijn PowerBI data/rapporten te gebruiken, inclusief dagelijks updaten van data?

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;

Deze vraag is automatisch gesloten na 2 weken inactiviteit. Het laatste gegeven antwoord is gemarkeerd als oplossing.

Gelieve een nieuwe vraag te stellen via een apart topic als het probleem opnieuw optreedt. Gelieve in de nieuwe vraag een link naar dit topic op te nemen door de URL er van in de tekst te plakken.

Dit topic is 7 dagen na het laatste antwoord automatisch gesloten. Nieuwe antwoorden zijn niet meer toegestaan.