Partilhar via


Funções (SSAS tabular)

Funções, em modelos tabulares, definem permissões de membro para um modelo. Cada função contém membros, por nome de usuário do Windows ou grupo do Windows, e permissões (leitura, processo, administrador). Membros da função podem executar ações no modelo conforme definido pela permissão de função. As funções definidas com permissões de leitura também podem fornecer segurança adicional no nível de linha usando filtros no nível de linha.

Importante

Para que os usuários conectem-se a um modelo implantado usando uma relação ou aplicativo cliente de análise de dados, você deve criar pelo menos uma função com pelo menos permissão de leitura da qual esses usuários são os membros.

As informações neste tópico destinam-se a autores de modelo de tabela que definem funções usando a caixa de diálogo Gerenciador de Funções no SQL Server Data Tools (SSDT). As funções definidas durante a criação do modelo aplicam-se ao banco de dados de workspace do modelo. Depois que um banco de dados modelo tiver sido implantado, os administradores de banco de dados modelo poderão gerenciar (adicionar, editar, excluir) membros da função usando SQL Server Management Studio. Para saber mais sobre como gerenciar membros de funções em um banco de dados implantado, consulte Funções de modelo de tabela (SSAS tabulares).

A Modelagem Tabular (Tutorial do Adventure Works) inclui informações adicionais e lições sobre como usar esse recurso.

Seções neste tópico:

Compreendendo funções

As funções são usadas no Microsoft SQL Server Analysis Services para gerenciar a segurança do Analysis Services e dos dados. Há dois tipos de funções no Analysis Services:

  • A função de servidor, uma função fixa que fornece acesso de administrador a uma instância do Analysis Services.

  • As funções de banco de dados, funções definidas por autores e administradores do modelo para controlar o acesso a banco de dados modelo e dados para usuários não administradores.

As funções, definidas para um modelo de tabela, são funções de banco de dados. Ou seja, as funções contêm membros que consistem em usuários ou grupos do Windows que têm permissões específicas que definem a ação que esses membros podem realizar no banco de dados modelo. Uma função de banco de dados é criada como um objeto separado no banco de dados e se aplica somente ao banco de dados no qual a função foi criada. Os usuários do Windows e/ou grupos do Windows são incluídos na função pelo autor modelo, que, por padrão, tem permissões de Administrador no servidor de banco de dados de workspace; para um modelo implantado, por um administrador.

As funções em modelos tabulares podem ser definidas posteriormente com filtros de linha. Os filtros de linha usam expressões DAX para definir as linhas em uma tabela, e as linhas relacionadas nas muitas direções, que um usuário pode consultar. Os filtros de linha que usam expressões DAX somente podem ser definidos para as permissões de Leitura e Leitura e Processo. Para obter mais informações, consulte Row Filters mais adiante neste tópico.

Por padrão, quando você cria um novo projeto de modelo de tabela, o projeto de modelo não tem nenhuma função. As funções podem ser definidas usando a caixa de diálogo Gerenciador de Funções no SQL Server Data Tools. Quando as funções são definidas durante a criação do modelo, elas são se aplicadas ao banco de dados de workspace do modelo. Quando o modelo é implantado, as mesmas funções são aplicadas ao modelo implantado. Depois que um modelo for implantado, os membros da função de servidor (Administrador do Analysis Services) e administradores de banco de dados poderão gerenciar as funções associadas ao modelo e aos membros associados a cada função usando SQL Server Management Studio.

Observação

As funções definidas para um modelo configurado para o modo DirectQuery não podem usar filtros de linha, porém, as permissões definidas para cada função serão aplicadas.

Permissões

Cada função tem uma única permissão de banco de dados definida (exceto para a permissão de Ler e Processar combinada). Por padrão, uma nova função terá a permissão Nenhum. Ou seja, quando os membros são adicionados à função com a permissão Nenhum, eles não podem modificar o banco de dados, executar uma operação de processo, consultar dados ou ver o banco de dados a menos que uma permissão diferente seja concedida.

