Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
RLS in Power BI Causing Blank Data – Need Help Debugging Issue Summary Applying Row-Level Security (RLS) in Power BI causes all data to go blank when testing with "View As Role" in Power BI Desktop. Relationships seem correct, but the Fact Table is not returning records.
Data Model Setup
Bridge_Contractor =
FILTER(
DISTINCT (
UNION (
SELECTCOLUMNS(Roles_Email, "Contractor Name", [Contractor Name]),
SELECTCOLUMNS(Fact_Table, "Contractor Name", [Contractor A]),
SELECTCOLUMNS(Fact_Table, "Contractor Name", [Contractor B])
)
),
NOT(ISBLANK([Contractor Name]))
)Relationships Table A Table B Column Name Relationship Type Cross-Filter Roles_Email Bridge_Contractor Contractor Name One-to-Many Both Fact Table Bridge_Contractor Contractor Name Many-to-One Both Roles_Email Page_Roles Role One-to-Many Both
RLS Applied on Roles_Email [User Email] = USERPRINCIPALNAME() Expected Behavior: • Users only see assigned contractors • Fact Table filters records where Contractor A or Contractor B match the assigned contractors Actual Behavior: • All data disappears when testing "View As Role" Debugging Done ✔ Relationships checked – "Both" cross-filtering enabled ✔ Bridge_Contractor verified – Contains correct contractor names ✔ RLS removed from Fact Table & Bridge_Contractor – No fix ✔ Manual filtering works – But RLS still blanks Fact Table ✔ Tried modified RLS: [User Email] = USERPRINCIPALNAME() && NOT(ISBLANK([Contractor Name])) Still not working Need Help With: • Why is RLS blanking out Fact Table? • How to ensure Roles_Email filters Fact Table correctly? • Alternative ways to apply RLS? Would appreciate any suggestions.
Hello @nishthabhakta20,
Can you please try this approach:
Bridge_Contractor =
VAR ContractorsFromRoles =
DISTINCT ( SELECTCOLUMNS(Roles_Email, "Contractor Name", [Contractor Name]) )
VAR ContractorsFromFact =
DISTINCT (
UNION (
SELECTCOLUMNS(Fact_Table, "Contractor Name", [Contractor A]),
SELECTCOLUMNS(Fact_Table, "Contractor Name", [Contractor B])
)
)
RETURN
FILTER (
UNION ( ContractorsFromRoles, ContractorsFromFact ),
NOT(ISBLANK([Contractor Name]))
)
The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!
| User | Count |
|---|---|
| 40 | |
| 37 | |
| 33 | |
| 29 | |
| 27 |
| User | Count |
|---|---|
| 131 | |
| 104 | |
| 61 | |
| 57 | |
| 55 |