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.

  1. Navegue até o editor de filtro.
    1. Na Home page, abra o aplicativo e, em seguida, abra o banco de dados (cubo).
    2. Clique em Filtros.
  2. Clique em Adicionar.
  3. Digite um nome de filtro na caixa de texto Nome do Filtro.
  4. No Editor de Filtro, clique em Adicionar.
  5. Em Acesso, clique e use o menu drop-down para selecionar um nível de acesso.
    • Nenhum: Nenhum dado pode ser recuperado ou atualizado

    • Leitura: Os dados podem ser recuperados, mas não atualizados

    • Gravação: Os dados podem ser recuperados e atualizados

    • MetaRead: Metadados (nomes de dimensões e membros) podem ser recuperados e atualizados

      O nível de acesso MetaRead substitui todos os outros níveis de acesso. Filtros de dados adicionais são aplicados nos filtros MetaRead existentes. A filtragem de combinações de membros (usando relações AND) não se aplica ao nível de acesso MetaRead. MetaRead filtra cada membro separadamente (usando uma relação OR).

  6. Selecione a linha em Especificação do Membro e informe os nomes dos membros, em seguida, clique em Salvar.

    Você pode filtrar membros separadamente ou pode filtrar combinações de membros. Especifique nomes de dimensões ou membros, nomes de aliases, combinações de membros, conjuntos de membros que são definidos por funções ou nomes de variáveis de substituição precedidos de um E comercial (&). Separe múltiplas entradas por vírgulas.

  7. Crie linhas adicionais para o filtro, conforme necessário.

    Se as linhas do filtro se sobrepuserem ou entrarem em conflito, especificações mais detalhadas da área do cubo serão aplicadas sobre as especificações menos detalhadas e os direitos de acesso mais permissivos serão aplicados sobre os direitos de acesso menos permissivos. Por exemplo, se você fornecer um acesso de Leitura de usuário para acesso a Jan Real e de Gravação, o usuário terá acesso de Gravação a Jan Real.

  8. Clique em Validar para garantir que o filtro seja válido.
  9. Clique em Salvar.

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.

Em vez de gerenciar um conjunto de filtros de acesso a dados codificados para muitos usuários, você pode filtrar o acesso às células do cubo de dados de origem externos, com base nos nomes de membro e usuário.
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. 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.

  1. Identifique uma origem de dados, quer seja um arquivo ou uma origem relacional.
  2. Defina a conexão e a Origem de Dados no Essbase, seja globalmente ou no nível do aplicativo.
  3. Crie filtros no nível do cubo. Navegue até o cubo e escolha Filtros.
  4. 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 $logingroup e, se necessário, o método de @datasourcelookup.
  5. Designe os filtros a usuários ou grupos.
  6. 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.


Filtro dinâmico com três linhas concedendo acesso medido ao usuário conectado.

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.