There are two types of data reduction methods normally used in QlikView.
Section Access — used for dynamic data reduction
Loop and Reduce — used for static data reduction
Both methods work well based on your goal for the data reduction. However, recently, I was asked if there is a way to hide a table from a group of users vs another group of users who need to see that table with sensitive data.
There are always many ways to skin a cat when it comes to possible solutions in QlikView so I devised one that may interest you. And, I would love to know if you can think of a better approach for this specific requirement.
Assume that products table has sensitive data and you want to hide it from users so you have two AD groups — one that can see all tables including products table and another that can see all tables but products table.
This command executes only Load and Select statements preceded by a Replace or Add prefix. Other data tables remain unaffected by the command.
Now the trick is to add only argument to the replace prefix since only is an optional qualifier denoting that the statement should be disregarded during normal (non-partial) reloads.
Add an island inline table just to perform loop and reduce using same source document.
It can be something like this:
Next, create two tasks in QMC:
A partial reload task along with loop and reduce using the field Loop so that same source document can be used to create a user document with products table(sensitive data).
Another task for the normal load so that the load will ignore products table due to only argument along with replace prefix.
Partial reload is normally a handy feature while you develop an application since it will allow you to reload changes to smaller tables without reloading a large fact table but I found this trick useful to hide table with sensitive data.
I am ceaselessly amazed at many ways to skin a cat when it comes to finding creative solutions in QlikView and Qlik Sense!
Karl 11:44 pm on June 20, 2018 Permalink
Hi Shilpan,
There are plenty of ways to skin a cat. I would probably do one of two things. I would assign a value to a variable through a publisher task and use an if statement that loaded products depending on the value of that variable. It achieves the same but might be easier to understand for the next person. You could also use the omit column in section access to remove several fields although I assume you can’t omit a key field. However the key field should be abitrary numbers that aren’t by themselves sensitive.
Best, Karl
Shilpan 11:03 pm on June 21, 2018 Permalink
Thanks Karl! I will definitely try variable. This document doesn’t have Section Access but I agree that is another option.
Karl 1:22 pm on June 22, 2018 Permalink
An interesting question is whether you would ever use Section Access to only omit columns. I’ve never faced that situation, but I agree with you that it’s an added level of complexity that one should avoid if possible.