Um grupo ou usuário do Windows pode ser um membro de qualquer número de funções, cada função com uma permissão diferente. Quando um usuário for um membro de várias funções, as permissões definidas para cada função serão cumulativas. Por exemplo, se um usuário for membro de uma função com permissão de leitura e também um membro de uma função com permissão Nenhum, ele terá permissão de leitura.

Cada função pode ter uma das seguintes permissões definidas:

Permissões Descrição Filtros de linha usando DAX
Nenhum Os membros não podem fazer modificações ao esquema de banco de dados modelo e não podem consultar dados. Filtros de linha não são aplicáveis. Os dados não são visíveis a usuários nesta função
Ler Os membros têm permissão de consultar dados (com base em filtros de linha), mas não podem ver o banco de dados modelo no SSMS, não podem fazer nenhuma alteração ao esquema de banco de dados modelo e o usuário não pode processar o modelo. Os filtros de linha podem ser aplicados. Somente os dados especificados na fórmula DAX de filtro de linha são visíveis a usuários.
Leitura e processo Os membros têm permissão de consultar dados (com base em filtros em nível de linha) e executar operações de processo por meio de um script ou pacote que contém um comando de processo, mas não pode fazer nenhuma alteração ao banco de dados. Não é possível exibir o banco de dados modelo no SQL Server Management Studio. Os filtros de linha podem ser aplicados. Somente os dados especificados na fórmula DAX de filtro de linha possam ser consultados.
Processo Os membros podem executar operações de processo por meio de um script ou pacote que contém um comando de processo. Não pode modificar o esquema de banco de dados modelo. Não é possível consultar dados. Não é possível consultar o banco de dados modelo no SQL Server Management Studio. Filtros de linha não são aplicáveis. Nenhum dado pode ser consultado nesta função
Administrador Os membros podem fazer modificações no esquema de modelo e podem consultar todos os dados no designer de modelo, no cliente de relatório e no SQL Server Management Studio. Filtros de linha não são aplicáveis. Todos os dados podem ser consultados nesta função.

Filtros de linha

Os filtros de linha definem quais linhas em uma tabela podem ser consultadas por membros de uma função específica. Os filtros de linha são definidos para cada tabela em um modelo usando fórmulas DAX.

Os filtros de linha podem ser definidos somente para funções com as permissões Ler e Ler e Processar. Por padrão, se um filtro de linha não for definido para uma tabela específica, os membros de uma função que têm permissão de Leitura ou Leitura e Processo poderão consultar todas as linhas na tabela a menos que a filtragem cruzada seja aplicada de outra tabela.

Quando um filtro de linha é definido para uma tabela específica, uma fórmula DAX, que deve ser avaliada como um valor TRUE/FALSE, define as linhas que poderão ser consultadas por membros daquela função específica. As linhas não incluídas na fórmula DAX não poderão ser consultadas. Por exemplo, para membros da função Vendas, a tabela Customers com a expressão de filtros de linha a seguir, =Customers [Country] = "USA", membros da função Vendas, só poderá ver clientes nos EUA.

Os filtros de linha aplicam-se às linhas especificadas e também a linhas relacionadas. Quando uma tabela tem várias relações, os filtros aplicam segurança para a relação ativa. Os filtros de linha serão intersectados com outros filtros de linha definidos para tabelas relacionadas, por exemplo:

Tabela Expressão DAX
Região = Região [País] = "USA"
ProductCategory = ProductCategory [Name] = "Bicicletas"
Transactions =Transactions[Year]=2008

O efeito líquido destas permissões na tabela de Transações é que os membros terão permissão de consultar as linhas de dados quando o cliente estiver nos EUA, e a categoria de produto for bicicletas e o ano for 2008. Os usuários não poderiam consultar nenhuma transação fora dos EUA ou nenhuma transação que não fosse bicicletas nem em 2008, a menos que fossem membros de outra função que concede estas permissões.

Você pode usar o filtro, =FALSE(), para negar o acesso a todas as linhas de uma tabela inteira.

