Set Analysis; Good For You, Bad For Your RAM
To show that this blog isn’t entirely design focused this is a post about RAM usage; specifically how in some cases using Set Analysis in a dashboard can cause the ‘10% rule’ (Each new user using a Qlikview Server adds 10% of the .qvw size into RAM) to be far exceeded potentially blowing your RAM sizing out of the water.
Everyone loves Set Analysis – mind bending syntax aside; it allows expressions, charts, functionality and performance that otherwise simply wouldn’t be possible; I’ve see charts that took 5mins+ to render using if()’s but with Set Analysis are returned in under a second, so let’s be clear this isn’t a ‘Don’t use Set Analysis’ post.
Firstly I’ll try and cover the basic principal of how Set Analysis works in the background as relayed to me by a senior Qliktech System Architect – it’s not that complex; basically the ‘Set’ is an alternate selection generated by the syntax that can act independently of the users selections through the UI – and here’s the crux of the issue; the ‘Set’ adds selections over above the 10% or so made by the user and so adds RAM usage.
Now; just one Set Analysis expression in a dashboard isn’t going to cause too much trouble; although it will add to the RAM footprint, the real problems come when a dashboard is created that uses multiple Set Analysis expressions and especially if those ‘Sets’ contain a large portion of the data as each ‘Set’ is pushed into RAM. When you then factor in that in many large deployments you have potentially hundreds of users hitting the dashboard this all builds up and can cause a lot of head scratching as to why so much more RAM is being used than predicted.
I’ve seen this problem push the ‘10% Rule’ to something more akin to an ‘80% Rule’; but this was a .qvw that used an inordinate amount of both passive and reactive (ie; linked to variables) Set Analysis expressions. As I stated at the top of this post; I’m not advocating not using Set Analysis, just that this is something to be mindful of both when designing dashboards and speccing that monster of a production server…as ever with Qlikview: RAM matters.