Een Power BI rapport delen met meerdere klanten waarbij iedere klant alleen zijn eigen data ziet d.m.v. Row Level Security (RLS)

Heb jij een Power BI rapport wat je wilt delen met meerdere klanten?

Wil je dat iedere klant alleen zijn eigen data ziet?

Row Level Security (RLS) is een mogelijke oplossing voor dit probleem. Met goed ingestelde RLS ziet iedere klant alleen zijn eigen data.

Hieronder een blog post waarin het een en ander omtrent de inrichting van RLS voor een bovenstaande casus toegelicht wordt.

In de tabel die je wilt filteren heb je een kolom nodig met één unique identifier voor elke klant (zoals een ClientID). De tabel die je wilt filteren is in het onderstaande geval “FactTable” genoemd. Om een kolom te krijgen waarbij iedere rij de ClientID heeft van de bijbehorende klant, zou je allereerst de tabel binnen kunnen halen voor één specifieke klant, om hierna een kolom toe te voegen met de ClientID van deze klant. Daarop volgend doe je hetzelfde met de volgende klant en de resulterende tabellen plak je onder elkaar (UNION/append). Dit proces kun je automatiseren met behulp van een loop in een loop, maar dat is een onderwerp voor een andere post.

Vervolgens moet je de ClientID’s koppelen aan de Power BI inloggegevens van de klant. Dit doe je met behulp van de onderstaande tabel “PermissionsTable”.

Hierna maak je gebruik van de onderstaande DAX formule die je invoert in een nieuwe security rol bij de tabel “FactTable”.

FactTable[ClientID] 

IN

CALCULATETABLE(
VALUES( PermissionsTable[ClientID] ), 
PermissionsTable[Username] == USERPRINCIPALNAME() 
)

Vergeet ook niet in de Power BI Service om de RLS in het semantische model in te stellen. Nieuwe klanten moeten zowel aan de tabel “PermissionsTable” als aan de beveiliging op rijniveau / RLS in de Power BI Service toegevoegd worden.

Leave Comment

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *