As powerful as the associtative engine is, there is a down-side to "you can select any data-point you want" ... as soon as a developer uses set analysis (which is in almost every app i saw) the deveoper has to guess which field selections to overwrite or to unselect, meaning you are creating code on specific field names. Now, what the engine would benefit from, are "selection-projections", that means, you can define a pair of fields in the meaning of "If one selects on field X, make the selection on field Y instead" (that only makes sense, if Y has a lower of at least the same granularity as X - perfect if Y is the key field of the data table). So there is an abstraction ("projection") layer between what the user selects and what the engine sees as an selection.
Example: in a detail table many columns for a customer are shown: CustomerID, CustomerName, Address, ZIP, Town, Country ... In another object you want to show other customers who bought the same product. in that other hypercube, the measure would have a set modifier like {<CustomerName={*}-P(CustomerName)>} ... but if the user selected on any other field like CustomerID or customer address, the modifier doesn't work .... hence, I would like to "project" the selection on CustomerName the way the engine sees it to the CustomerID field, no matter if the user clicked on the customer address, id, country or name ... then I would sustain the behaviour I want with one set modifier {<CustomerID={*}-P(CustomerID)>}
And at the same time in the Qlik Sense "Current Selection" bar of the client, if there is a unique mapping of a data field to a master dimension, show the master dimension label, not the field name.