We are working on a number of embedded dashboards that are exposed to external users as well as internal ones. There is a specific data point (let's call this PROGRAM_ID) within each of our data sources that is used to map the username to that will drive the RLS logic to ensure that the logged in external user can only see data based on this specific data point. However, all internal users (meaning everyone at the company) will not be limited to what records they see, they will be able to see them all.
We've reviewed all the relevant documentation we could find online and followed the approach of using an entitlement table where external users (tracked using their USERNAME) are mapped against the unique PROGRAM_IDs. Some of these users are mapped to 1 unique PROGRAM_ID, some to two, others to 3 or more.
When we LEFT join the data table and the entitlement table using the PROGRAM_ID data point, and use a data source filter like the below (based on documentation found online) this of course has the potential for blowing up our data, especially for the internal users since they aren't limited to which records they see.
IF ISMEMBEROF('Internal Only') Then TRUE
ELSEIF USERNAME() = [USER_NAME] THEN TRUE
ELSE FALSE
END
My question is this: Without using Tableau Prep, is there a way to utilize some type of conditional join logic that says:
If the user logged in is an internal users don't join the data table with the entitlement table, but if it's an external user (based on their USERNAME) then complete the join?
Based on what I read I haven't been able to find something like this, and Tableau Prep gets brought up as the only solution. However, many of these posts are a few years old and so I wanted to see if there's potentially a native Tableau solution available now.
Thank you in advance.
@Przemek Kunka
Hi, I guess you should read:
https://www.tableau.com/learn/whitepapers/row-level-security-entitlements-tables
Note that this strategies requires the use of Tableau Desktop, a data table and the entitlement tables.
If this post resolves the question, would you be so kind to "Select as Best"?. This will help other users find the same answer/resolution and help community keep track of answered questions. Thank you.
Regards,
Diego Martinez
Tableau Visionary and Forums Ambassador