Let's face it. Qlik Sense does not have convenient instrument for data models creation.
Data Manager works only with very simple scenarios (mostly, one fact table + dictionaries around it).
Attempts of creation more complex models leads to sophisticated schemas with synthetic keys, and loose of model clarity (and most probably, don't work as intended).
Data Manager overcomplicated for non-technical users, and does not have enough flexibility for real analytics. Real analytical scenarios usually involves multiple fact tables, that connected by various fields, and have links to same dictionaries. Almost always we need canonical calendar, different accumulation and as-of-date modes.
If you want more, you must master data model creation in Load Script. That means manual coding. For people who familiar with SQL conceptions (most of analytics), much easier to create data model with classic relational DB structure.
More manual coding = more mistakes, higher entrance threshold, difficult support and bad scalability.
Want to add new table to your model? Ok, you must adjust all link table code, that affected by it. You write code, that not support easy modification? Bad for you.
Not surprise, when after all of this we can hear opinion that "Qlik - BI for geeks". 🙂
But, this is not wall of crying. Because we created our own approach to data modeling, that implemented as Qlik subroutine. May be it's sounds too loud, but I'm think, that is new level of associative engine usage. It takes advantages of SQL and Associative engine approaches, without their weak sides.
Data model creation now even easier than with Data Manager. Because we don't need to setup relationship between all tables, by placing them in particular part of model.
Use |L for link fields, |D for Date Fields, and place Primary Key field in table name.
Add as much tables as you want, and get optimized star data model with canonical calendar as result. In link table generation, not only direct links between tables takes into account. All chain of associations builded for each table from top to bottom.
It means, if you store your data for example in QVDs with marked up names, it means every user can take any set of tables and get complete data model without coding. True data modeling self-service)
Also, we made some quality of life stuff, like embedded into app expression constructor. So even not familiar with model user can quickly create new expressions.