С помощью фильтров можно контролировать доступ к значениям данных в кубе. Фильтры - наиболее тонкая настройка уровней безопасности.
При создании фильтра создается набор ограничений для определенных ячеек или диапазона ячеек куба. Затем можно назначить фильтр пользователям или группам.
Возможность создавать, назначать, редактировать, копировать, переименовывать или удалять фильтры зависит от вашей собственной роли безопасности.
Для куба можно создать несколько фильтров. При редактировании фильтров внесенные изменения наследуются всеми пользователями этого фильтра.
См. раздел "Контроль доступа к ячейкам базы данных с помощью фильтров безопасности".
Чтобы отредактировать фильтр в интерфейсе Redwood, найдите вкладку "Фильтры". Для этого выберите сначала куб, а затем страницу "Настройка". После этого измените фильтр: нажмите на его имя и внесите изменения в редакторе фильтров. Двойное нажатие на строку позволяет изменить ее содержимое.
Чтобы изменить фильтр в классическом веб-интерфейсе, на вкладке "Фильтры" в инспекторе нажмите на его имя и внесите изменения в редакторе фильтров.
Чтобы скопировать, переименовать или удалить фильтр, можно открыть меню "Действия" справа от имени фильтра и выбрать нужную команду.
После создания фильтров назначьте их пользователям или группам.
Чтобы сократить число необходимых определений фильтров, можно создать динамические фильтры на основе данных внешнего источника.
@datasourceLookup
и переменные $LoginUser
и $LoginGroup
. Данные внешнего источника представляют собой файл .csv или реляционную таблицу. Если используется реляционный источник данных, можно загрузить файл .csv в реляционную таблицу.Используя синтаксис динамических фильтров, создавайте гибкие фильтры, которые можно назначить нескольким пользователям и группам.
Наряду с регулярными выражениями элементов определения строк фильтров могут содержать указанные ниже элементы.
$loginuser
Эта переменная хранит значение текущего вошедшего пользователя в среде выполнения. Ее можно использовать совместно с методом @datasourcelookup
.
$logingroup
В этой переменной сохраняется значение всех групп, к которым относится текущий пользователь, вошедший в систему. Сюда входят как прямые, так и непрямые группы. При использовании в сочетании с методом @datasourcelookup
каждая группа по отдельности ищется в источнике данных.
@datasourcelookup
Этот метод извлекает записи из источника данных.
Синтаксис
@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)
Параметр | Описание |
---|---|
dataSourceName |
Имя внешнего источника данных, заданное в Essbase. Для источника данных на уровне приложения необходимо добавить в качестве префикса имя приложения с точкой. |
columnName |
Имя столбца источника данных для поиска данного значения columnValue. |
columnValue |
Значение, которое ищется в столбце columnName. |
returnColumnName |
Имя столбца источника данных, из которого возвращается список значений. |
Описание
Вызов метода @datasourcelookup аналогичен этому запросу SQL:
select returnColumnName from dataSourceName where columnName=columnValue
@datasourcelookup ищет заданный источник данных и записи, где columnName содержит columnValue. Если параметр columnValue задан как $loginuser
, этот метод ищет записи, где columnName содержит имя текущего вошедшего пользователя.
Essbase формирует строку определения фильтра, объединяя элементы списка в строку с разделителями-запятыми. Если запись содержит специальные символы, пробелы или только числа, они заключаются в кавычки.
Примеры
Заключайте параметры в кавычки.
Указанный ниже вызов ищет данные в глобальном источнике данных и возвращает список названий магазинов, где управляющую зовут Мэри.
@datasourceLookup("StoreManagersDS","STOREMANAGER","Mary","STORE")
Указанный ниже вызов ищет данные в источнике данных на уровне приложения и возвращает список названий магазинов, где текущий вошедший пользователь является управляющим магазина.
@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")
При указанном ниже вызове выполняется поиск данных в источнике данных на уровне приложений и возвращается список названий магазинов, в котором отдел магазина сопоставляется любой группе, к которой относится вошедший в систему пользователь.
@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","$logingroup","STORE")
Если вошедший в систему пользователь входит в 3 группы, метод @datasourcelookup
возвращает все сопоставленные значения столбцов для каждой группы.
Ниже приведена общая процедура создания динамических фильтров.
Эта процедура использования динамических фильтров подразумевает наличие куба, пользователей и групп, которым предоставлены определенные права.
В классическом веб-интерфейсе воспользуйтесь разделом Фильтры в инспекторе базы данных.
$loginuser
, $logingroup
и метод @datasourcelookup
.Этот динамический фильтр взаимодействует с кубом Efficient.UserFilters, который доступен в галерее в виде шаблона.
Чтобы узнать, как создать и применить этот динамический фильтр, выгрузите шаблон рабочей книги Efficient_Filters.xlsx
из раздела галереи "Технические" и следуйте инструкциям README в рабочей книге. Галерея доступна в разделе Файлы веб-интерфейса Essbase.