Data sneller laden, hoe dan?
5 slimme aanpassingen in Qlik
Met vijf slimme, kleine aanpassingen kun je voorkomen dat je data-proces onnodig vertraagd wordt. In dit blog somt dataspecialist Marco Lips de valkuilen op die bijvoorbeeld je Qlik-laadtijden kunnen maken en breken.
Marco beschrijft uitvoerig 5 efficiënte trucks. Lees ze en je kunt vandaag wél op tijd naar huis.
Optimalisatie zit in een klein hoekje
In Qlik wordt vaak gewerkt met grote hoeveelheden data en dat brengt ook de nodige laadtijden met zich mee die uit de hand kunnen lopen door kleine foutjes. Wat kun je doen?
1 – Left join + Where exist
Eén van de meest voorkomende valkuilen van beginners is het combineren van een left join met een where exist op het sleutelveld waarop gejoined wordt. De inefficiëntie zit hem hier in het feit dat een left join al enkel een join uitvoert op de aanwezige sleutelvelden. Dit zorgt ervoor dat eerst een where exists uitvoeren op het sleutelveld overbodig is en dus onnodig tijd kost. Als deze combinatie vaak gebruikt wordt in een load script kan dit tot tientallen minuten extra tijd opleveren afhankelijk van de grootte van de data.
2 – Concatenate optimized load
https://www.bitmetric.nl/blog-nl/qlik-concatenate-optimized-load/?lang=nl
Een onverwachte inefficiëntie vindt plaats als een QVD optimized load onder een andere tabel geconcatenate wordt. Zo zijn er twee situaties:
Beide situaties (A en B) gaan over dezelfde data en beide situaties leveren dezelfde tabel op alleen in situatie A wordt de tweede QVD niet optimized ingeladen. De meesten die ervaring hebben met Qlik weten hoe belangrijk het is om data QVD optimized in te laden.
Over de werking van dit fenomeen is nog niet veel bekend alleen blijkt een regel te zijn dat alle tabellen die onder een tabel geconcatenate worden tenminste de velden van de voorgaande tabel moeten bevatten, en/of extra velden. Bij een concatenate van een QVD kun je dus het beste eerste de QVD inladen met het minste aantal kolommen en dan QVD’s met steeds meer kolommen eronder concatenaten.
3 – Touchless formatting
Bij het inladen van een QVD wil je de data graag zo min mogelijk op record niveau aanpassen aangezien dit over het algemeen veel tijd kost. Kleine aanpassingen aan de data zoals een veld een ander format geven (denk aan datum velden inladen als een datum in plaats van een string of timestamp) kunnen dan pijnlijk grote impact hebben. Een truc om deze kleine aanpassingen niet op record niveau te hoeven toepassen is wat wordt genoemd als touchless formatting. Hierbij genereer je eerst een tabel met één regel met precies dezelfde velden als je wilt inladen, in het format waarin je de data wilt krijgen. Qlik onthoudt dat deze veldnamen dit format hebben en wanneer vervolgens een QVD met deze veldnamen wordt ingeladen, krijgen deze automatisch het format dat al bekend is bij Qlik. De tabel met één regel is hierna niet meer nodig en kan verwijderd worden.
4 – Preceding vs resident + Preceding load op QVD optimized load
Een preceding load kan vaak hetzelfde behalen als een of meerdere resident loads maar het kan ook zijn keerzijde hebben. Bij het inladen van een QVD klinkt het logisch om eerst de QVD optimized in te laden en vervolgens doormiddel van een preceding load de data te transformeren op record niveau. Echter zorgt de preceding load in dit geval dat de QVD niet meer optimized ingeladen wordt omdat de data op record niveau getransformeerd wordt. Wil je een QVD inladen en op record niveau transformaties toepassen, dan kun je dus beter de QVD eerst optimized inladen en vervolgens met een resident load de transformatie toepassen.
5 – Opbreken van samengevoegde velden
In data komen vaak velden voor die opgebroken kunnen worden in meerdere velden. Denk bijvoorbeeld aan een timestamp veld dat opgebroken kan worden in een datum veld en een tijd veld. Het wordt aangeraden om deze velden zoveel als mogelijk op te breken aangezien dit voor minder unieke waarden zorgt dan in een timestamp veld. Hoe meer unieke waarden, hoe groter en trager je datamodel kan functioneren.
Mocht je meer willen weten over optimalisatie van het script, het datamodel en de voorkant van apps, kijk dan eens naar deze algemene tips voor efficiëntie in Qlik:
Marco Lips, dataspecialist en BI-consultant