Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now

Reply
Anonymous
Not applicable

TRICKY - RLS Filtering issue for multiple org levels

Hi Experts

 

I have a issue with my DAX for RLS - the issue is happens when i have individual with mulitple Organisational level access. 

See Sample Data below - in the sample below Albert has Organisation Level 1 Access which should allow him to see everything, and also access to South Korea Market data. 

 

I would expect my DAX measure to below to default to Org Level_1 as opposed to Org_level_3. This is where i am stuck..

 

BlueWhite111_0-1685547532055.png

// DAX for finding access info in vw_rls_msi_icontrol_user_access to filter this table with.
// Set variables:
// Create filter on current user using USEPRINCIPALNAME()

VAR filter_current_user=
FILTER(
             ALL('vw_rls_msi_irisk_user_access'),
            'vw_rls_msi_irisk_user_access'[user]=
            USERPRINCIPALNAME())

// Create filter to exclude NULL values in corresponding column

VAR filter_not_null_org_level_1=
FILTER('vw_rls_msi_irisk_user_access', 'vw_rls_msi_irisk_user_access'[organization_level_1] <> BLANK())

VAR filter_not_null_org_level_2=
FILTER('vw_rls_msi_irisk_user_access', 'vw_rls_msi_irisk_user_access'[organization_level_2] <> BLANK())

VAR filter_not_null_org_level_3=
FILTER('vw_rls_msi_irisk_user_access', 'vw_rls_msi_irisk_user_access'[organization_level_3] <> BLANK())

VAR filter_not_null_org_level_4=
FILTER('vw_rls_msi_irisk_user_access', 'vw_rls_msi_irisk_user_access'[organization_level_4] <> BLANK())

VAR filter_not_null_org_level_5=
FILTER('vw_rls_msi_irisk_user_access', 'vw_rls_msi_irisk_user_access'[organization_level_5] <> BLANK())

// Create a calculated table for ever organization level
VAR table_level_1 =
CALCULATETABLE (
        VALUES( 'vw_rls_msi_irisk_user_access'[organization_level_1]),
  filter_current_user,filter_not_null_org_level_1)

VAR table_level_2 =
CALCULATETABLE (
        VALUES( 'vw_rls_msi_irisk_user_access'[organization_level_2]),
  filter_current_user,filter_not_null_org_level_2)

VAR table_level_3 =
CALCULATETABLE (
        VALUES( 'vw_rls_msi_irisk_user_access'[organization_level_3]),
  filter_current_user,filter_not_null_org_level_3)

VAR table_level_4 =
CALCULATETABLE (
        VALUES( 'vw_rls_msi_irisk_user_access'[organization_level_4]),
  filter_current_user,filter_not_null_org_level_4)

VAR table_level_5 =
CALCULATETABLE (
        VALUES( 'vw_rls_msi_irisk_user_access'[organization_level_5]),
  filter_current_user,filter_not_null_org_level_5)


RETURN
// If all tables are empty return False otherwise
// If value is found in calculated table-> filter table and column on that value

IF( ISEMPTY(table_level_1) && ISEMPTY(table_level_2) && ISEMPTY(table_level_3) && ISEMPTY(table_level_4) && ISEMPTY(table_level_5), FALSE,
[level_1]
    IN table_level_1
||
[level_2]
    IN table_level_2
||
[level_3]
    IN table_level_3
||
[level_4]
    IN table_level_4
||
[level_5]
    IN  table_level_5
)

 

0 REPLIES 0

Helpful resources

Announcements
November Power BI Update Carousel

Power BI Monthly Update - November 2025

Check out the November 2025 Power BI update to learn about new features.

Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Solution Authors
Top Kudoed Authors