Lange Laadtijden DealPhaseHistories Tabel

Voor het verwerken van Deal Fases uit Teamleader in Power BI heb ik de volgende tabel nodig: Teamleader.V2Flat.DealPhaseHistories. Echter, het inladen van deze tabel in Power BI neemt op dit moment veel tijd in beslag vanwege het hoge aantal rijen. In eerste instantie dacht ik hier omheen te werken door de tabel 's nachts via Power BI service in te laden, echter zit hier een Timeout op van 2 uur, welke altijd wordt overschreden.

Is het mogelijk om, bijvoorbeeld door middel van een aparte database met een lange cache, de lange laadtijden te omzeilen? En zo ja, hoe is dit het beste in te richten. Het liefst werk ik vanuit Power BI service met automatische vernieuwing, echter is het ook mogelijk om vanuit de Desktop versie iedere ochtend handmatig een pull in aan te zetten.

De tabel DealPhaseHistories is een zogenaamde driver-specifieke view.

Deze view haalt alle Deals op en vraagt aan de Teamleader API vervolgens voor elke individuele deal de historie op. Helaas kent de Teamleader API een ongelukkige combinatie van veel punt-queries en lage snelheidslimieten. Zie voor meer achtergrond het artikel “Wat zijn tabelfuncties en tabelfunctieparameters?”.

De duur van het real-time ophalen van 1.000 deals en hun historie is circa 1.000 seconden.

Optie 1: langere time-out en dagelijks vooraf inladen via Power BI service

Als het aantal deals acceptabel is, dan kan gebruik gemaakt worden van het dagelijks automatisch vernieuwen met Power BI Service. Per uur kunnen circa 3.600 API-calls gemaakt worden.

De time-out van 2 uur zal daarvoor blijkbaar opgehoogd moeten worden tot bijvoorbeeld de maximale zes uur zoals beschreven in Vermijd time-out fout bij Power BI OData download.

Optie 2:

Daarnaast is het mogelijk om de historie van oude deals veel minder frequent op te halen, waardoor de duur daalt tot het aantal deals waarvan de historie nodig is. De eerste keer zal het nog steeds lang duren, maar daarna is het eenvoudiger.

Dit kan op verschillende manieren, maar een van de manieren zonder aparte database is het gebruik van een eigen view die alleen de historie van de nieuwe deals bevat, zoals:

create or replace view RecentDealHistories
as
select phe.Name
       deal_phase_name
       label '{res:itgen_teamleader_deal_phase_name}'
,      p.*
from   Teamleader.V2.Deals l
join   Teamleader.V2.DealPhaseHistoryByDealId(l.id) p
join   Teamleader.V2.DealPhases phe
on     phe.id = p.phase_id
where  l.id > 1234567 /* Of ander criterium zoals datum. */

Verwerk deze view in de Startup SQL zoals beschreven in Views gebruiken om centraal te filteren voor Teamleader en Power BI.

Deze vraag is automatisch gesloten na tenminste 2 weken inactiviteit nadat een mogelijk passend antwoord is gegeven. 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.