Filtry — informacje podstawowe

Filtry służą do kontroli dostępu do wartości danych w kostce. Stanowią najbardziej szczegółową formę dostępnych zabezpieczeń.

Tworząc filtr, wyznaczamy ograniczenia dotyczące określonych komórek kostki lub ich zakresu. Następnie gotowy filtr można przypisać do użytkowników lub grup.

O możliwości tworzenia, przypisywania, edytowania, kopiowania, zmieniania nazw lub usuwania filtrów decyduje rola użytkownika:

  • Mając przypisaną rolę "Menedżer aplikacji", możemy zarządzać dowolnym filtrem dla dowolnego użytkownika lub dowolnej grupy. Filtry nie mają na nas wpływu.
  • Mając przypisaną rolę "Aktualizacja bazy danych", możemy zarządzać filtrami dla aplikacji, które utworzyliśmy.
  • Mając przypisaną rolę "Menedżer bazy danych", możemy zarządzać filtrami w swoich aplikacjach i kostkach.
  • Mając przypisaną rolę "Dostęp do bazy danych" (ustawienie domyślne), mamy dostęp "odczyt" do wszystkich wartości danych we wszystkich komórkach, chyba że dostęp ten jest ograniczany przez filtry.

Tworzenie filtrów

Dla kostki można tworzyć wiele filtrów. Jeśli filtr będzie edytowany, zmiany w jego definicji zostaną odziedziczone przez wszystkich jego użytkowników.

Zob. Controlling Access to Database Cells Using Security Filters.

  1. Przejść do edytora filtrów.

    W interfejsie Redwood:

    1. Na stronie "Aplikacje" otworzyć aplikację, a następnie otworzyć bazę danych (kostkę).
    2. Kliknąć kolejno Dostosowanie i Filtry.

    W klasycznym interfejsie internetowym:

    1. Na stronie "Aplikacje" rozwinąć aplikację.
    2. Z menu "Czynności", z prawej strony kostki, uruchomić inspektor.
    3. Wybrać kartę Filtry.
  2. Kliknąć Dodaj.
  3. Wpisać w polu tekstowym Nazwa filtra nazwę filtra.
  4. W edytorze filtrów kliknąć Dodaj.
  5. W obszarze Dostęp wybrać z rozwijanego menu poziom dostępu.
    • Brak: Nie można pobierać ani aktualizować żadnych danych

    • Odczyt: Dane można pobierać, lecz nie można ich aktualizować

    • Zapis: Dane można pobierać i aktualizować

    • Odczyt meta: Można pobierać i aktualizować metadane (nazwy wymiarów i elementów)

      Poziom dostępu "Odczyt meta" przesłania wszystkie inne poziome dostępu. W obrębie istniejących filtrów "Odczyt meta" są wprowadzane dodatkowe filtry danych. Filtrowanie kombinacji elementów (z użyciem relacji AND) nie ma zastosowania do poziomu "Odczyt meta". "Odczyt meta" filtruje każdy element osobno, używając relacji OR.

  6. Wybrać wiersz w obszarze Specyfikacja elementów, wprowadzić nazwy elementów, a następnie kliknąć Prześlij Ikona przesyłania filtra w interfejsie Redwood..

    Elementy można filtrować osobno, a można także filtrować ich kombinacje. Określić nazwy wymiarów lub elementów, aliasy, kombinacje elementów, zbiory elementów (zdefiniowane przez funkcje) lub nazwy zmiennych substytucyjnych (poprzedzone znakiem &). Wpisy należy rozdzielać przecinkiem.

  7. Utworzyć, zgodnie z potrzebami, dodatkowe wiersze dla filtra.

    Jeśli wiersze filtra nakładają się lub stwarzają konflikt, pierwszeństwo w stosowaniu mają specyfikacje obszarów kostki bardziej szczegółowe (przed mniej szczegółowymi) oraz prawa bardziej zezwalające (przed mniej zezwalającymi). Na przykład, jeśli użytkownikowi zostanie nadany dostęp "Odczyt" do elementu "Faktyczne" i dostęp "Zapis" do elementu "Styczeń" to użytkownik będzie miał dostęp "Zapis" do faktycznych wartości za styczeń.

  8. Nacisnąć przycisk Weryfikuj, aby upewnić się, że filtr jest poprawny.
  9. Kliknąć Zapisz.

Aby edytować filtr w interfejsie Redwood, zlokalizować kartę "Filtry", wybierając kostkę, a następnie wybierając stronę "Dostosowanie". Wówczas można edytować filtr, klikając w tym celu nazwę filtra i wprowadzając zmiany w edytorze filtrów. Aby edytować istniejący wiersz, kliknąć dwukrotnie w tym wierszu.

Aby edytować filtr w klasycznym interfejsie internetowym, przejść do karty "Filtry" w inspektorze i dokonać edycji filtra, klikając w tym celu nazwę filtra i wprowadzając zmiany w edytorze filtrów.

Filtr można skopiować lub usunąć; można też zmienić jego nazwę. Wystarczy wybrać z menu "Czynności", po prawej stronie nazwy filtra, odpowiednią opcję.

Po utworzeniu filtrów można przypisać je do użytkowników lub grup.

Tworzenie filtrów dynamicznych

Chcąc zmniejszyć liczbę wymaganych definicji filtrów, można tworzyć filtry dynamiczne, bazujące na zewnętrznych danych źródłowych.

