Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
paul_scotchford
Specialist
Specialist

Multi-Tenancy in QlikSense

Hi Mike

I'm probably not using best practice connecting from this post, just wondering how or if

anyone has implemented Multi Tenancy in QlikSense ?

By this I mean data from many external companies loading data to our Data Warehouse (Multi Tenanted)

and then that data is loaded to QlikSense model that is within a pre-developed app that any of these

companies can access (extranet) but of course only see their data for their visualisations.

Is this best achieved via Section Access in QlikSense ? Any whitepapers out there ?

Thanks in advance

Regards

Paul

14 Replies
Michael_Tarallo
Employee
Employee

Hi Paul, no worries  - I will branch this conversation for more members to see as well as ping a few of my colleagues to see if they can assist.

Regards,

Mike Tarallo

Qlik

Regards,
Mike Tarallo
Qlik
paul_scotchford
Specialist
Specialist
Author

Thanks Mike, very much appreciated.

Regards

Paul

Michael_Tarallo
Employee
Employee

Hi Paul,

There are a few ways to go about this. Section Access is used to control column and row level security based on the data loaded into the app. So it would seem that all tenant_id's and associated data would needed to be loaded into the app, and then section access would control what is visible by the tenant. One would think you would need to LOAD ALL the data into the app and then carve it up, and that may not be efficient. Having tenant specific apps may be better, or creating tenant specific data stores (.qvd files - in-memory representation of the Qlik associative data model on disk) to quickly load those apps might also be an option. By nature - I am not a Qlik consultant, so this conversation may be best handled by one of my colleagues - Jeff / John - ( jog / jpe )  any thoughts on this or on how to best get Paul this information?

Please mark the appropriate replies as CORRECT / HELPFUL so our team and other members know that your question(s) has been answered to your satisfaction.

Regards,

Mike Tarallo

Qlik

Regards,
Mike Tarallo
Qlik
paul_scotchford
Specialist
Specialist
Author

Hi Mike,

Thanks for the info, tenanted apps sounds better from a speed of load etc. standpoint ; as loading all data

for many clients could get problematical with performance and I would envisage a convoluted section access

file too.

It will be interesting to hear any ideas from your colleagues, I will be onsite with the client next week so will

have more insight into the requirements.

Kind Regards

Paul

Michael_Tarallo
Employee
Employee

No problem - I also extended my reach into the organization to include more sets of eyes on this.

Have a great weekend.

Mike

Regards,
Mike Tarallo
Qlik
paul_scotchford
Specialist
Specialist
Author

Great thanks and you too.

Paul

ogster1974
Partner - Master II
Partner - Master II

Hi Mike

I've have a similar challenge with our requirements and have implemented both your suggested approaches.  Is there a plan to introduce document chaining into Sense?  So we can have high level consolidated dashboard with links through to more detailed dashboards.

Regards

Andy

Not applicable

Hi Paul,

Like multi-tenancy, the response to this question has many layers and many different strategies one can employ in an implementation.

Let's start with the method you mentioned first:

Load all data into an app and use Section Access to manage access to the correct rows and columns.

Yes, you can load all of the data from your data warehouse into a Qlik application and then use Section Access to manage row level reduction when different tenants enter to see only the data they are supposed to.  The upside is this method is relatively straightforward to implement.  The downside is that when a user enters the app, their session RAM footprint remains representative of the entire dataset, and the reduction takes place after the user session is created.  Consequently, more RAM is utilized per session on data the user will never see because Section Access reduces it.  I am not a proponent of this method in multi-tenant deployments.

Create a template of the application.  For each tenant, host a copy of the application with their specific data.  Use Section Access to control data access at the user level if required.

This is the method I used when I worked for an OEM partner with QlikView.  The concept is similar with Qlik Sense, and greater automation opportunities exist with Qlik Sense because of the Qlik Sense Repository Service API (QRS).  In this approach, for each tenant you duplicate the app, create a stream for the app applying security rules to allow only the specific tenant entry to their stream.  This capability can be accomplished with ONE security rule assigned to evaluate a user attribute representing the tenantID.  In addition, create a task for reload and any other subsequent tenant/app specific requirements.

As for the data model, using variables it's possible to control where data is loaded from and what tenant data is loaded into the application.

From a deployment and performance perspective, I prefer this method because it segregates tenant data at the application level, therefore, the overall RAM footprint for each app is less and subsequent user session RAM footprint is smaller because users have a representation of the dataset for their tenant.

There are most certainly more ways to approach this topic, however, what you want to consider is balancing what the user gets relative to what the user needs against what/how you want to build the infrastructure to support it.

I hope this is helpful.

Please mark the appropriate replies as CORRECT / HELPFUL so our team and other members know that your question(s) has been answered to your satisfaction.


Cheers,


Jeff G

Not applicable

Andy, I recently uploaded to Branch a very simple extension visualization that provides a list of apps you can open from within another application.

It's on my radar to buttonify it and allow someone to specify the app and potentially pass selections (a bit above my currently curve, but I'll keep climbing).  Here is the link again if you want to check it out.

http://branch.qlik.com/projects/showthread.php?588-appOpenDropdown