Trabalhe com o Power BI Matrix obtendo dados da instrução DAX

Aug 15 2020

Tenho os seguintes requisitos:

  • O usuário verá uma Matriz do Power BI em uma página da Web (em oposição ao Power BI Desktop).
  • A página da Web deve ter três elementos: um campo de texto, um botão e a Matriz do Power BI (possivelmente incluída em um Relatório do Power BI).
  • O usuário inserirá a instrução DAX no campo de texto e clicará no botão para direcionar a Matrix para obter a instrução DAX, executá-la e preencher os dados.
  • O usuário deve ser capaz de detalhar na Matriz.
  • O usuário pode reinserir uma nova instrução DAX, atualizando a Matrix.

Agora, toda a documentação que encontrei, por exemplo aqui , fala sobre a Matrix no Power BI Desktop (ou seja, não na página da web) e os dados obtidos selecionando tabelas/colunas/medidas manualmente (no lado direito da tela).

No Power BI Studio, sei que posso inserir uma instrução DAX criando uma tabela na barra superior, por exemplo, se eu tiver o DAX:

 EVALUATE TOPN (3, branches)

Eu poderia criar uma tabela para preencher a Matrix com:

BranchesTable = TOPN (3, branches)

Mas como vincular dinamicamente uma declaração DAX definida em tempo de execução a uma Matrix em uma página da Web?

Respostas

1 vvvv4d Aug 15 2020 at 21:20

Atualmente, não é possível fazer exatamente o que você deseja. Você pode alterar dinamicamente uma fonte de dados e atualizar a consulta usada em um relatório específico, mas não há uma API disponível (PowerBI REST ou PowerBI JavaScript) para atualizar quais colunas estão em um visual em um relatório. Você pode chegar bem perto do que deseja, mas o relatório não pode ser exibido no Viewmodo e terá que ser exibido no Editmodo para que o usuário tenha a capacidade de arrastar os campos gerados a partir dos resultados atualizados da consulta DAX para o visual Matrix manualmente se eles enviam uma alteração.

Supondo que você já tenha os pré-requisitos de instalação e configuração de registro de aplicativo concluídos e esteja pronto para incorporar, aqui estão algumas etapas para se aproximar do que você está procurando. Se você não estiver pronto para incorporar, há alguma documentação abaixo das 8 etapas que forneci para concluir a configuração de pré-requisito para poder incorporar.

  1. Usando o PowerBI Desktop Crie um relatório de modelo que tenha um visual de matriz e uma conexão com a fonte de dados que você deseja usar. Certifique-se de configurar este relatório usando uma consulta específica e NÃO todas as tabelas na fonte de dados, seja SQL ou SSAS. (Você especifica a consulta em opções avançadas ao configurar inicialmente a fonte de dados no relatório)
  2. Configurar um gateway de dados do Power BI para a fonte de dados que seu relatório usa
  3. Crie um espaço de trabalho no PowerBI.com para carregar o relatório para
  4. Usando a área de trabalho do PowerBI Publique o relatório que você criou na etapa 1 no espaço de trabalho criado na etapa 3
  5. Em seu aplicativo da Web, quando um usuário exibe a página do visualizador de relatórios, você precisa de uma maneira de identificar cada usuário. Vamos supor que você tenha UserIdum campo que é um ID exclusivo para cada usuário. Chame GetReports no grupohttps://docs.microsoft.com/en-us/rest/api/power-bi/reports/getreportsingroup. Você precisa ter um nome de relatório conhecido mais o UserId. Vamos assumir seu DynamicReport. Portanto, chame GetReports e verifique se DynamicReport_UserIdexiste para o usuário que está tentando visualizar a página do visualizador de relatórios em seu aplicativo da web.
  6. Em que as chamadas de API resultam da etapa 5, se o relatório não existir para um usuário, usehttps://docs.microsoft.com/en-us/rest/api/power-bi/reports/clonereportpara clonar o modelo de relatório que você publicou na etapa 4.
  7. Incorpore e exiba o relatório de modelo específico do usuário (DynamicReport_UserId) para o usuário.
  8. Tenha lógica na página do visualizador de relatórios para que o usuário possa enviar e POSTuma consulta DAX. Quando eles enviam, têm lógica para usarhttps://docs.microsoft.com/en-us/rest/api/power-bi/datasets/updatedatasourcesno back-end para atualizar a fonte de dados em seu relatório e, em seguida, incorporar o relatório novamente com sua instrução DAX e dados alterados.

O visual não será atualizado automaticamente para os novos campos da nova consulta enviada pelo usuário, mas os campos de dados disponíveis que eles têm no modo de editor serão alterados. O usuário terá que arrastar e soltar os campos de sua consulta DAX no visual Matrix ou em qualquer tipo de visual que escolher usar. Você não poderá apenas exibir um relatório no Viewmodo, pois não tem como atualizar programaticamente quais campos estão no visual. O usuário pode até acabar vendo um visual quebrado inicialmente por causa da consulta alterada e dos campos de referência visual da consulta usada anteriormente. Você pode usar a API Javascript do PowerBI para ocultar o visual existente para melhorar a experiência do usuário sem ver algo quebrado.

Entre em contato se tiver alguma dúvida específica sobre essas chamadas de API ou sobre como usá-las.

Aqui é onde eu tenho procurado a funcionalidade JavaScript do Power BIhttps://github.com/Microsoft/powerbi-javascript/wiki(Não é possível encontrar nada específico para visuais de matriz. A funcionalidade JavaScript para visuais é genérica para visuais e não para tipo visual como matriz ou cartão)

Aqui está a documentação da Microsoft sobre as APIs REST disponíveis ehttps://docs.microsoft.com/en-us/rest/api/power-bi/

Aqui estão alguns bons recursos para aprender mais sobre incorporação

https://docs.microsoft.com/en-us/power-bi/developer/embedded/register-app https://docs.microsoft.com/en-us/power-bi/developer/embedded/embedding

Se você precisa de capacidade de detalhamento, as hierarquias são uma ótima opção

https://spreadsheeto.com/power-bi-hierarchy/