Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
vkish16161
Creator III
Creator III

Might sound Dumb but why do we need to join tables if QIX engine associates everything based on primary key associations?

Hello guys,

As from the title above why do we need to join tables if QIX automatically associates tables based on common field names.

I've read in another discussion that the way QIX associates data is similar to doing a full outer join.

So why can't we save ourselves the trouble of doing joins.

Pardon me if my question seems dumb!

Thanks!

8 Replies
Not applicable

Memory and CPU are affected by whether you join tables or not.  Qlik recommends keeping tables normalized (Not Joined) in order to minimize incorrect calculations and also makes data easier to understand.

I think this article is relevant to your question:   

To Join or not to Join

Cheers!

Will

mgranillo
Specialist
Specialist

‌Vishnu,

I don't regard myself as a data modeling expert but here are a few thoughts I have on the matter.  You should know that a lot of the answers you're looking for depend on the amount of data you have in your app and the structure of your ETL process (i.e. database vs qlik script transformations)

Here are some reasons you should have associations:

1. A narrower fact table with supporting dimension tables will be more efficient than one larger fact table; RAM and/or processing time will be reduced your app

2. If you want to create an app that incorporates two fact tables without a common link, you wouldn't be able to join them and instead would need to design a model that associates the data properly using a link table

3. A data model with no associations is less informative to developers and users

4.  It may be a design requirement to refresh the data frequently and joins will bog down your script run time

In regards to what you said about the QIX engine, from what I've read, it associates data in either a left, right, or outer join depending on how the user is interacting with the application.  If no filters are applied, it will produce a full outer join

It would be great to here from our experts on this.

Mike

marcus_sommer

With rather simple datamodels the purely association of tables might be enough. But there are cases where you would get synthetic keys and/or circular references (of course this would be solvable but it would require some efforts) and/or you need to calculate something with fields from different tables and/or you need a specific datamodel-design for reasons of logic (for example are inner joins very well suited to filter tables), readability, maintainability and very important to ensure a certain performance from script and gui.

And beside joining there are other methods like concatenating and mapping to merge the data to get a well working datamodel.

This meant you will be have (nearly always) several different ways to create a datamodel and it will depend on your data, requirements and your experience which one will be the most suitable. Here you will find a good starting point in the topic of creating datamodels: Get started with developing qlik datamodels

- Marcus

vkish16161
Creator III
Creator III
Author

Thanks for the response Mike, It was very helpful . Also, How do I select a "Correct Answer". I don't see a dedicated button for such an important thing. Hope Qlik Community makes this available.

vkish16161
Creator III
Creator III
Author

Thanks for the response Sommer. It was helpful

Anonymous
Not applicable

Hi Vishnu,

To mark a reply as correct, simply click the Correct Answer button that appears below the post. You can read this guide for more info.

Qlik Community Tip: Marking Replies as Correct or Helpful

Let m know if you have any further questions.

Best,

Qlik Community Team

vkish16161
Creator III
Creator III
Author

Hello Jeremy, I don't see a correct answer button anywhere. I see a helpful button. That's all

Anonymous
Not applicable

Hi Vishnu,

Thanks for your reply. I'm not sure why the button would not appear for you. I will send you a private message in order to troubleshoot.