Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - Bezpieczeństwo: RLS, OLS i etykiety poufności
Wyświetl jako rola pokazuje pusty raport - adres spoza tabeli mapującej albo wartość spoza danych
Dwie kreski zamiast liczb na kartach, puste tabele i wykresy: tak wygląda pusty raport pod rolą RLS po włączeniu Wyświetl jako w Power BI Desktop. Rola działa, tylko jej reguła nie przepuszcza żadnego wiersza. Na modelu Nordvelli ustalamy w kilka minut, czy winny jest adres spoza tabeli mapującej, dane w tej tabeli, czy wartość w regule, której nie ma w danych.
W kursie wyglądało to tak: pasek nad raportem pokazywał Oglądasz jako: Manager sklepu, bez adresu, karty sprzedaży i transakcji miały dwie kreski, a wizualizacje były puste. Bez roli ten sam raport pokazuje 467 775 009,17 zł z 15 sklepów. Taki sam obraz daje kierownik zalogowany adresem, którego nie ma w tabeli MapaManagerow, oraz rola statyczna z wartością, której nie ma w danych.
Power BI nie zgłasza przy tym żadnego błędu, bo z punktu widzenia zabezpieczeń wszystko jest w porządku: osoba bez przypisanego sklepu nie ma czego oglądać. To odróżnia pusty raport od komunikatu „Wystąpił problem z co najmniej jednym polem.”, który pojawia się na wizualizacjach przy zabezpieczeniu kolumn.

Zobacz też: Szkolenie Power BI - Desktop, DAX i Online + Copilot
Reguła roli to wyrażenie DAX, które dla każdego wiersza tabeli zwraca prawdę albo fałsz. Pusty raport znaczy, że dla wszystkich 15 wierszy DimSklepy wyszedł fałsz, a relacje przeniosły ten pusty wynik na sprzedaż. W roli dynamicznej Manager sklepu reguła porównuje kolumnę Email z wynikiem USERPRINCIPALNAME (). Sprawdziliśmy na modelu, podstawiając adresy do wyrażenia reguły, kiedy porównanie zawodzi: pusty tekst (adres niezatwierdzony w oknie), nazwa konta Windows POWERBI-KURS\powerbi, adres ze spacją na końcu i adres w domenie .com dały po 0 sklepów. Wielkie litery nie przeszkadzają, bo porównanie tekstów w DAX ich nie rozróżnia.
W roli statycznej pusty raport daje wartość, której nie ma w kolumnie. Warunek [Miasto] = "Krakow" bez ogonka zostawił 0 sklepów, a z ogonkiem 2. Tak samo kończy się porównanie ze złą kolumną: DimSklepy ma kolumnę Manager z imieniem i nazwiskiem, na przykład Piotr Nowak, więc porównanie jej z adresem nie znajduje nikogo.
Reguła na tabeli mapującej nie daje pustego raportu, tylko odwrotny objaw. W lekcji 21 reguła postawiona na MapaManagerow zostawiła w mapie jeden wiersz, a raport z podstawionym adresem pokazywał całą sieć, 468 mln zł i 109 tys. transakcji, bo relacja ma kierunek od DimSklepy do mapy i filtr nie dochodzi do sprzedaży. Ten przypadek i opcję relacji, która go dotyczy, opisujemy w poście o filtrze zabezpieczeń w obu kierunkach.
piotr.nowak@nordvella.pl w kursie wyszedł ten adres, 1 sklep i 1 wiersz mapy. Gdy Sklepy widoczne pokazuje 0, przepisz adres z pierwszej kolumny do kolejnego kroku.EVALUATE
ROW (
"Zalogowany", USERPRINCIPALNAME (),
"Sklepy widoczne", COUNTROWS ( DimSklepy ) + 0,
"Wiersze mapy", COUNTROWS ( MapaManagerow ) + 0
)RELATED dopisuje nazwę sklepu, na przykład Nordvella Kraków Stare Miasto przy sklepie 4, więc relacja z DimSklepy działa. Gdy adresu z kroku 2 nie ma na liście, problem jest w danych, nie w regule.EVALUATE
SELECTCOLUMNS (
MapaManagerow,
"Email", MapaManagerow[Email],
"SklepID", MapaManagerow[SklepID],
"Nazwa sklepu", RELATED ( DimSklepy[Nazwa] )
)
ORDER BY [SklepID]TRIM po stronie mapy 1 sklep.Kraków, nie Krakow) i kolumnę, której dotyczy warunek. Wielkość liter możesz pominąć: kraków małą literą też zostawił 2 sklepy.DimSklepy. W roli Manager sklepu poprawna reguła czyta mapę wewnątrz wyrażenia: DimSklepy[SklepID] IN SELECTCOLUMNS ( FILTER ( MapaManagerow, MapaManagerow[Email] = USERPRINCIPALNAME () ), "SklepID", MapaManagerow[SklepID] ). Z adresem Piotra Nowaka zostawia sklep 4 i 31 545 739,77 zł sprzedaży.Naprawione, gdy pod rolą z adresem kierownika zapytanie z kroku 2 pokazuje 1 sklep, a raport jego sprzedaż. W kursie każdy z sześciu adresów mapy dawał inny sklep. Pusty raport dla adresu spoza mapy jest poprawnym zachowaniem: kto nie ma przypisanego sklepu, nie widzi danych. Gdy dyrektor ma widzieć całą sieć, dopisz mu osobny warunek w regule tej samej roli, jak w lekcji 21, zamiast przypisywać go do kilku ról.
Przed publikacją testuj rolę dynamiczną dla co najmniej dwóch kierowników i jednego adresu spoza mapy, a w usłudze sprawdź, jaką wartość funkcja zwraca dla prawdziwego konta, co opisujemy w poście o USERPRINCIPALNAME i koncie Windows. Według dokumentacji Microsoft osoba, której w usłudze nie przypisano do żadnej roli, zwykle też nie widzi danych.
Zachowanie programu sprawdziliśmy w Power BI Desktop 2.157 (wydanie z sierpnia 2026 r.) z polskim interfejsem, a przykłady na modelu sieci Nordvella z bezpłatnego kursu Power BI. Microsoft wydaje nową wersję Power BI Desktop co miesiąc, więc nazwy przycisków i limity usługi mogą się zmieniać. Aktualne wartości podaje dokumentacja Microsoft Learn.
Wróć do listy: 131 najczęstszych pytań i problemów związanych z Power BI
Komentarze (0)
Brak komentarzy...