Inserir um relatório em um SSAS (SQL Server Analysis Services) local

APLICA-SE A: Aplicativo possui dados O usuário possui dados

Este artigo explica como inserir o conteúdo do Power BI com uma conexão dinâmica do Modelo tabular do Analysis Serviceslocal em um aplicativo padrão do Power BI que tem um aplicativo de dados. Este artigo se aplica a todos os modelos do SSAS de conexão dinâmica, implementando ou não o RLS.

Nesse cenário, o banco de dados está no modelo do SSAS (local) e o mecanismo do Power BI se conecta a ele por meio de um gateway. As RLS (funções de segurança) e as permissões, se houver alguma, são definidas no modelo do SSAS e não no Power BI Desktop.

Para quem este artigo é direcionado

Este artigo é relevante principalmente para ISVs que já têm uma configuração de banco de dados (SSAS) local (com ou sem RLS) e desejam inserir conteúdo diretamente nele.

Configuração do ISV

A segurança em nível de linha local só está disponível com uma conexão dinâmica, mas você pode criar uma conexão dinâmica com qualquer banco de dados, implementando ou não o RLS. Isso inclui:

  • Bancos de dados sem funções RLS configuradas
  • Bancos de dados com membros que pertencem a uma ou mais funções
  • Bancos de dados com funções de segurança estáticas ou dinâmicas

Para inserir um relatório com um modelo do SSAS, você precisa executar as seguintes ações:

  1. Configurar o gateway
  2. Criar uma conexão dinâmica
  3. Gerar um token de inserção

Configurar o gateway

Adicionar uma conexão de fonte de dados ao gateway do SSAS

Insira o nome da fonte de dados, o tipo de fonte de dados, o servidor, o banco de dados, um nome de usuário e a senha reconhecidos pelo Active Directory.

Para obter mais informações sobre como criar e gerenciar um gateway, confira Adicionar ou remover uma fonte de dados do gateway.

Conceder permissões à entidade de serviço ou ao usuário mestre no gateway

O usuário que gera o token de inserção também precisa de uma das seguintes permissões:

  • Permissões de administrador do gateway

  • Permissão de representação da fonte de dados (ReadOverrideEffectiveIdentity)

    Os usuários com permissão de representação (substituição) têm um ícone de chave ao lado do nome.

    Screenshot of a gateway member with a key icon next to their name.

Siga estas instruções para conceder permissões de gateway ao seu usuário mestre, entidade de serviço ou perfil da entidade de serviço.

Mapear nomes de usuário

Se os nomes de usuário no diretório local e no diretório do Microsoft Entra forem diferentes e você quiser exibir dados no portal, será necessário criar uma tabela de mapeamento de usuário que mapeie cada usuário ou função no Microsoft Entra ID para usuários do banco de dados local. Para obter instruções sobre como mapear nomes de usuário, acesse o Remapeamento do nome de usuário manual

Para obter mais informações, confira Mapear nomes de usuário para fontes de dados do Analysis Services.

Criar uma conexão dinâmica

Depois que o ambiente for configurado, crie uma conexão dinâmica entre o Power BI Desktop e o SQL Server e crie seu relatório.

  1. Inicie o Power BI Desktop e selecione Obter dados>Banco de Dados.

  2. Na lista de fontes de dados, selecione o Banco de Dados do SQL Server Analysis Services e selecione Conectar.

    Connect to SQL Server Analysis Services Database.

  3. Preencha os detalhes da instância de tabela do Analysis Services e selecione Conexão dinâmica. Selecione OK.

    Screenshot of Analysis Services details.

Gerar um token de inserção

Para inserir seu relatório no cenário de inserção para seus clientes, gere um token de inserção que passa a identidade efetiva para o Power BI. Todas as conexões dinâmicas com mecanismos do AS precisam de uma identidade efetiva, mesmo que não haja nenhum RLS implementado.

Se não houver nenhum RLS configurado, somente o administrador terá acesso ao banco de dados, então é desejável usar o administrador como a identidade efetiva.

As informações necessárias para gerar um token de inserção dependem de se você está conectado ao Power BI usando uma entidade de serviço ou usuário mestre, e também de se o banco de dados tem RLS.

Para gerar o token de inserção, forneça as seguintes informações:

  • Nome de usuário (opcional se não houver RLS. Obrigatório para RLS) – um nome de usuário válido reconhecido pelo SSAS que será usado como a identidade efetiva. Se o banco de dados não usar RLS e nenhum nome de usuário for fornecido, as credenciais do usuário mestre serão usadas.
  • Função (necessária para RLS) – o relatório exibirá apenas dados se a identidade efetiva for um membro da função.

Exemplo:

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
    PowerBIClient pbiClient = this.GetPowerBIClient();

    // Define the user identity and roles. Use one of the following:

    var rlsidentity = new EffectiveIdentity(  //If no RLS
       username: "Domain\\Username", // can also be username@contoso.com
       datasets: new List<string>{ datasetId.ToString()}
    )

    var rlsidentity = new EffectiveIdentity(  // If RLS
       username: "username@contoso.com",
       roles: new List<string>{ "MyRole" },
       datasets: new List<string>{ datasetId.ToString()}
    )
    
    // Create a request for getting an embed token for the rls identity defined above
    var tokenRequest = new GenerateTokenRequestV2(
        reports: new List<GenerateTokenRequestV2Report>() { new GenerateTokenRequestV2Report(reportId) },
        datasets: datasetIds.Select(datasetId => new GenerateTokenRequestV2Dataset(datasetId.ToString())).ToList(),
        targetWorkspaces: targetWorkspaceId != Guid.Empty ? new List<GenerateTokenRequestV2TargetWorkspace>() { new GenerateTokenRequestV2TargetWorkspace(targetWorkspaceId) } : null,
        identities: new List<EffectiveIdentity> { rlsIdentity }
    );

    // Generate an embed token
    var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);

    return embedToken;
}

Agora você pode inserir seu relatório em seu aplicativo e seu relatório vai filtrar os dados de acordo com as permissões do usuário que acessa o relatório.

Considerações e limitações

Não há suporte para CustomData.

Gerar um token de inserção