{"id":366,"date":"2024-03-03T14:02:10","date_gmt":"2024-03-03T14:02:10","guid":{"rendered":"https:\/\/datadandies.nl\/?p=366"},"modified":"2024-03-03T14:02:10","modified_gmt":"2024-03-03T14:02:10","slug":"een-power-bi-rapport-delen-met-meerdere-klanten-waarbij-iedere-klant-alleen-zijn-eigen-data-ziet-d-m-v-row-level-security-rls","status":"publish","type":"post","link":"https:\/\/datadandies.nl\/index.php\/2024\/03\/03\/een-power-bi-rapport-delen-met-meerdere-klanten-waarbij-iedere-klant-alleen-zijn-eigen-data-ziet-d-m-v-row-level-security-rls\/","title":{"rendered":"Een Power BI rapport delen met meerdere klanten waarbij iedere klant alleen zijn eigen data ziet d.m.v. Row Level Security (RLS)"},"content":{"rendered":"\n<p>Heb jij een Power BI rapport wat je wilt delen met meerdere klanten?<\/p>\n\n\n\n<p>Wil je dat iedere klant alleen zijn eigen data ziet?<\/p>\n\n\n\n<p>Row Level Security (RLS) is een mogelijke oplossing voor dit probleem. Met goed ingestelde RLS ziet iedere klant alleen zijn eigen data.<\/p>\n\n\n\n<p>Hieronder een blog post waarin het een en ander omtrent de inrichting van RLS voor een bovenstaande casus toegelicht wordt.<\/p>\n\n\n\n<p>In de tabel die je wilt filteren heb je een kolom nodig met \u00e9\u00e9n unique identifier voor elke klant (zoals een ClientID). De tabel die je wilt filteren is in het onderstaande geval \u201cFactTable\u201d 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 \u00e9\u00e9n 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.<\/p>\n\n\n\n<p>Vervolgens moet je de ClientID\u2019s koppelen aan de Power BI inloggegevens van de klant. Dit doe je met behulp van de onderstaande tabel \u201cPermissionsTable\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"485\" src=\"https:\/\/datadandies.nl\/wp-content\/uploads\/2024\/03\/20240317-RLS-PBI--1024x485.png\" alt=\"\" class=\"wp-image-367\" srcset=\"https:\/\/datadandies.nl\/wp-content\/uploads\/2024\/03\/20240317-RLS-PBI--1024x485.png 1024w, https:\/\/datadandies.nl\/wp-content\/uploads\/2024\/03\/20240317-RLS-PBI--300x142.png 300w, https:\/\/datadandies.nl\/wp-content\/uploads\/2024\/03\/20240317-RLS-PBI--768x363.png 768w, https:\/\/datadandies.nl\/wp-content\/uploads\/2024\/03\/20240317-RLS-PBI-.png 1139w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Hierna maak je gebruik van de onderstaande DAX formule die je invoert in een nieuwe security rol bij de tabel \u201cFactTable\u201d.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"FactTable[ClientID] \n\nIN\n\nCALCULATETABLE(\nVALUES( PermissionsTable[ClientID] ), \nPermissionsTable[Username] == USERPRINCIPALNAME() \n)\n\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Kopieer\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9\">FactTable<\/span><span style=\"color: #88C0D0\">[ClientID]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">IN<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">CALCULATETABLE<\/span><span style=\"color: #D8DEE9FF\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">VALUES<\/span><span style=\"color: #D8DEE9FF\">( <\/span><span style=\"color: #D8DEE9\">PermissionsTable<\/span><span style=\"color: #88C0D0\">[ClientID]<\/span><span style=\"color: #D8DEE9FF\"> ), <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">PermissionsTable<\/span><span style=\"color: #88C0D0\">[Username]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">USERPRINCIPALNAME<\/span><span style=\"color: #D8DEE9FF\">() <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>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 \u201cPermissionsTable\u201d als aan de beveiliging op rijniveau \/ RLS in de Power BI Service toegevoegd worden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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&hellip;<\/p>\n<p class=\"more-link\"><a href=\"https:\/\/datadandies.nl\/index.php\/2024\/03\/03\/een-power-bi-rapport-delen-met-meerdere-klanten-waarbij-iedere-klant-alleen-zijn-eigen-data-ziet-d-m-v-row-level-security-rls\/\" class=\"themebutton\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-366","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/posts\/366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/comments?post=366"}],"version-history":[{"count":1,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/posts\/366\/revisions"}],"predecessor-version":[{"id":368,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/posts\/366\/revisions\/368"}],"wp:attachment":[{"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/media?parent=366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/categories?post=366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/tags?post=366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}