Zamiast zarządzać zbiorem trwale zdefiniowanych filtrów dostępu do danych dla wielu użytkowników, można filtrować dostęp do komórek kostki pochodzących z zewnętrznych danych źródłowych, bazując na nazwach elementów i nazwach użytkowników.
W tym celu stosuje się składnię definicji filtra dynamicznego, w tym metodę @datasourceLookup oraz zmienne $LoginUser i $LoginGroup. Zewnętrznymi danymi źródłowymi są dane z pliku csv lub tabeli relacyjnej. Chcąc użyć danych ze źródła relacyjnego, można załadować plik csv do tabeli relacyjnej.

Składnia filtra dynamicznego

Używając składni filtra dynamicznego, można tworzyć elastyczne filtry, a następnie przypisywać je do wielu użytkowników i grup.

Wiersze filtra mogą jako część swojej definicji zawierać oprócz wyrażeń elementów poniższe zmienne i metody.

$loginuser

Zmienna ta przechowuje (w trybie wykonawczym) wartość określającą obecnie zalogowanego użytkownika. Może być używana w powiązaniu z metodą @datasourcelookup.

$logingroup

Zmienna ta przechowuje wartość wszystkich grup, do których należy obecnie zalogowany użytkownik. Obejmuje grupy zarówno bezpośrednie, jak i niebezpośrednie. Gdy jest używana wraz z metodą @datasourcelookup, każda z grup jest indywidualnie wyszukiwana w powiązaniu ze źródłem danych.

@datasourcelookup

Ta metoda pobiera rekordy ze źródła danych.

Składnia

@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)
Parametr Opis
dataSourceName

Nazwa zewnętrznego źródła danych zdefiniowanego w Essbase. W przypadku źródła danych poziomu aplikacji, należy tę nazwę poprzedzić nazwą aplikacji i kropką.

columnName

Nazwa kolumny ze źródła danych, w której ma być wyszukiwana podana columnValue.

columnValue

Wartość wyszukiwana w columnName.

returnColumnName

Nazwa kolumny ze źródła danych, z której ma zostać zwrócona lista wartości.

Opis

Wywołanie metody @datasourcelookup jest równoważne następującemu zapytaniu SQL:

select returnColumnName from dataSourceName where columnName=columnValue

@datasourcelookup wyszukuje podane źródło danych i wyszukuje w nim rekordy, w których  columnName zawiera columnValue. Jeśli jako columnValue zostanie użyta zmienna $loginuser, będą wyszukiwane rekordy, w których columnName zawiera nazwę obecnie zalogowanego użytkownika.

Essbase tworzy wiersz definicji filtra, łącząc elementy listy w łańcuch z pozycjami rozdzielonymi przecinkiem. Jeśli rekord zawiera znaki specjalne, spacje lub tylko liczby, to są one automatycznie ujmowane w cudzysłów.

Przykłady

Ujmowanie parametrów w cudzysłów.

Poniższe wywołanie wyszukuje globalne źródło danych i zwraca listę nazw sklepów, których kierownikiem jest Mary.

@datasourceLookup("StoreManagersDS","STOREMANAGER","Mary","STORE")

Poniższe wywołanie wyszukuje źródło danych poziomu aplikacji i zwraca listę nazw sklepów, których kierownikiem jest obecnie zalogowany użytkownik.

@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")

Poniższe wywołanie wyszukuje źródło danych poziomu aplikacji i zwraca listę nazw sklepów, w których dział "STORE_DEPARTMENT" jest zgodny z dowolną grupą, do której należy zalogowany użytkownik.

@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","$logingroup","STORE")

Jeśli zalogowany użytkownik należy do 3 grup, to powyższa metoda @datasourcelookup zwróci wszystkie zgodne wartości z kolumn dla każdej z grup.

Proces Workflow tworzenia filtrów dynamicznych

Do tworzenia filtrów dynamicznych można używać poniższej ogólnej procedury.

Przyjęto w niej założenie, że już istnieje kostka oraz zostali uaktywnieni użytkownicy i zostały uaktywnione grupy.

  1. Zidentyfikować, czy źródło danych jest plikiem czy źródłem relacyjnym.
  2. Zdefiniować połączenie i źródło danych w Essbase globalnie albo na poziomie aplikacji.
  3. Utworzyć filtry na poziomie kostki:
    • W interfejsie Redwood przejść do kostki, wybrać Dostosowanie, a następnie wybrać Filtry.
    • W klasycznym interfejsie internetowym użyć sekcji Filtry inspektora bazy danych.

  4. Zdefiniować dla każdego z filtrów wiersze filtrujące, używając składni filtra dynamicznego z wykorzystaniem — zgodnie z potrzebami — zmiennej $loginuser, zmiennej $logingroup i metody @datasourcelookup.
  5. Przypisać filtry do użytkowników lub grup.
  6. Jeśli przypisano filtr do grupy, przypisać grupę do aplikacji, która ma być filtrowana:
    • W interfejsie Redwood przejść do aplikacji, wybrać Dostosowanie, a następnie wybrać Uprawnienia.
    • W klasycznym interfejsie internetowym użyć sekcji Uprawnienia inspektora aplikacji.

Przykład filtra dynamicznego

Poniższy filtr dynamiczny działa z kostką Efficient.UserFilters, dostępną w galerii jako przykładowy szablon.


Filtr dynamiczny z trzema wierszami nadający zalogowanemu użytkownikowi prawo dostępu MetaRead.

Aby się dowiedzieć, jak utworzyć i zastosować ten filtr dynamiczny, należy pobrać skoroszyt szablonu Efficient_Filters.xlsx z sekcji "Techniczne" galerii, po czym postępować zgodnie z zawartymi w nim instrukcjami README. Galeria jest dostępna w sekcji Pliki internetowego interfejsu Essbase.