Compartilhar via


Concedendo acesso personalizado aos dados da célula (Analysis Services)

A segurança de célula é usada para permitir ou negar acesso a dados de medida em um cubo. A ilustração a seguir mostra uma combinação de medidas permitidas e negadas em uma PivotTable, quando você se conecta como usuário cuja função permite acesso a determinadas medidas. Neste exemplo, Valor de Vendas do Revendedor e Custo Total do Produto do Revendedor são as únicas medidas disponíveis por meio dessa função. Todas as outras medidas são implicitamente negadas (as etapas usadas para obter esse resultado são fornecidas abaixo na próxima seção, Permitir acesso a medidas específicas).

Pivottable mostrando células permitidas e negadas

As permissões de célula se aplicam aos dados dentro da célula e não aos seus metadados. Observe como a célula ainda está visível nos resultados de uma consulta, exibindo um valor de #N/A em vez do valor real da célula. O valor #N/A aparecerá na célula a menos que o aplicativo cliente converta o valor, ou outro valor seja especificado definindo a propriedade Secured Cell Value na cadeia de caracteres de conexão.

Para ocultar a célula completamente, limite os membros — dimensões, atributos da dimensão e membros do atributo de dimensão — que estão visíveis. Para obter mais informações, consulte Conceder acesso personalizado aos dados da dimensão (Analysis Services).

Como administrador, você pode especificar se os membros da função têm permissões de leitura, contingente de leitura ou leitura/gravação nas células de um cubo. Colocar permissões em uma célula é o menor nível de segurança permitido, por isso antes de começar a aplicar permissões nesse nível é importante considerar o seguinte:

  • A segurança no nível da célula não pode expandir direitos que foram restritos a um nível superior. Um exemplo: se uma função negar acesso a dados da dimensão, a segurança no nível da célula não pode substituir o conjunto negado. Outro exemplo: considerar uma função com permissão de Leitura em um cubo e permissão de Leitura/Gravação em uma célula ─ a permissão de dados celular não será Leitura/Gravação, será Leitura.

  • Muitas vezes, permissões personalizadas precisam ser coordenadas entre os membros e células da dimensão dentro da mesma função. Por exemplo, suponha que você queira negar acesso a várias medidas relacionadas a desconto, para diferentes combinações de revendedores. Considerando Revendedores como os dados da dimensão e Valor de Desconto como uma medida, você precisaria combinar dentro das mesmas permissões de função sobre a medida (usando as instruções deste tópico) e sobre os membros de dimensão. Consulte Conceder acesso personalizado aos dados da dimensão (Analysis Services) para obter detalhes sobre a definição de permissões de dimensão.

A segurança no nível da célula é especificada com expressões MDX. Como uma célula é uma tupla (ou seja, um ponto de intersecção entre dimensões e medidas potencialmente múltiplas), é necessário usar MDX para identificar células específicas.

Permitir acesso a medidas específicas

Você pode usar a segurança de célula para escolher explicitamente quais medidas estão disponíveis. Quando você identificar especificamente quais os membros têm permissão, todas as outras medidas tornam-se indisponíveis. Esse é provavelmente o cenário mais simples para implementar via script MDX, como as etapas a seguir ilustram.

  1. Em SQL Server Management Studio conecte-se à instância do Analysis Services, selecione um banco de dados, abra a pasta Funções e clique na função de banco de dados (ou crie uma nova função de banco de dados). A associação já deverá estar especificada e a função deve ter Read acesso ao cubo. Consulte Conceder permissões de cubo ou modelo (Analysis Services) se precisar de ajuda com essa etapa.

  2. Em Dados da Célula, verifique a seleção do cubo para confirmar se escolheu o caminho certo e selecione Habilitar permissões de leitura.

    Se você marcar apenas essa caixa de seleção e não fornecer uma expressão MDX, o efeito é o mesmo que negar acesso a todas as células no cubo. Isso acontece porque o conjunto padrão permitido é um conjunto vazio quando Analysis Services soluciona um subconjunto de células de cubo.

  3. Insira a expressão MDX a seguir.

    (Measures.CurrentMember IS [Measures].[Reseller Sales Amount]) OR (Measures.CurrentMember IS [Measures].[Reseller Total Product Cost])
    

    Essa expressão identifica explicitamente quais medidas os usuários podem ver. Nenhuma outra medida estará disponível para os usuários que se conectarem com essa função. Observe que a expressão Função CurrentMember (MDX) define o contexto e é seguida pela medida que é permitida. O efeito dessa expressão, se o membro atual incluir o Valor de Vendas do Revendedor ou o Custo Total do Produto do Revendedor, é mostrar o valor. Caso contrário, negar acesso. A expressão tem várias partes, com cada parte entre parênteses. O operador OR é usado para especificar várias medidas.

