Facing latency issue with Qlik Sense + Geo analytic.
We are using Qlik Sense + Geo analytics in our application and we are facing issue of latency. Our map is taking almost 20-35 seconds to load.
How we are loading data in our app?
We have our SQL Server database on RDS Amazon Cloud (AWS) and we are loading custom map data from database through SQL query. City names are coming from our database but we are getting Country names, ISO Code and Geometry from Qlik location service as below:
SQL SELECT [Country_Name], [Country_Geometry], [CountryIso2] FROM Load(dataset='Country')
DATASOURCE Country LOCATIONSERVICE geometry='AREA', type='APCLI', country='', serviceName='default'
We have acquired our own Qlik server and we are loading maps from that server only, as shown below in image:
In area layer, as a dimension we are using 'Country_Geometry' to load all geo points initially. This Country_Geometry we are getting from location service query as shown above.
Prior to 'Country_Geometry' we were using Country_Name. So we have reached out to one of the Qlik member, and he has suggested us to remove 'Country_Geometry' instead of 'Country_Name'. But still things are not as expected.
On bubble layer we are using City name directly as shown below:
In infobubble of bubble layer we are writing some HTML to beautify our data on bubble click.
With this Qik app we are using following extensions:
-Current Selection: To represent current selection of map. Whatever selection we have made will come through this extension.
-Legend Extension: To showcase all map related legend.
We are also using mashup to beautify our maps.
Have a look of our complete map with details:
Please suggest what change we can make to improve map performance?
Actually the lag is loading time of each layer. When we load map first, QlikMap built in loader appearing for 10 seconds, then all our map pins are appearing then area layer is appearing then after 5-10 seconds area layer is coloring. So this entire process is taking almost 25-40 seconds and that is really worse.
As you have asked we are not having much data points. For country data points we are using location service, so that map will not get data points on loading, country data points will be there in Qlik internal database.
For plotting city pins on map, we do not have any location service so we are using City name directly instead of city data point.
We are not using both Latitude/Longitude and Polygon map (KML/CSV) on single map, we are only picking data through SQL query.
Please have a look at our area layer measure:
Our measure expression is not too complex.
Please let me know if you need any other inputs.
As far as my knowledge concern, Qlik Sense and Geo Analytic they both are different module but they both works together. So we have discussed with one of the Qlik team member and she has suggested Qlik Sense is taking time not geo-analytic. [I do not know how this can possible]
But I think, Qlik is not loading data from SQL database all the time, once we do reload, Qlik will store that data into its internal database (I don't what this database known as, is it QVD?). So whenever we run our map, Qlik loads data from that internal database.
To update that internal database we have scheduled task in Qlik QMC.
Yes, Qlik stores the data that's why it is In Memory tool, Data Indexing.
If you can explain what is Internal Database?
Usually most of the developers stores the tables into QVD, this is like a Zip format for Qlik. The size of the data is compressed and as it is Qlik file, it would read much faster than a XL/external DB.
Check your script in extract or transform or source app if you guys using Store command after the tables to save the table into QVD's
In QMC you can only run qvf files, not qvd.
For what I understand, you have a extract file which is extracting data from SQL and you created a task in QMC for that in QMC.
Then you storing that tables into QVD, creating a new task to load QVD's in a QVF <<< This will be a quicker load.
If you like it more quick then you can do Binary Load but that shouldn't effect your frontend.
This is just for reload time.
Your front end totally depends on how much size is the data, no of objects in app and your expressions.
Check the below link to see the load time for each object for your QVF. A wonderful app built by Rob, 'Document Analyzer'