Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
3 years ago

Filtering table with USERNAME() for Row Level Security

Hello community,

I want to have a row level security that does this "Filter the units depending on the USERPRINCIPALNAME() units when the USERPRINCIPALNAME() is in a group containing "administration"."
I wrote this DAX code that does what I want (note: units and groups are hierarchical subset of the company):

 

 

 

[Units]
    = CALCULATE (
        LOOKUPVALUE ( 'Employee'[Group], 'Employee'[E-mail], USERPRINCIPALNAME () ),
        FILTER ( 'Employee', CONTAINSSTRING ( [Groupe], "Administration" ) )
    )

 

 

 

Unfortunately, "USERPRINCIPALNAME()" cannot be used inside of a Calculate function if I believe the error.


How can I refactor to obtain the result that I want?

Best regards,

4 Replies

  • You don't.  Apply RLS to your dimension tables and let the data model do the work for you.

    • Anonymous's avatar
      Anonymous
      Not applicable

      Thank you for your answer. 
      Then, what would the DAX code look like to filter with the string "administration"?

      • lbendlin's avatar
        lbendlin
        Super User

        pretty much the same as you show. Just as a RLS rule, not as a measure.