Inserir um relatório com um banco de dados do AAS (Azure Analysis Services)

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

Este artigo explica como inserir um relatório do Power BI que usa dados armazenados no Azure Analysis Services (ASS) em um cenário de inserção para seus clientes. Este artigo destina-se a ISVs (desenvolvedores de software independentes), que desejam inserir um relatório com dados do AAS, quer o banco de dados implemente ou não a RLS (segurança em nível de linha).

Pré-requisitos

Você precisará de um relatório com uma conexão dinâmica com o banco de dados do AAS, com ou sem RLS.

Segurança dinâmica – RLS

Se você quiser que o relatório implemente o RLS dinâmico, use a função customeData. Como você não pode substituir a identidade efetiva, recomendamos criar novas funções com customData. Você também pode usar funções que têm as funções username ou userPrincipalName, se substituí-las por customData.

Siga estas etapas para criar uma nova função e adicionar a função customData à função.

  1. Crie uma função no servidor do Analysis Services.

    A screenshot of creating a new role in Analysis Services server.

  2. Nas configurações Geral, forneça um Nome de função e defina as permissões de banco de dados como somente Leitura.

    A screenshot of giving a new role a new name and setting it to read only, in the general settings in Analysis Services server.

  1. Nas configurações de Associação, adicione os usuários que vão chamar a API Token de Inserção – Gerar Token. Se você estiver usando uma entidade de serviço que não seja um administrador, adicione também.

    A screenshot of adding users to a new role in Analysis Services server.

  2. Nas configurações de Filtros de linha, defina sua consulta DAX usando a função CUSTOMDATA().

    A screenshot showing how to add the function customData to the DAX query in a new role in Analysis Services server.

Entidade de serviço

Se você estiver usando uma entidade de serviço para inserir o relatório, verifique se a entidade de serviço é um administrador de servidor ou membro de função da AAS. Para conceder permissões de administrador do AAS à entidade de serviço, confira Adicionar uma entidade de serviço à função de administrador do servidor. Para adicionar a entidade de serviço como membro de função, vá para as Configurações de associação.

Use a ID do objeto da entidade de serviço como o nome de usuário (identidade efetiva).

Migração do Analysis Service

Você poderá migrar do AAS para Power BI Premium mesmo se tiver um relatório do AAS inserido. O relatório inserido não será interrompido durante a migração, desde que a entidade de segurança que está chamando a API Token de Inserção – Gerar Token seja membro ou administrador do workspace.

Observação

Se a entidade de serviço não for um administrador e você não quiser torná-lo um administrador do workspace ao migrar, migre esse modelo para um workspace separado, no qual você poderá conceder permissões de administrador.

Gerar um token de inserção

Use a API Gerar Token para gerar um token de inserção que substitua a identidade efetiva.

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

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

  • Nome de usuário (opcional se não houver RLS. Obrigatório para RLS) – o nome de usuário deve ser o mesmo que o chamador da API (nesse caso, o UPN do usuário mestre). 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:

Defina a identidade do usuário e as funções para um dos três seguintes cenários:

  • Se o RLS não for implementado:

Não será necessário definir nenhuma identidade eficaz.

  • Se estiver usando RLS estático:

        var rlsidentity = new EffectiveIdentity(  //If static RLS
           username: "username@contoso.com", 
           roles: new List<string>{ "MyRole" },
           datasets: new List<string>{ datasetId.ToString()}
        )
    
  • Se estiver usando RLS dinâmico:

        var rlsidentity = new EffectiveIdentity(  // If dynamic RLS
           username: "username@contoso.com",
           roles: new List<string>{ "MyRoleWithCustomData" },
           customData: "SalesPersonA"
           datasets: new List<string>{ datasetId.ToString()}
        )
    

    Observação

    customData no token de inserção não pode ser maior que 1.024 caracteres.

Use a identidade efetiva para gerar um token de inserção:

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
    PowerBIClient pbiClient = this.GetPowerBIClient();
    // 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 } // Only in cases of RLS
    );
    // Generate an embed token
    var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);
    return embedToken;
}

Use o token de inserção para inserir o relatório em seu aplicativo ou site. Seu relatório filtrará os dados de acordo com o RLS aplicado no relatório.

Próximas etapas