I have a fact table that has several dimension keys from the same dimension like a sales_fact with customer_key, manager_key or sales_rep_key all coming from the party_dimension.
... and the join keys are different party_dimension.party_key = sales_fact.customer_key, party_dimension.party_key = sales_fact.manager_key, party_dimension.party_key = sales_fact.sales_rep_key the only option I see is to create three different logical data source for party_dimension and then join to the sales fact.
I would prefer to pull the party_dimension in the data source once for performance sake and perform lookups against the same source... not sure if that's possible in tableau.
Just to give you guys a background we now have a view that joins the fact table with all the relevant dimension tables and the query performance has been not very good. The user needs to await 5-10 mins before the data is fetched... all the proper indexes have been defined between the tables amongst the join keys. That's why we decided to get the tables separately and define the joins within tableau and the thought process is that tableau may cache the relevant logical segments and works the query efficiently.