Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
mgomezlor
Contributor III
Contributor III

Masking Private Data

Good morning, I have the following question, I need some fields to be masked according to the user that is logged. In case that user does not have permission to see that program he should see the fields that are not public 'Private'. The records should not be filtered because may have fields that are public and even if they can not see that program, they could see those public fields. For example the total amount of all programs.

To evaluate if a program is public or private for the user that is logging in, you must have the same department and geography as the owner of each program. For example if the user that is logging in is from Spain and Dept1 and having a list of programs like this:

Program     Owner     Geo_Owner     Dept_Owner     Amount

Program1     Jose          Spain               Dept1               200

Program2     Manuel      Spain               Dept2               300

Program2     María         UK                   Dept1               400


The user should see a table like this:

Program     Owner     Geo_Owner     Dept_Owner     Amount

Program1     Jose          Spain               Dept1               200

Privado        Privado      Privado           Privado             300

Privado        Privado      Privado           Privado             400


I attach a qvf with 4 tables Programs, Assets, Pipeline and Users and an Excel with the table that must be output for the userA. The fields Program, AssetID and PipelineID must be evaluated to see if the data should be viewed or show 'Private', the other fields are public and should always be displayed. The owner's data is at the program level.


Thank you very much in advance.

7 Replies
devarasu07
Master II
Master II

Hi,

have u tried like this?

Scrambling Data

mgomezlor
Contributor III
Contributor III
Author

Yes, but i's not working for that issue because each user can see differents programs depending on his geography and department  and the geography and department of the program owner and I couldn't put this condition in the script.

ogster1974
Partner - Master II
Partner - Master II

Why don't you create a user program mapping table and then use applymap() and section access to mask the fields you have an issue with.

marcus_sommer

mgomezlor
Contributor III
Contributor III
Author

I tried that and It's not working for me. Also I need other table because one user could be permanent insider in geographies different from his own I need to evaluate those geographies with the owner geography.


I attached my qvf with the section access commented so I you could have a look and help me I will appreciate so much.

marcus_sommer

It's certainly not an easy thing to implement a masking/de-identify logic maybe you tried it in a reverse way - by starting with the example from the link and if it worked you replaced it step by step with your own data.

I don't have Sense available but I think others could take a look on it.

- Marcus

hoangvvo
Partner - Contributor III
Partner - Contributor III

Older top I stumble upon but its possible if you separate your data into different table.

User the functions combiantion of IF, ISNULL, Aggr, and ONLY and the OSUser() function to get the current UserName

if(    isnull(    Aggr( ONLY({$<Dept=p({$<UserName={'$(=OSUser()'}>}Dept), Geo=p({$<UserName={'$(=OSUser())'}>}Geo)>}UserName),UserName)),'Private',

  Aggr( ONLY({$<Dept=p({$<UserName={'$(=OSUser()'}>}Dept), Geo=p({$<UserName={'$(=OSUser())'}>}Geo)>}UserName),UserName)

)

see the attached qvf file, whether if it works with what you need.. i am not sure since only returns null if there's more than 1 record. so long as your USERNAME is unique, then it should return only 1 record, it also return null if the set analysis finds no record of it . Your aggregation has to be UserName as it should be unique