Nie zawsze chcemy, by widoczność danych w raporcie była dla każdego użytkownika taka sama. Częściej jest wręcz przeciwnie. I tu przydaje się tworzenie ról, które mają „moc” dostępu do określonego zestawu wierszy danych. Następnie w ramach danej roli umieszcza się poszczególnych użytkowników.
Dokładnie takie funkcjonalności daje Power BI, dziś kilka przykładów, jak to zrobić.
Proste definiowanie ról
Na początku do raportu Power BI pobieram dane dot. sprzedaży. Narzędzia główne > Pobierz dane > Excel > Wybieram arkusz dane > Załaduj.
Następnie by utworzyć role wybieram kartę Modelowanie > Zarządzaj rolami.
Role będą opierały się na regionach. W pliku sprzedaż znajduje się kolumna o nazwie Region , poniżej widać zawarte w niej elementy. Role , które będę tworzyć będą odpowiednie dla kierowników każdego z występujących na liście elementów, czyli regionów.
W części Role tworzę nowe role i nadaję im nazwy, w kolejnej części czyli Tabele, wskazuję na jakiej tabeli , a tym samym na jakich wierszach i wartościach chcę oprzeć daną rolę. Wybieram w tym miejscu tabelę oraz wskazuję kolumnę (klikając wielokropek obok nazwy tabeli) na której zakładam filtr.
W kolejnej części wybieram wartość filtru jaka ma być przyjęta dla danej roli. W tym przykładzie tworzę rolę dla regionu centralnego , tym samym wyrażenie DAX filtru tabeli dla kolumny Region , będzie przyjmowało wartość centralny. Po uzupełnieniu wszystkich pól wybieram Zapisz.
Takie same operacje wykonuję dla pozostałych regionów.
W trakcie dodawania kolejnych ról mogę skorzystać z filtrów utworzonych dla wcześniejszych ról.
Sprawdzenie działania utworzonych ról
Tworzę prosty wykres Zysk w podziale na Region, tak by móc faktycznie sprawdzić działanie utworzonych ról.
Wybieram konkretną rolę poprzez Modelowanie > Wyświetl jako role. Na liście wyboru widzę utworzone przeze mnie role oraz Brak, Inni użytkownicy. Wybieram rolę Wschodni.
W tym momencie widok raportu został zawężony do regionu Wschodni , na górnym pasku pojawia się również komunikat , że wyświetlam dane w roli Wschodni. By znów zobaczyć pełen zakres danych wybieram szary przycisk Zatrzymaj wyświetlanie.
Zastosowanie funkcji OR
Cóż począć gdy kierownicy odpowiadają za więcej niż jeden Region? Wówczas należy zastosować funkcję OR języka DAX. Poprzez Zarządzanie rolami dodaję nową rolę Makro północny , która będzie zawierać w sobie dostęp do regionu północnego oraz północno zachodniego. Dodaję filtr , tak jak w poprzednich przypadkach na kolumnie Region.
Zastosowanie funkcji USERNAME – powiązanie z kontem użytkownika
By z tej funkcjonalności skorzystać, muszę się dowiedzieć, jak nazywa się moja nazwa użytkownika. W tym celu tworzę nowe puste zapytanie i nadaję mu nazwę Pracownik : Narzędzia główne > Pobierz dane > Puste zapytanie > zmieniam nazwę > Zamknij i zastosuj.
To utworzonego zapytania wstawiam Nową miarę : Narzędzia główne > Obliczenia > Nowa miara
Nową miarą będzie nazwa aktualnie korzystającego użytkownika. Na pasku formuły wpisuję nazwę miary oraz jej wartość czyli w tym przypadku wynik działania formuły USERNAME().
Aby zobaczyć, jaką wartość przyjmuje wskazana miara, umieszczam ją na wizualizacji. Otrzymuję wówczas wygląd nazwy mojego użytkownika. Nazwa ta zmienia się po opublikowaniu raportu na adres mailowy.
Do wybranych rekordów w pliku sprzedaż dodam w nowej kolumnie Użytkownik moją nazwę użytkownika. Powiedzmy, że będą to rekordy dla województwa mazowieckiego. Kopiuję z wizualizacji wartość mojego loginu.
Poprzez Modelowanie > Zarządzaj rolami dodaję nową rolę o nazwie User. Filtr zakładam na tabeli dane, na kolumnie Użytkownik z wartością jak na poniższym screenie > Zapisz.
Dzięki temu, zgodnie z filtrem wizualizacja zostaje zawężona do danych, w których pojawia się mój adres e-mail.
Czy jest taka możliwość aby zrobić filtrowanie gdzie mamy 3 grupy osób :
1. Widza wszystko
2. Widzą tylko wybranych klientów
3. Widzą wszystkich klientów ale tylko wybraną kategorie produktów
Wszystko na jednym zestawie danych
– Jeśli nie wstawimy żadnego warunku DAX, powstaje rola admin – widzi wszystko.
– Widzenie wybranych klientów osiągniemy poprzez warunek OR lub || lub IN, np.:
[Segment rynku] IN { „mała firma”,”osoba fizyczna”}
– Dodatkowe kategorie: dodatkowy warunek AND lub &&
– W zaawansowanym scenariuszu tworzymy przypisanie Klienta (np. [Klient ID]) do użytkownika [User ID]) i na tym budujemy filtr z formułą USERNAME()
– W najbardziej zaawansowanym scenariuszu, tworzymy tabelę użytkowników z uprawnieniami (przykład opisano tu: https://community.powerbi.com/t5/Service/role-level-security-dynamically-for-admin-and-other/td-p/239132)
Witam,
Mam pytanie dotyczące zabezpieczeń danych ale z punktu widzenia excela/power query. Czy jest możliwość zablokowania podglądu/edycji danych w power query dla użytkownika excela? W power query chciałbym odfiltrowywać konkretne dane, ale tak żeby użytkownik nie mógł podejrzeć co zrobiłem?
Pozdrawiam
Hej Przemek, dzięki za pytanie. Włączając ochronę skoroszytu (Recenzja > Chroń skoroszyt), możemy zablokować edycję zapytań. Wówczas użytkownik może je tylko odświeżyć. Jednak nie jest to sposób na zabezpieczenie danych. Trzeba też pamiętać, że takie zabezpieczenie łatwo zdjąć (łamiąc hasło ochrony) i jeśli użytkownik ma dostęp do źródła, może podejrzeć pełne dane. My projektowo generujemy makrami i wysyłamy jako załącznik oddzielne pliki – to najbezpieczniejszy znany nam sposób dla świata Excel.
Super, bardzo dziękuję za odpowiedź 🙂
Pozdrawiam