Forum Discussion

soldous's avatar
soldous
Advocate II
1 year ago
Solved

Disable RLS for one page in the report by adding duplicated dimension

Dear all

 

I need to resolve a request that all users should see all shops and their performance on one benchmarking page in the report, but for the rest of the report, the RLS should be applied, and Area Managers should see only shops in their area.

 

The RLS is applied on shop dimension like this: 

D_Workplace[Area Manager Name] IN
    SELECTCOLUMNS( FILTER( D_Employee, D_Employee[Email] = USERPRINCIPALNAME( ) ), "@name", D_Employee[Full Name] )

The dimension is connected to fact table through a standard star schema. To fulfil the requirements I thought about adding second copy of the shop dimension without any RLS and us this one only on the benchmarking page. But even if I tried to disable the original relationship using:

CROSSFILTER( D_Workplace[wrkpl_key], F_FinanceProfitability[wrkpl_key], NONE )

 in the measure used on benchmarking page still the RLS is applied.

 

Is there any way how to disable the RLS in the measure or did I anything wrong?

 

Thanks a lot

  • No, you can't disable RLS from within a measure. What you could do is build a summary table of your data at the granularity you need and then link all dimensions except shop and then link a duplicate of the shop dimension without RLS, as you suggested.

    For example, if you only need to show data at the month granularity you could create a summary table like

    Sales Summary =
    ADDCOLUMNS (
        SUMMARIZE (
            Sales,
            'Product'[Product Key],
            'Shop'[Shop Key],
            'Date'[Year Month]
        ),
        "Sales Value", [Sales Amount]
    )
    

    You would then link Date, Product and new duplicate of Shop to this summary table and write the measures you need.

    You could go down to any granularity in the summary, but the more columns you add the bigger the table will get.

2 Replies

  • Measures can not override RLS ... which is a good thing otherwise RLS would not be secure.

     

    Are you users confussed.  It sounds like they dont undestand the difference between RLS and Filters.

     

    Filters can alow users to slice and dice

     

    RLS  secures data for example restricting   Area Managers to only see their shops.

     

    But you could grant Directors access to all shops, and they could slice and dice which shops they which to see on different reports.

     

    Please click the [accept solution] and the thumbs up buttons, thank yoi

     

     

     

     

  • No, you can't disable RLS from within a measure. What you could do is build a summary table of your data at the granularity you need and then link all dimensions except shop and then link a duplicate of the shop dimension without RLS, as you suggested.

    For example, if you only need to show data at the month granularity you could create a summary table like

    Sales Summary =
    ADDCOLUMNS (
        SUMMARIZE (
            Sales,
            'Product'[Product Key],
            'Shop'[Shop Key],
            'Date'[Year Month]
        ),
        "Sales Value", [Sales Amount]
    )
    

    You would then link Date, Product and new duplicate of Shop to this summary table and write the measures you need.

    You could go down to any granularity in the summary, but the more columns you add the bigger the table will get.