Segurança dinâmica

A segurança dinâmica é um modo de definir a segurança de nível de linha com base no nome de usuário do usuário conectado no momento ou a propriedade CustomData retornada de uma cadeia de conexão. A fim de implementar uma segurança dinâmica, você deve incluir em seu modelo uma tabela com valores de logon (nome de usuário do Windows) para usuários, assim como um campo que pode ser usado para definir uma permissão específica; por exemplo, uma tabela dimEmployees com uma ID de logon (domínio\nome de usuário) e também um valor de departamento para cada funcionário.

Para implementar uma segurança dinâmica, você pode usar as funções a seguir como parte de uma fórmula DAX para retornar o nome de usuário do usuário conectado atualmente ou a propriedade CustomData em uma cadeia de conexão:

Função Descrição
Função USERNAME (DAX) Retorna o domínio\ nome de usuário do usuário conectado atualmente.
Função CUSTOMDATA (DAX) Retorna a propriedade CustomData em uma cadeia de conexão.

Você pode usar a função LOOKUPVALUE para retornar valores para uma coluna na qual o nome de usuário do Windows seja igual ao nome de usuário retornado pela função USERNAME ou uma cadeia de caracteres retornada pela função CustomData. As consultas podem ser então restritas onde os valores retornados por LOOKUPVALUE correspondem a valores na mesma tabela ou na tabela relacionada.

Por exemplo, usando esta fórmula:

='dimDepartmentGroup'[DepartmentGroupId]=LOOKUPVALUE('dimEmployees'[DepartmentGroupId], 'dimEmployees'[LoginId], USERNAME(), 'dimEmployees'[LoginId], 'dimDepartmentGroup'[DepartmentGroupId])

A função LOOKUPVALUE retorna valores para a coluna dimEmployees[DepartmentId] onde dimEmployees[LoginId] é igual ao LoginID do usuário conectado no momento, retornado por USERNAME, e os valores para dimEmployees[DepartmentId] são iguais aos valores para dimDepartmentGroup[DepartmentId]. Os valores em DepartmentId retornados por LOOKUPVALUE são usados para restringir as linhas consultadas na tabela dimDepartment, e as tabelas relacionadas por DepartmentId. Somente são retornadas as linhas onde DepartmentId também esteja nos valores para o DepartmentId retornados pela função LOOKUPVALUE.

dimEmployees

LastName Nome LoginID DepartmentName DepartmentId
Brown Kevin Adventure-works\kevin0 Marketing 7
Bradley Davi Adventure-works\david0 Marketing 7
Dobney JoLynn Adventure-works\JoLynn0 Produção 4
Baretto DeMattos Paula Adventure-works\Paula0 Human Resources 2

dimDepartment

DepartmentId DepartmentName
1 Corporativo
2 Executive General and Administration
3 Gerenciamento de estoque
4 Produção
5 Garantia de qualidade
6 Pesquisa e desenvolvimento
7 Vendas e marketing

Testando funções

Ao criar um projeto de modelo, você pode usar o recurso Analisar no Excel para testar a eficácia das funções que você definiu. No menu Modelo no designer de modelo, quando você clica em Analisar no Excel, antes de o Excel abrir, a caixa de diálogo Escolher Credenciais e Perspectiva é aberta. Nesta caixa de diálogo, você pode especificar o nome de usuário atual, um nome de usuário diferente, uma função e uma perspectiva que você usará para se conectar ao modelo de workspace como uma fonte de dados. Para obter mais informações, consulte Analisar no Excel (SSAS Tabular).

Related Tasks

Tópico Descrição
Criar e Gerenciar Funções (SSAS tabular) As tarefas neste tópico descrevem como criar e gerenciar funções usando a caixa de diálogo Gerenciador de Funções .

Consulte Também

Perspectivas (SSAS tabular)
Analisar no Excel (SSAS tabular)
Função USERNAME (DAX)
Função LOOKUPVALUE (DAX)
Função CUSTOMDATA (DAX)