Negar acesso a medidas específicas

A seguinte expressão MDX, também especificada em Criar Função | Dados da Célula | Permitir leitura do conteúdo do cubo, tem o efeito oposto, tornando certas medidas indisponíveis. Neste exemplo, tornamos o Valor de Desconto e Percentual de Desconto indisponíveis usando os operadores NOT e AND. Todas as outras medidas serão visíveis para os usuários que se conectarem com essa função.

(NOT Measures.CurrentMember IS [Measures].[Discount Amount]) AND (NOT Measures.CurrentMember IS [Measures].[Discount Percentage])

No Excel, a segurança da célula é evidente na ilustração a seguir:

Colunas do Excel mostrando células como não disponíveis

Definir permissões de leitura em medidas calculadas

Você pode definir as permissões em uma medida calculada de forma independente das partes que a constituem. Avance para a próxima seção sobre contingente de leitura se desejar coordenar permissões entre uma medida calculada e suas medidas dependentes.

Para entender como as permissões de leitura funcionam para uma medida calculada, considere o Lucro Bruto do Revendedor no AdventureWorks. Ela é derivada das medidas Valor de Vendas do Revendedor e Custo Total do Produto do Revendedor. Enquanto um função tiver permissão de leitura em células Lucro Bruto do Revendedor, essa medida pode ser visualizada, mesmo que as permissões sejam expressamente negadas nas outras medidas. Como demonstração, copie a seguinte expressão MDX em Criar Função | Dados da Célula | Permitir leitura do conteúdo do cubo.

(NOT Measures.CurrentMember IS [Measures].[Reseller Sales Amount])
AND (NOT Measures.CurrentMember IS [Measures].[Reseller Total Product Cost])

No Excel, conecte-se ao cubo usando a função atual e escolha as três medidas para ver os efeitos de segurança da célula. Observe que as medidas do conjunto negado não estão disponíveis, mas o usuário pode ver a medida calculada.

Tabela do Excel com células disponíveis e não disponíveis

Definir permissões de contingente de leitura em medidas calculadas

A segurança no nível da célula oferece uma alternativa, contingente de leitura, para definir permissões nas células relacionadas participantes de um cálculo. Considere novamente o exemplo Lucro Bruto do Revendedor. Quando você insere a mesma expressão MDX fornecida na seção anterior, colocada nesse momento na segunda área de texto da caixa de diálogo Criar Função | Dados da Célula (na área de texto abaixo Permitir leitura do conteúdo da célula contingente na segurança da célula), o resultado é aparente quando exibido no Excel. Como o Lucro Bruto do Revendedor depende do Valor de Vendas do Revendedor e Custo Total do Produto do Revendedor, o lucro bruto não pode ser acessado porque suas partes constituintes estão inacessíveis.

ObservaçãoObservação

O que acontece se você definir as permissões Leitura e Contingente de Leitura em uma célula dentro da mesma função? A função fornecerá permissões de leitura na célula, não de Contingente de Leitura.

Lembre-se que marcar apenas a caixa de seleção Habilitar permissões de contingente de leitura, sem fornecer qualquer expressão MDX, nega acesso a todas as células do cubo. Isso acontece porque o conjunto padrão permitido é um conjunto vazio quando Analysis Services soluciona um subconjunto de células de cubo.

Definir permissões de Leitura/Gravação em uma célula

As permissões de leitura/ gravação em uma célula são usadas ​​para habilitar o write-back, desde que os membros tenham permissões de leitura/gravação para o cubo. As permissões que são concedidas no nível de célula não podem ser maiores que as permissões que concedidas no nível de cubo. Para obter detalhes, consulte Definir o write-back de partições.

Consulte também

Tarefas

Conceder permissões de processo (Analysis Services)

Conceder permissões em uma dimensão (Analysis Services)

Conceder acesso personalizado aos dados da dimensão (Analysis Services)

Referência

Caixa de diálogo Construtor MDX (Analysis Services - Dados Multidimensionais)

Conceitos

O script básico de MDX (MDX)

Conceder permissões de cubo ou modelo (Analysis Services)