Forum Discussion

abhiram342's avatar
abhiram342
Microsoft Employee
3 years ago
Solved

RLS Dax Query

Hi Team,

 

I want to implement RLS on Product table and each user can see the sales for multiple products. I have created below DAX code and it's working fine . Want to check if there are other ways to rewrite same code (( in case if hits perf )

Example:

DAX Expression on Product Table

CALCULATE (
COUNTROWS ( 'Product' ),
FILTER (
VALUES ( 'Product'[Alias] ),
AND('Product'[Alias] = USERPRINCIPALNAME (),MAX('Product'[IsValidUser]) = TRUE())
)
) > 0

 

Relationships

1) ProducRLS (ProductID) * --> Product (ProductID)

2) Product(ProductID)<-- *Sales (ProductID)

 

[email protected] --> will not see any data because they are not valid user

ProductRLS Table

ProductIDAliasIsValidUser
1[email protected]TRUE
2[email protected]TRUE
1[email protected]FALSE

 

Product:

ProductIDName
1Pepsi
2Coco

 

Sales

DateIdProductIDSales
202305011100
202304011300
202305012200

Thanks,

Abhiram

  • Product[ProductID] IN CALCULTATETABLE(VALUES(ProductRLS[ProductID]),ProductRLS[Alias]=USERPRINCIPALNAME ()&&ProductRLS[IsValidUser]=TRUE())

1 Reply

  • wdx223_Daniel's avatar
    wdx223_Daniel
    Community Champion

    Product[ProductID] IN CALCULTATETABLE(VALUES(ProductRLS[ProductID]),ProductRLS[Alias]=USERPRINCIPALNAME ()&&ProductRLS[IsValidUser]=TRUE())