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:
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.
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.
Chcąc zmniejszyć liczbę wymaganych definicji filtrów, można tworzyć filtry dynamiczne, bazujące na zewnętrznych danych źródłowych.
@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.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.
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.
W klasycznym interfejsie internetowym użyć sekcji Filtry inspektora bazy danych.
$loginuser
, zmiennej $logingroup
i metody @datasourcelookup
.Poniższy filtr dynamiczny działa z kostką Efficient.UserFilters, dostępną w galerii jako przykładowy szablon.
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.