Funções

Aplica-se a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

As funções em modelos tabulares definem permissões de membro para um modelo. 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.

Para Azure Analysis Services e conjuntos de dados do Power BI, os usuários devem estar em sua ID de Microsoft Entra e os nomes de usuário e grupos especificados devem ser por endereço de email organizacional ou UPN. Para SQL Server Analysis Services, as funções contêm membros do usuário pelo nome de usuário do Windows ou por grupo do Windows e permissões (leitura, processo, administrador). Para Azure Analysis Services e modelos semânticos do Power BI, os usuários devem estar no Azure Active Directory e os nomes de usuário e grupos especificados devem ser por endereço de email organizacional ou UPN. Para SQL Server Analysis Services, as funções contêm membros do usuário pelo nome de usuário do Windows ou por grupo do Windows e permissões (leitura, processo, administrador).

Importante

Ao usar o Visual Studio para criar funções e adicionar usuários organizacionais a um projeto de modelo tabular que será implantado no Azure Analysis Services ou no Power BI, use o workspace Integrado.

Importante

Para que os usuários se conectem a um modelo implantado usando um aplicativo cliente de relatório, você deve criar pelo menos uma função com pelo menos permissão de Leitura para a qual esses usuários são membros.

As informações neste artigo destinam-se a autores de modelo de tabela que definem funções usando a caixa de diálogo Gerenciador de Funções no 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 o SSMS.

Noções básicas sobre funções

As funções são usadas no Analysis Services para gerenciar o acesso a dados de modelo. Existem dois tipos de funções:

  • A função de servidor, uma função fixa que fornece acesso de administrador a uma instância de servidor do Analysis Services. As funções de servidor não se aplicam ao Power BI. Em vez disso, o Power BI usa funções de workspace.

  • 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 que têm permissões específicas que definem a ação que esses membros podem executar no banco de dados modelo. Uma função é criada como um objeto separado no banco de dados e se aplica somente ao banco de dados no qual essa função é criada. Os usuários e grupos são incluídos na função pelo autor do modelo, que por padrão tem permissões de Administrador no servidor de banco de dados do workspace; para um modelo implantado, por um administrador.

As funções em modelos tabulares podem ser definidas com filtros de linha, também conhecidos como segurança em nível 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. No Power BI, as funções de modelo são definidas em Power BI Desktop e se aplicam somente à segurança em nível de linha. Para saber mais, confira Filtros de linha mais adiante neste artigo.

Por padrão, quando você cria um novo projeto de modelo tabular, o projeto não tem nenhuma função. As funções podem ser definidas usando a caixa de diálogo Gerenciador de Funções no SSDT. 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 os membros associados a cada função usando o SSMS.

Permissões

As permissões de função descritas nesta seção se aplicam somente a Azure Analysis Services e SQL Server Analysis Services. No Power BI, as permissões são definidas para o modelo semântico. Para saber mais, confira Gerenciar o acesso semântico ao modelo.

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 pode ser 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 SSMS. Os filtros de linha podem ser aplicados. Somente os dados especificados na fórmula DAX de filtro de linha possam ser consultados.
Processar 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 SSMS. 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 SSMS. Filtros de linha não são aplicáveis. Todos os dados podem ser consultados nesta função.

Observação

Membros com permissões de Leitura e Leitura e Processo podem consultar dados com base em filtros de linha, mas não podem ver o banco de dados modelo no SSMS. Os membros não podem fazer alterações no esquema de banco de dados modelo e não podem processar o modelo. No entanto, no SQL Server Analysis Services 2019 e anteriores, os membros podem usar DMVs para determinar definições de medida. SQL Server Analysis Services 2022 e posteriores bloqueiam o acesso a DMVs para melhorar a segurança.

Filtros de linha

Os filtros de linha, comumente conhecidos como segurança em nível de linha no Power BI, 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]=2020

O efeito líquido dessas permissões na tabela Transações é que os membros terão permissão para consultar linhas de dados em que o cliente está nos EUA, e a categoria de produto é bicicletas, e o ano é 2020. Os usuários não poderão consultar nenhuma transação fora dos EUA ou quaisquer transações que não sejam bicicletas ou quaisquer transações que não estejam em 2020, a menos que sejam membros de outra função que conceda essas permissões.

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

Para saber mais sobre as funções de modelo no Power BI, confira segurança em nível de linha no Power BI.

Segurança dinâmica

A segurança dinâmica fornece uma maneira de definir a segurança em nível de linha com base no nome de usuário do usuário conectado no momento ou na propriedade CustomData retornada de um 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:

='dimDepartment'[DepartmentId]=LOOKUPVALUE('dimEmployees'[DepartmentId], 'dimEmployees'[LoginId], USERNAME(), 'dimEmployees'[LoginId], 'dimDepartment'[DepartmentId])

A função LOOKUPVALUE retorna valores para a coluna dimEmployees[DepartmentId] em que o dimEmployees[LoginId] é o mesmo que o LoginID do usuário conectado no momento, retornado por USERNAME, e os valores para dimEmployees[DepartmentId] são os mesmos que os valores de dimDepartment[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

Funções de teste

Ao criar um projeto de modelo no Visual Studio, você pode usar o recurso Analisar no Excel para testar a eficácia das funções definidas. 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.

Funções de script

As funções para modelos implantados e modelos semânticos podem ser roteirizados usando a TMSL (Linguagem de Script de Modelo Tabular) para criar ou modificar o objeto Roles. Os scripts TMSL podem ser executados no SSMS ou usando o cmdlet Invoke-ASCmd do PowerShell.

Confira também

Criar e gerenciar funções
Perspectivas
Analisar no Excel
Função USERNAME (DAX)
Função LOOKUPVALUE (DAX)
Função CUSTOMDATA (DAX)