Filtrar Acesso aos Dados
Os filtros controlam o acesso de segurança aos valores de dados no cubo do Essbase. Os filtros são a forma mais granular de segurança disponível. Os filtros designam um conjunto de restrições em células de cubo específicas ou em uma faixa de células. Administradores ou gerentes atribuem o filtro para regular o acesso de usuários ou grupos.
Sua própria atribuição de segurança determina se você pode criar, designar, editar, copiar, renomear ou excluir filtros:
- Se você tiver a atribuição Gerente de Aplicativos, poderá gerenciar qualquer filtro para qualquer usuário ou grupo. Os filtros não afetam você.
- Se você tiver a atribuição Atualização de Banco de Dados, poderá gerenciar filtros para os aplicativos que você criou.
- Se você tiver a atribuição Gerente de Banco de Dados, poderá gerenciar filtros dentro de seus aplicativos ou cubos.
- Se você tiver a atribuição Acesso ao Banco de Dados (padrão), terá acesso de leitura aos valores de dados em todas as células, a menos que seu acesso seja mais restrito por filtros.
Criar um Filtro usando a interface web do Essbase
Na seção de personalização do banco de dados da interface Web do Essbase, você pode criar um filtro de segurança que restrinja o acesso do cubo a usuários ou grupos.
Você pode criar múltiplos filtros para um cubo. Se você editar um filtro, as modificações feitas em sua definição serão herdadas por todos os usuários desse filtro.
Para editar um filtro, selecione o cubo e clique na opção Filtros no painel esquerdo. Em seguida, edite o filtro clicando no nome dele e fazendo suas alterações no editor de filtro. Para editar uma linha existente, clique duas vezes nessa linha.
Você pode copiar, renomear ou excluir um filtro clicando no menu Ações à direita do nome do filtro e escolhendo uma opção.
Depois de criar filtros, atribua-os a usuários ou grupos.
Consulte Controlando o Acesso a Células do Banco de dados Usando Filtros de Segurança.
Criar Filtros Dinâmicos Eficientes
Você pode criar filtros dinâmicos com base em dados de origem externos para reduzir o número de definições de filtro necessárias.
@datasourceLookup e as variáveis $LoginUser e $LoginGroup. Seus dados de origem externos são um arquivo csv ou uma tabela relacional. Para dados de origem relacionais, você pode carregar o .csv para uma tabela relacional.
Sintaxe de Filtro Dinâmico
Use a sintaxe de filtro dinâmico para criar filtros flexíveis que você possa designar a diversos usuários e grupos.
As linhas de filtro podem conter os seguintes elementos como parte de sua definição, além das expressões de membro.
$loginuser
Essa variável armazena o valor do usuário atual conectado no runtime. Ela pode ser usada em conjunto com o método @datasourcelookup.
$logingroup
Essa variável armazena o valor de todos os grupos aos quais o usuário atual conectado pertence. Ela inclui grupos diretos e indiretos. Quando usado em conjunto com o método @datasourcelookup, cada grupo é pesquisado individualmente na Origem de Dados.
@datasourcelookup
Esse método extrai registros de uma Origem de Dados.
Sintaxe
@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)| Parâmetro | Descrição |
|---|---|
| dataSourceName |
O nome da Origem de Dados externa definida no Essbase. Para uma Origem de Dados no nível do aplicativo, prefixe o nome com o nome do aplicativo e um ponto. |
| columnName |
O nome da coluna Origem de Dados para procurar um determinado columnValue. |
| columnValue |
O valor a ser pesquisado no columnName. |
| returnColumnName |
O nome da coluna Origem de Dados da qual retornar uma lista de valores. |
Observação:
Os nomes de coluna da origem de dados não devem usar palavras reservadas SQL, como USER, GROUP ou ROLE. O uso de palavras reservadas pode resultar em erros de parsing de SQL ou comportamento de filtro inesperado.Descrição
Uma chamada @datasourcelookup é equivalente à seguinte consulta SQL:
select returnColumnName from dataSourceName where columnName=columnValue@datasourcelookup procura a Origem de dados e procura registros em que columnName contém columnValue. Se você especificar columnValue como $loginuser, esse método procurará registros nos quais columnName contém o nome do usuário conectado no momento.
O Essbase forma a linha de definição de filtro, combinando os elementos da lista como uma string separada por vírgula. Se qualquer registro contiver caracteres especiais, espaços ou somente números, será colocado entre aspas.
Observação:
O parâmetro @options pode ser usado para controlar o comportamento de falha de consulta. Quando strictLookup=true, as falhas de pesquisa são tratadas como erros fatais e nenhum resultado de filtro é retornado.Exemplos de
Coloque os parâmetros entre aspas.
A seguinte chamada consulta uma Origem de Dados global e retorna uma lista de nomes de loja onde Mary é a gerente.
@datasourceLookup("StoreManagersDS","STOREMANAGER","Mary","STORE")A seguinte chamada consulta uma Origem de Dados no nível do aplicativo e retorna uma lista de nomes de loja onde o usuário atualmente conectado é o gerente.
@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")A seguinte chamada consulta uma Origem de Dados no nível do aplicativo e retorna uma lista de nomes de loja onde o departamento da loja corresponde a qualquer um dos grupos aos quais o usuário conectado pertence.
@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","$logingroup","STORE")Se o usuário conectado pertencer a 3 grupos, o método @datasourcelookup acima retornará todos os valores de coluna correspondentes para cada grupo.
O exemplo a seguir usa funções SQL em uma expressão de filtro dinâmico.
@datasourceLookup("Sample.StoreManagersDS",LOWER(CAST("STOREMANAGER" AS VARCHAR(30))),LOWER("$loginuser"),"STORE")O exemplo a seguir executa a avaliação com distinção entre maiúsculas e minúsculas usando funções de maiúsculas e minúsculas explícitas.
@datasourceLookup("Sample.StoreManagersDS",UPPER("STOREMANAGER"),UPPER("$loginuser"),"STORE")O exemplo a seguir retorna lojas pertencentes ao departamento de Vendas ou Marketing.
@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","Sales","Marketing","STORE")O exemplo a seguir usa uma função de conjunto de membros com @datasourceLookup.
@DESCENDANTS(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE"))O exemplo a seguir usa funções de conjunto de membros aninhadas com uma pesquisa de origem de dados.
@CHILDREN(@LSIBLING(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")))O exemplo a seguir usa comportamento de pesquisa estrito. Se a pesquisa falhar, nenhum resultado de filtro será retornado.
@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE",@options(strictLookup=true))Workflow para Criar Filtros Dinâmicos
Use o seguinte workflow geral para criar filtros dinâmicos.
Esse workflow de filtros dinâmicos presume que você já tenha um cubo, além de usuários e grupos provisionados.
- Identifique uma origem de dados, quer seja um arquivo ou uma origem relacional.
- Defina a conexão e a Origem de Dados no Essbase, seja globalmente ou no nível do aplicativo.
- Crie filtros no nível do cubo. Navegue até o cubo e escolha Filtros.
- Defina linhas de filtro para cada filtro, usando a sintaxe do filtro dinâmico para empregar a variável de
$loginuser, a variável de$logingroupe, se necessário, o método de@datasourcelookup. - Designe os filtros a usuários ou grupos.
- Se você tiver atribuído o filtro a um grupo, atribua o grupo ao aplicativo a ser filtrado. Navegue até o aplicativo e escolha Permissões.
Exemplo de um Filtro Dinâmico
O filtro dinâmico a seguir funciona com o cubo chamado Efficient.UserFilters, disponível na galeria como modelo de amostra.

Para saber como criar e aplicar esse filtro dinâmico, faça download do modelo do arquivo de trabalho, Efficient_Filters.xlsx, na seção Técnica da galeria, e siga as instruções README no arquivo de trabalho. A galeria está disponível na seção Arquivos da interface Web do Essbase.