Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi,
Can any one help me with different ways of optimising Qlik Application by which i can reduce time of execution.
Below given few ways which I know..
i) Use of inline above qvd load so it will load only desired data.
ii) Where ever possible load table only once and then use Resident of that table.
iii) load table as is and date formatting or any where condition put in Resident.
Thanks in advance.
There is a good answer here *** 6 Weeks in to QV Development, 30 Million Records QV Document and Help Needed!!! ****
Regarding qvd vs resident load, this is a small test I did now with a 65 million record qvd
T1 << T1 (qvd optimized) 63.510.000 lines fetched
QVD read 00:00:13
T2 << T1 63.510.000 lines fetched
RESIDENT read 00:00:36
you can try yourself, just make a qvd to read and try this code
let ts = now(1);
T1: load * from T1.qvd (qvd);
let delta = interval(now(1) - '$(ts)');
trace QVD read $(delta);
let ts = now(1);
T2: NoConcatenate load * Resident T1;
let delta = interval(now(1) - '$(ts)');
trace RESIDENT read $(delta);
DROP Table T1;
It is better to check execution times for your script for load from QVD to load from Resident. Resident load always do not make it best.
I wouldn't call your examples load-optimizations. More effective will be to use an incremental load-approach with optimized qvd-loadings and in a modular data-architecture (quite common is a 3-tier architecture with generators --> datamodels --> reports).
More to them and some other useful topics could you find here:
Advanced topics for creating a qlik datamodel
More advanced topics of qlik datamodels
- Marcus
There is a good answer here *** 6 Weeks in to QV Development, 30 Million Records QV Document and Help Needed!!! ****
Regarding qvd vs resident load, this is a small test I did now with a 65 million record qvd
T1 << T1 (qvd optimized) 63.510.000 lines fetched
QVD read 00:00:13
T2 << T1 63.510.000 lines fetched
RESIDENT read 00:00:36
you can try yourself, just make a qvd to read and try this code
let ts = now(1);
T1: load * from T1.qvd (qvd);
let delta = interval(now(1) - '$(ts)');
trace QVD read $(delta);
let ts = now(1);
T2: NoConcatenate load * Resident T1;
let delta = interval(now(1) - '$(ts)');
trace RESIDENT read $(delta);
DROP Table T1;
Thanks All for your Help...
Maxgro the link which you have shared is very very useful..
on that discussion, i have one question on point no.9 , off course only because i am not that much expert and just want to understand in depth.
9.- Avoid RESIDENT loads. If needed, load twice from a QVD.
But, so far my understanding is once you load the data into qlik from QVD data get's stored into Qlik memory, which is a feature of Qlik, so use resident load if you required same data again and do not load same QVD again...
Thanks in advance.
Yes you'right:
load from resident is a load from memory
and load from a qvd is a load from disk
Everyone can think that reading from memory is faster.
My experience is a qvd optimized load is usually faster than a resident load (maybe because data in a QVD file is structured so that QlikView can load the content directly into memory); if you have some millions of records it doesn't matter, if you have some tens of millions or more of records I suggest to check the 2 loads.
Also pay attention to optimized and non optimized qvd load
https://www.quickintelligence.co.uk/qlikview-optimised-qvd-loads/
Thanks Massimo Grossi for your Help !!