Ophalen TeamLeader V1 Subscription_items met OData v4

Ik probeer de tabel subscription_items uit TeamLeader te halen.

Ik zie deze tabel echter niet in de lijst van tabellen voor PowerBI terugkomen.

Wel kan ik deze benaderen in de SQL editor:

Je zult dus een subscription parameter mee moeten geven om dit op te gaan halen.

Hoe moet ik dat doen via OData? Kan ik daar uberhaupt bijkomen?

Veel verbonden platforms zijn rijk aan “tabelfuncties”. Dat zijn tabellen die geparameteriseerd zijn. In een echte tabelgeorienteerde aanpak zouden dat $filter (OData) of where-clause (SQL) zijn, maar de ontwerper had er voor gekozen om specifiek bepaalde parameters te eisen.

Op zich ondersteunt de OData4 standaard wel dergelijke entiteiten, maar Power BI biedt hiervoor momenteel geen ondersteuning.

In Invantive SQL zitten daarom veel “views” die voor zover mogelijk de noodzakelijke relaties leggen om te komen tot een tabel zonder parameters. In de Teamleader V1 API zijn voorbeelden hiervan:

  • ContactsAll
  • SubscriptionsAll

De onderliggende Invantive SQL query is dan bijvoorbeeld voor ContactsAll:

select p.*
from   Teamleader.V1.Contacts l
join   Teamleader.V1.Contact(l.id) p

De prestaties van deze Teamleader V1 views zijn slecht als het gaat om grote aantallen rijen. Vaak komen er maar 100 rijen per minuut terug, terwijl andere platformen soms duizenden rijen per seconde teruggeven. Toch werkt het vaak acceptabel. Advies is om wel eerst te kijken of er een V2 variant is die ook de gewenste gegevens bevat; die zijn vaak net wat beter ontworpen zoals bijvoorbeeld TimeTracking die vele malen sneller is dan zijn V1 voorloper.

Zou jij kunnen kijken of deze query in de Invantive Cloud SQL editor voor jou een werkbaar resultaat oplevert:

select p.*
from   Teamleader.V1.Subscriptions l
join   Teamleader.V1.Subscription_Items(l.id) p

Zo ja, dan zullen we deze in een volgende versie verwerken.

Dank voor je snelle antwoord.

Ik heb die query zojuist gedraaid en toen kreeg ik inderdaad een error. Hij is tergend langzaam…

Toen deze gedraaid:

select p.*
from   Teamleader.V1.Subscriptions l
join   Teamleader.V1.Subscription_Items(l.id) p
limit 100

Die kwam er wel direct uit. En ja dat is inderdaad de informatie die ik nodig heb.

Graag zou ik wel deze data op de een of andere manier er uit kunnen vissen.

Is dit goed te doen voor jullie en wat houdt ‘in een volgende versie’ concreet voor mij in?

Je kunt via een on-startup trigger een in-memory tabel of view toevoegen, maar dat is best complex.

Als alternatief hebben we daarom aan de standaard Teamleader driver een view toegevoegd SubscriptionItemsAll. Die komt met volgende BETA mee en zal ook uitgerold worden naar Invantive Cloud.

BETA klinkt spannend, maar valt op ons platform wel mee. Op Invantive Cloud draait altijd de laatste versie, er lopen duizenden testcases doorheen en daar draaien we ook intern alle coreprocessen op. Invantive Cloud zal trouwens in de loop van dit jaar van BETA afgaan; het zal dan allemaal wat trager worden qua tijd tussen ontwikkeling en release, maar gezien de aantallen gebruikers voegt het al genoeg waarde toe aan de samenleving.

Advies is om 1 a 2 weken te wachten en dan te kijken in Power BI of SubscriptionItemsAll er tussen staat. Qua performance is er weinig aan te doen; je kunt hoogstens handmatig zodra je de datahoeveelheden en statistieken in beeld hebt verfijningen in gaan aanbrengen. Maar optimalisatie vind ik meestal vers 2: eerst kloppende cijfers.

Ha Guido,

1 a 2 weken is geen enkel probleem. Was elke IT leveranciers maar zo snel :slight_smile:

Wachten we even af. Graag zou ik wel een update ontvangen (hier?) als de beta live is, dan kan ik het checken.

En ja eens, ik zal async de data eruit trekken dus niet zo’n probleem qua performance.

Dank!

Dank je! De updates kun je terugvinden op Twitter onder https://twitter.com/Invantive of als subscriber op https://status.invantive.com/.

De nieuwe versie staat live.

Wow guido dat is snell!

We gaan ernaar kijken :slight_smile: