To Inphinity and beyond:

Waardevolle write-back extensie in Qlik Sense

Op zoek naar leuke nieuwtjes zijn we twee onderwerpen tegengekomen. Samen openen die vele nieuwe deuren voor het invoeren, bewerken en analyseren van data: de write-back extensie Inphinity Forms en de merge-functionaliteit in de nieuwe februari release van Qlik Sense. Collega Ronald van der Does gaat hier uitvoeriger in op deze release.

Inphinity in het kort

Inphinity Forms is een extensie voor Qlik Sense waar wij zeer enthousiast van worden. Het stelt de gebruiker namelijk in staat om op zeer intuïtieve wijze direct vanuit de applicatie zelf data in te voeren en te wijzigen. Er is keuze tussen een groot aantal invoermogelijkheden variërend van eenvoudige invoervelden (waar vrij getypt kan worden) tot datumkiezers, keuzemenu’s, selectievakjes, sterwaarderingen en meer. Bovendien is het volledig naar eigen wens in te richten waarbij onder andere gedacht kan worden aan simpele dingen, bijvoorbeeld de kleur en uitlijning van de tekst, maar ook aan complexere zaken zoals het voorwaardelijk tonen van invoervelden, het toevoegen van nieuwe data middels een pop-up venster of het inbouwen van controles ter validatie van de invoer. Bijkomend voordeel is dat de standaard tabel gelijk overzichtelijker wordt en er strakker uitziet.

Wat kan ik ermee?

Bij HippoLine zijn wij altijd blij met alternatieven voor de ‘gewone’ tabel, maar als lezer vraag je je nu misschien af wat de toegevoegde waarde is van Inphinity Forms naast een leuke opmaak. Menig ontwikkelaar zal het gepingpong van Excelletjes en hulptabellen over de mail echter herkennen, iets wat in de regel meestal handmatige acties vereist en vaak net even niet uitkomt. Door een write-back extensie te gebruiken, kunnen dergelijke wijzigingen rechtstreeks in de applicatie worden gedaan en worden deze automatisch verwerkt wanneer de applicatie wordt herladen. Wie nog een stapje verder wil kan de extensie gebruiken als invoersysteem voor brondata alhoewel hier de toepassingsmogelijkheden in alle eerlijkheid wel beperkt zijn vanwege de handmatige invoer.

What-if analyses

Waar ik bij stil sta is het gebruiken van deze extensie voor het uitvoeren van complexe what-if analyses. Inphinity Forms stelt je namelijk in staat om aan alle knoppen tegelijkertijd te draaien en vervolgens te bekijken wat het resultaat is. Hoewel dit tot op zekere hoogte al gedaan kan worden door het toepassen van variabelen binnen de metingen van het dashboard, moet hier tijdens de ontwikkeling van de app wel al rekening mee zijn gehouden en zijn zelfs dan de aanpassingsmogelijkheden lang niet zo uitgebreid. Met behulp van de extensie kan bijvoorbeeld de volgende vraag in een handomdraai worden getest: wat is het gevolg voor mijn winstmarge als ik vestiging A uitbreid, vestiging B renoveer, vestiging C sluit, nieuw personeel aanneem voor vestiging D en daarbij ook nog een nieuwe vestiging open?

Hoe werkt het?

Het gebruiken van Inphinity Forms is eenvoudig. Na installatie kan er via een centrale applicatie een zogeheten form worden aangemaakt die vervolgens aan een invoertabel kan worden gekoppeld. Na het toevoegen van een dimensie en een invoerveld, kan je al aan de slag. De ingevoerde data wordt namelijk opgeslagen in een automatisch gegenereerd XML-bestand welke via de gekozen dimensie gekoppeld is aan het datamodel. Op een later moment nieuwe velden toevoegen of bestaande velden aanpassen vormt geen probleem, al is er enige voorzichtigheid geboden bij het aanpassen van veldnamen of invoertypes met het oog op historische data. Let er tot slot ook op dat de invoertabel de data direct opslaat en leest uit het XML-bestand en nieuw ingevoerde data niet direct deel uitmaakt van het datamodel van de applicatie!

Gelukkig is het inladen van de bestanden ook een fluitje van een cent. Met behulp van een subroutine worden de XML’s getransformeerd in eenvoudig te gebruiken tabellen en wordt gelijk bijgehouden wat de meest recente data is en welke regels zijn verwijderd. Na de applicatie een keer herladen te hebben, is de toegevoegde of gewijzigde data beschikbaar in het datamodel en te gebruiken in de rest van de applicatie.

Een addertje onder het gras… of toch niet?

Tot dusver ben ik vrijwel uitsluitend positief geweest over Inphinity Forms, maar ook deze extensie heeft zijn achilleshiel. Eerder schreef ik al dat het noodzakelijk is om te herladen om nieuwe of gewijzigde data te kunnen gebruiken in de rest van de applicatie. In de praktijk komen wij echter geregeld applicaties tegen die dermate complex of simpelweg omvangrijk zijn dat herladen een half uur of langer duurt waarmee het doel ‘even snel een waarde wijzigen’ behoorlijk wordt ondermijnt. Om deze reden was ik dan ook zeer aangenaam verrast met de nieuwe februari release van Qlik Sense die een oplossing biedt voor dit probleem: de merge-functionaliteit. Ik wijs hier nogmaals op het blog van Ronald van der Does.

En dan Merge

Merge is een nieuwe functie van de Qlik engine die het mogelijk maakt om zeer eenvoudig een bestaande tabel in het datamodel aan te passen via een partial reload. Daarbij zijn er drie operaties mogelijk: update, insert en delete. Het gedeeltelijk kunnen herladen van een datamodel is in zichzelf niets nieuws, maar wat deze functie uniek maakt is dat het niet langer nodig is om de tabel met wijzigingen naast de oorspronkelijke tabel te leggen en linksom of rechtsom te vergelijken welke waarden nieuw zijn, welke aangepast moeten worden en welke verwijderd hoeven te worden. Niet alleen maakt dit het script een stuk overzichtelijker, maar het is in potentie ook aanzienlijk sneller. Zo kostte het aanpassen van 1 miljoen regels in een tabel van 15 miljoen regels ongeveer een halve minuut en zat ik langer te wachten tot de visualisaties waren bijgewerkt. Toegegeven, dit hangt ook sterk af van het aantal velden in de betreffende tabel, de inhoud van die velden en de hardware, maar het blijft indrukwekkend.

Met één extra invoerveld in het object waarmee het type operatie wordt vastgelegd, een simpele functie in het script en een knop in het dashboard om de applicatie gedeeltelijk te herladen, kan het lang moeten wachten op het verwerken van wijzigingen dus worden voorkomen. Dan rest echter een laatste probleem waar, voor zover bekend, helaas nog geen oplossing voor is. Een invoerobject leest momenteel altijd uit of schrijft altijd weg naar één XML. Bij gelijktijdig gebruik van de extensie door meerdere gebruikers is daarmee het risico dat de een de wijzigingen van de ander direct overschrijft.

Eindoordeel

Kort samengevat is Inphinity Forms een waardevolle write-back extensie die een geheel nieuwe laag functionaliteiten toevoegt aan een dashboard, zeker nu de merge-functionaliteit is toegevoegd met de nieuwste release van Qlik Sense. Het kan vooral goed gebruikt worden voor het inladen of wijzigen van hulptabellen, het verrijken van een bestaand datamodel of het uitvoeren van complexe what-if analyses. Het moet echter (nog) niet gezien worden als een volwaardig alternatief voor bestaande bronsystemen vanwege het feit dat alle data handmatig ingevoerd moet worden. Er wordt echter nog volop doorontwikkeld, dus wie weet wat de toekomst brengt.