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.
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.