Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - Bezpieczeństwo: RLS, OLS i etykiety poufności
USERPRINCIPALNAME zwraca konto Windows zamiast adresu e-mail w Power BI Desktop
USERPRINCIPALNAME w Power BI Desktop zwróciła w kursie POWERBI-KURS\powerbi, czyli nazwę konta Windows, a nie adres e-mail. Przy budowie dynamicznego RLS, czyli jednej roli, która sama rozpoznaje osobę otwierającą raport, taki wynik sprawia, że raport pod rolą robi się pusty. Wyjaśniamy, co funkcja zwraca w Desktopie i w usłudze, jak testować rolę bez publikowania i jak przygotować tabelę mapującą na modelu Nordvelli.
W modelu Nordvelli rola Manager sklepu ma na tabeli DimSklepy regułę, która szuka adresu zalogowanej osoby w tabeli MapaManagerow. Mapa ma sześć adresów kierowników, na przykład piotr.nowak@nordvella.pl ze sklepem 4. W widoku zapytań w języku DAX bez podglądu roli funkcja USERPRINCIPALNAME () zwróciła w kursie POWERBI-KURS\powerbi, nazwę konta Windows, na którym działał Desktop. Sprawdziliśmy to też osobnym połączeniem z modelem z konta administratora maszyny: USERPRINCIPALNAME i USERNAME zwróciły to samo, POWERBI-KURS\Administrator, bez znaku @, a USEROBJECTID identyfikator zabezpieczeń Windows zaczynający się od S-1-5-21.
Skutek widać w regule. Dla nazwy konta Windows LOOKUPVALUE po kolumnie Email zwraca pustą wartość, a reguła roli zostawia 0 sklepów. Pod rolą bez podanego adresu funkcja zwracała w kursie pusty tekst, co daje ten sam wynik: karty z dwiema kreskami i puste wizualizacje. Autor dochodzi wtedy do wniosku, że funkcja nie działa.

Zobacz też: Szkolenie Power BI - Desktop, DAX i Online + Copilot
Dokumentacja Microsoft opisuje wynik funkcji jednym zdaniem: nazwa główna użytkownika z chwili połączenia. Nazwa główna użytkownika (po angielsku user principal name, w skrócie UPN) to login konta w Microsoft Entra ID, zwykle równy adresowi e-mail. Według dokumentacji w usłudze Power BI funkcje USERPRINCIPALNAME i USERNAME zwracają UPN osoby, która otwiera raport. W Desktopie model działa na Twoim komputerze i bez podglądu roli funkcja może pokazać konto Windows, na którym pracujesz. Dokumentacja podaje dla Desktopu postać user@contoso.com przy USERPRINCIPALNAME i DOMENA\użytkownik przy USERNAME, ale na komputerze kursu, spoza domeny i z lokalnym kontem Windows, obie funkcje zwróciły postać DOMENA\użytkownik.
Druga pułapka to założenie, że UPN to adres poczty. Według dokumentacji Microsoft wartość zwracana przez funkcję jest identyfikatorem logowania, który nie musi być równy adresowi e-mail, na przykład gdy adres jest aliasem. U gości z innej organizacji (Microsoft Entra B2B) funkcja może zwrócić identyfikator z dopiskiem #EXT#. Dlatego tabela mapująca ma przechowywać dokładnie to, co funkcja zwraca w usłudze. Inne przyczyny pustego raportu opisujemy w poście o pustym raporcie pod rolą RLS.
POWERBI-KURS\powerbi, 15 sklepów i 6 wierszy mapy, a na naszym połączeniu z modelem POWERBI-KURS\Administrator i te same liczniki. Wynik bez znaku @ znaczy, że reguła z tabelą mapującą nie znajdzie w Desktopie nikogo, i tak ma być.EVALUATE
ROW (
"Zalogowany", USERPRINCIPALNAME (),
"Sklepy widoczne", COUNTROWS ( DimSklepy ) + 0,
"Wiersze mapy", COUNTROWS ( MapaManagerow ) + 0
)piotr.nowak@nordvella.pl, naciśnij Tab, zaznacz Manager sklepu i kliknij OK.Zalogowany pokaże podstawiony adres, a liczniki 1 sklep i 1 wiersz mapy. Wtedy wiesz, że reguła i relacja są poprawne, a różnica dotyczyła tylko tożsamości.Email dokładnie wartość, którą funkcja zwraca w usłudze, a nie ładniejszy alias. Wielkość liter nie przeszkadza, bo porównanie tekstów w DAX jej nie rozróżnia: adres Piotr.Nowak@Nordvella.pl znalazł w mapie sklep 4 i 31 545 739,77 zł. Przeszkadza spacja na końcu i inna domena: dla adresu ze spacją i dla domeny .com reguła zostawiła 0 sklepów.POWERBI-KURS\powerbi. U gości z innej organizacji szukaj w wyniku dopisku #EXT#.Kto ogląda = USERPRINCIPALNAME ()
Naprawione, gdy w Desktopie podgląd z adresem kierownika pokazuje jego sklep, a w usłudze karta z miarą Kto ogląda pokazuje adres, który znajdziesz w kolumnie Email tabeli mapującej. W kursie każdy z sześciu adresów mapy dawał inny sklep, od 27 854 861 zł w Gdańsku do 141 772 849 zł w sklepie internetowym, a adres spoza mapy dawał pusty raport. Sprawdź co najmniej dwóch kierowników i jeden adres spoza mapy.
Buduj mapę z tego samego źródła, z którego pochodzą konta logowania, i przycinaj spacje w Power Query, zanim dane trafią do modelu, co opisujemy w poście o funkcji Przytnij i niewidocznych znakach. Gdy przy poprawnym adresie raport pokazuje całą sieć, sprawdź, czy reguła leży na wymiarze, a nie na tabeli mapującej, jak w poście o filtrze zabezpieczeń w obu kierunkach. Testową miarę po sprawdzeniu usuń z raportu.
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...