Qlik Community

App Development

Discussion board where members can learn more about Qlik Sense App Development and Usage.

Now Live: Qlik Sense SaaS Simplified Authoring – Analytics Creation for Everyone: READ DETAILS
Showing results for 
Search instead for 
Did you mean: 
Creator II
Creator II

How to connect apps on low level dimenions. ODAG or something else?


I'm not that experienced in Sense so I need some help.

I guess we all have the same experience that your data environment doesn't look like your standard data environment from any course or example. So standard solution don't always apply 😞
We have dimensions, dozens and dozens of them, and we have over 3.5 million clients. Each of these clients have one or more products for a total of 40 million (2 million unique products, sometimes the lowest level of product is needed, sometimes a higher product category is more than enough) and each client goes to one or more branches. 
Now, the hardest part, our business wants to have the ability to make selections on these dimensions in whatever application they are. So they want to filter data on age or client segment (client data), on clients with a specific product (product data) and filter on a specific part of the country (branches) in an app that shows the usage of our mobile apps. And sometimes they won't filter at all.
To make things even more complicated, they also want end of month data for at least 1-2 years. But let's make abstraction of that problem.
Making that information available in all apps is overkill because a user doesn't always want so many dimensions to filter on. But combine all users (a few hundred of them) and then all dimensions become relevant.
That also means that we can't aggregate information. There are so many dimension available that aggregating the data will have minimal effect. Every customer is an unique human being 😉

In QlikView we used document chaining to send over the selected client numbers. Our apps were divided so they could filter first on product data and chain to client app to see the age distribution. With that method we could link all dashboard with each other.

But what solution do you recommend in Sense?

I've been looking at ODAG but it seems that all dimensions from the selection app need to be present in the template app. So that doesn't help us if they select a product but the product dimension isn't available in the client data.
So I tried to make a button that selects the lowest level available. That mostly will be clientnumber but sometimes it goes even lower.
But now I get an error because you can't send that many clientnumbers with ODAG. Some selections keep 2 million clients. I don't seem to find a solution for this error.


But I don't have the feeling ODAG will be a good solution.

I tried this Document Chaining in Qlik Sense - Qlik Community - 1495402 but that doesn't allow large selections. 

Are there some other techniques available?



Labels (1)
1 Reply

Depending on which version of Qlik Sense you are using ... there is a newer form of ODAG commands which makes life so much easier. 

I cut the following image that illustrates how you simply put the odag dimensions in the Where clause for your SQL Statement from a post I did recently talking through various solutions. 



Be sure to check out this help page on binding syntax especially for situations like yours with giant potential values. (I pasted important screen shot for you below the link) 



Basically in your case you should use the Dimension approach and hopefully the newer style coding enables you to do that much more easily than the older format which would be cumbersome. If you are calling the ODAG applet from many different front end solutions you would want a superset ODAG template that handles all dimensions you might pass to it even if the values themselves aren't shown in a column.

Not sure what you meant by a Dimension wasn't available in Client data. If there is a map between products and client ID's in 1 app, I would think that could be available in the ODAG app. But perhaps, if you read my article from above you might end up choosing Dynamic Views as an option so that you simply create really small template applications that only have 1 visual or something that will then get embedded right into your parent application. That way you could potentially access data as needed to handle all your requests, but the END USER never gets access to the data returned from your queries, they only get to view the data in the chart(s) you return to your parent application.