Criar Filtros
É possível criar um filtro para cada conjunto de restrições de acesso que você precisa colocar nos valores do banco de dados do Essbase. Não é necessário criar filtros separados para usuários com as mesmas necessidades de acesso. Depois de criar um filtro, você poderá designá-lo a vários usuários ou grupos de usuários.
Observação:
Se você usar uma função de cálculo que retorne um conjunto de membros, como filhos ou descendentes, e ela for avaliada como um conjunto vazio, o filtro de segurança não será criado. Um erro é gravado no log do aplicativo informando que a definição da região foi avaliada em um conjunto vazio.
Antes de criar um filtro, execute as seguintes ações:
-
Conecte-se ao servidor e selecione o banco de dados associado ao filtro.
-
Verifique as regras de nomenclatura para filtros em Limites.
Consulte Criar Filtros.
Para criar um filtro, você também pode usar a instrução create filter MaxL.
Filtrar membros versus filtrar combinações de membros
O acesso aos valores do banco de dados do Essbase pode ser controlado pela filtragem de membros inteiros ou pela filtragem de combinações de membros. A filtragem de membros afeta separadamente segmentos inteiros de dados para esses membros. A filtragem de combinações de membros afeta os dados nas interseções de membros.
Figura 30-1 Como os Filtros Afetam os Relacionamentos de Dados E/OU

Observação:
A filtragem em combinações de membros (relacionamento E) não se aplica ao metaread. O Metaread filtra cada membro separadamente (relacionamento OR).
Filtrar Membros Separadamente
Para filtrar todos os dados de um ou mais membros do outline do Essbase, defina o acesso para cada membro em sua própria linha. As definições de filtro em linhas separadas de um filtro são tratadas com uma relação OR.
Por exemplo, para bloquear o acesso ao Sales ou Jan, suponha que o usuário KSands receba o seguinte filtro:
-
Acesso: Nenhum. Especificação do membro: Vendas.
-
Acesso: Nenhum. Especificação do membro: Jan.
Na próxima vez que o usuário KSands se conectar ao Sample Basic, sua exibição de planilha da margem de lucro para o Trimestre 1 mostrará que ela não tem acesso aos valores de dados do membro Vendas ou do membro Jan, marcados com #NOACCESS. Todos os dados de Vendas são bloqueados da exibição, bem como todos os dados de janeiro, dentro e fora do membro de Vendas. Os dados de COGS (Custo de Mercadorias Vendidas), um irmão de Vendas e um filho de Margem, estão disponíveis, com exceção de COGS para janeiro.
Figura 30-2 Resultados do Filtro Bloqueando o Acesso a Vendas ou Jan

Filtrar Combinações de Membros
Para filtrar dados para combinações de membros do Essbase, defina o acesso para cada combinação de membros usando uma linha no Editor de Filtro. Em definições de filtro, dois conjuntos de membros separados por uma vírgula são tratados como união desses dois conjuntos de membros (um relacionamento AND).
Por exemplo, suponha que o usuário RChin receba o seguinte filtro: Acesso: Nenhum. Especificação do membro: Vendas, Jan.
Na próxima vez que o usuário RChin se conectar ao Sample Basic, sua exibição de planilha da margem de lucro para o trimestre 1 mostrará que ela não tem acesso ao valor de dados na interseção de membros Sales e Jan, que é marcada com #NoAccess. Os dados de vendas de janeiro estão bloqueados da exibição. No entanto, os dados de Vendas de outros meses estão disponíveis e os dados de não Vendas de janeiro estão disponíveis.
Figura 30-3 Resultados do Filtro Bloqueando o Acesso às Vendas, Jan

Filtrar Usando Variáveis de Substituição
As variáveis de substituição do Essbase permitem que você gerencie informações que são alteradas regularmente. Cada variável tem um nome e um valor atribuídos. Um Database Manager pode alterar o valor a qualquer momento. Quando uma variável de substituição é especificada em um filtro, o valor no momento em que os dados são acessados é aplicado.
Por exemplo, se você quiser que um grupo de usuários veja dados somente para o mês atual, poderá configurar uma variável de substituição chamada CurMonth e definir um filtro (MonthlyAccess) no qual você especifica o acesso, usando &CurMonth para o nome do membro. O uso de um E comercial (&) no início de uma especificação o identifica como uma variável de substituição em vez de um nome de membro para o Essbase. Atribua o filtro MonthlyAccess aos usuários apropriados.
A cada mês, você precisa alterar apenas o valor da variável de substituição CurMonth para o nome do membro do mês atual, como Jan, Fev e assim por diante. O novo valor será aplicado a todos os usuários atribuídos.
Filtrar com Funções de Atributo
Você pode usar filtros para restringir o acesso aos dados do Essbase para membros base que compartilham um atributo específico. Para filtrar dados de membros com atributos específicos definidos em uma dimensão de atributo, use o membro de atributo em combinação com a função @ATTRIBUTE ou a função @WITHATTR.
Observação:
@@ATTRIBUTE e @WITHATTR são funções de conjunto de membros. A maioria das funções do conjunto de membros pode ser usada em definições de filtro.
Por exemplo, suponha que o usuário PJones receba este filtro: Acesso: Nenhum. Especificação do membro: @ATTRIBUTE("Caffeinated_False").
Na próxima vez que o usuário PJones se conectar ao Sample Basic, sua exibição de planilha de vendas de cola no primeiro trimestre na Califórnia mostrará que ele não tem acesso aos valores de dados de nenhum membro de dimensão base associado ao Caffeinated_False. Os dados de vendas do Caffeine Free Cola estão bloqueados. Observe que Caffeine Free Cola é um membro base, e Caffeinated_False é um membro associado da dimensão de atributo Caffeinated (não mostrado na exibição de planilha).
Figura 30-4 Resultados do bloqueio de filtros de acesso a produtos sem cafeína

Filtros de Metadados
A filtragem de metadados fornece filtragem de dados e uma camada adicional de segurança. Com a filtragem de metadados, um administrador do Essbase pode remover membros do outline da view de um usuário, fornecendo acesso somente aos membros que são de interesse do usuário.
Quando um filtro é usado para aplicar a permissão MetaRead em um membro:
-
Os dados de todos os antecessores desse membro são ocultados da exibição do usuário do filtro.
-
Dados e metadados (nomes de membros) de todos os irmãos desse membro estão ocultos na exibição do usuário do filtro.
Filtros Dinâmicos
Você pode criar filtros de segurança dinâmicos do Essbase com base em dados de origem externa, para reduzir o número de definições de filtro necessárias. Você faz isso usando uma sintaxe de definição do filtro dinâmico, incluindo o método @datasourceLookup e as variáveis $LoginUser e $LoginGroup.
Observação:
Os filtros dinâmicos suportam funções SQL, como LOWER, UPPER e CAST, incluindo expressões aninhadas. Você pode usar essas funções diretamente com as funções do conjunto de membros para criar definições de filtro de acesso mais flexíveis e precisas.
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.