TabularEditor / TabularEditor3

Bug reports, feature requests, discussion and documentation for Tabular Editor 3 (commercial version).
61 stars 7 forks source link

Dynamic RLS with DirectLake gives deployment Error #1162

Closed ArndtVissing closed 6 months ago

ArndtVissing commented 6 months ago

Description

I have a model that follows the guide here

[Dynamic Row Level Security with Profiles and Users in Power BI : Many-to-Many Relationship - RADACAD]()

essentially using DAX instead of Many-to-Many relationship to avoid the performance problems that M2M causes. I have tested my model in Power BI desktop with sample data and also the setup is working in AAS. However, when I replicate the same RLS in Fabric, using Tabular Editor 3 and trying to write back the model, I get an error as per attached screenshot

I have tried removing my DAX code inside the Roles, and then the model deploys without issues. So it seems to me that some functions, when used inside the RLS Roles, causes problems when deploying to the service.

The RLS DAX is like this

'Brand'[Brand] IN SELECTCOLUMNS( FILTER( 'rls_brand', RELATED(RLS_Users[RequestorEmail])=USERPRINCIPALNAME() ), "Profile" ,'rls_brand'[brand] )

Tabular Editor 3 Version

3.11.0

Screenshots

taberror

Steps to Reproduce

No response

Expected behavior

No response

Crash Report

No response

Windows Version

Windows 11

otykier commented 6 months ago

I believe this is a known limitation of DirectLake currently, that you cannot add RLS (remember, DirectLake is still a preview feature). You should reach out to Microsoft to make sure.

ArndtVissing commented 6 months ago

thanks @otykier I have added normal RLS without issues using DirectLake. Where the DAX filtering is simple. If you have a dimension called Customer and you make a role and filter that Customer = A in the RLS it works without issues.

It is only when introducing more complex DAX in the RLS logic that I get this error. I have also tried to raise it to the Microsoft for them to confirm if this is a DirectLAke limitation currently but wanted it here as well if it was related to the way tabular editor 3 deploys to the service.

otykier commented 6 months ago

TE3 does not perform any kind of validation of the RLS expressions. The error message you see is returned from Analysis Services/Power BI during deployment. You could also try to export the TMSL script from the last page of the Deployment Wizard in TE3, and then use SSMS to execute that TMSL script. You will most likely get the same error, but SSMS may include more information to let you know why it doesn't work.

ArndtVissing commented 6 months ago

@otykier Ya it is the same error when trying to deploy from SSMS. I have raised the problem iwth microsoft on the CAB forums. hopefully they fill fix this in the future :) thanks