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