Trabaje con Power BI Matrix tomando datos de la declaración DAX
Tengo los siguientes requisitos:
- El usuario verá una matriz de Power BI en una página web (a diferencia de Power BI Desktop).
- La página web debe tener tres elementos: un campo de texto, un botón y la matriz de Power BI (potencialmente incluida en un informe de Power BI).
- El usuario ingresará la declaración DAX en el campo de texto y hará clic en el botón para indicar a Matrix que tome la declaración DAX, la ejecute y complete los datos.
- El usuario debe poder profundizar en Matrix.
- El usuario puede volver a ingresar una nueva declaración DAX, actualizando Matrix.
Ahora, toda la documentación que pude encontrar, por ejemplo aquí , habla sobre Matrix en Power BI Desktop (es decir, no en la página web) y los datos tomados seleccionando manualmente tablas/columnas/medidas (en el lado derecho de la pantalla).
En Power BI Studio, sé que puedo ingresar una declaración DAX creando una tabla en la barra superior, por ejemplo, si tengo el DAX:
EVALUATE TOPN (3, branches)
Podría crear una tabla para llenar Matrix con:
BranchesTable = TOPN (3, branches)
Pero, ¿cómo vincular dinámicamente una declaración DAX definida en tiempo de ejecución a una matriz en una página web?
Respuestas
Actualmente no es posible hacer exactamente lo que quieres. Puede cambiar dinámicamente una fuente de datos y actualizar la consulta utilizada en un informe específico, pero no hay una API disponible (PowerBI REST o PowerBI JavaScript) para actualizar qué columnas hay en un objeto visual en un informe. Puede acercarse bastante a lo que desea, pero el informe no se puede mostrar en View
modo y tendrá que mostrarse en Edit
modo para que el usuario pueda arrastrar los campos generados a partir de sus resultados de consulta DAX actualizados a la matriz visual manualmente si envían un cambio.
Suponiendo que ya haya completado la instalación y la configuración del registro de la aplicación, que es un requisito previo, y que esté listo para insertar, estos son algunos pasos para acercarse a lo que está buscando. Si no está listo para incrustar, hay documentación debajo de los 8 pasos que proporcioné para completar la configuración de requisitos previos para poder incrustar.
- Uso de PowerBI Desktop Cree un informe de plantilla que tenga una matriz visual y una conexión con el origen de datos que desea usar. Asegúrese de configurar este informe utilizando una consulta específica y NO todas las tablas en la fuente de datos, ya sea SQL o SSAS. (Usted especifica la consulta en las opciones avanzadas cuando configura inicialmente la fuente de datos en el informe)
- Configure una puerta de enlace de datos de Power BI para el origen de datos que utiliza su informe
- Cree un espacio de trabajo en PowerBI.com para cargar el informe en
- Uso de escritorio de PowerBI Publique el informe que creó en el paso 1 en el espacio de trabajo que creó en el paso 3
- En su aplicación web, cuando un usuario ve la página del visor de informes, necesita una forma de identificar a cada usuario. Supongamos que tiene
UserId
un campo que es una identificación única para cada usuario. Llame a GetReports en grupohttps://docs.microsoft.com/en-us/rest/api/power-bi/reports/getreportsingroup. Debe tener un nombre de informe conocido más el ID de usuario. Supongamos que es DynamicReport. Entonces llame a GetReports y verifique siDynamicReport_UserId
existe para el usuario que intenta ver la página del visor de informes en su aplicación web. - Si las llamadas a la API son el resultado del paso 5, si el informe no existe para un usuario, utilicehttps://docs.microsoft.com/en-us/rest/api/power-bi/reports/clonereportpara clonar el informe de plantilla que publicó en el paso 4.
- Incruste y muestre un informe de plantilla específico del usuario (DynamicReport_UserId) para el usuario.
- Tenga lógica en la página del visor de informes para que el usuario pueda enviar
POST
una consulta DAX. Cuando hacen un envío tienen lógica para usarhttps://docs.microsoft.com/en-us/rest/api/power-bi/datasets/updatedatasourcesen el back-end para actualizar la fuente de datos en su informe y luego incrustar el informe nuevamente con su declaración DAX y los datos modificados.
El objeto visual no se actualizará automáticamente a los nuevos campos de la nueva consulta que envía el usuario, pero los campos de datos disponibles que tienen en el modo de editor cambiarán. El usuario tendrá que arrastrar y soltar los campos de su consulta DAX en el objeto visual de Matrix o cualquier tipo de objeto visual que elija usar. No podrá simplemente mostrar un informe en View
modo ya que no tiene una forma de actualizar programáticamente qué campos están en visual. El usuario puede incluso terminar viendo una imagen rota inicialmente debido a la consulta modificada y los campos de referencia visual de la consulta utilizada anteriormente. Puede usar la API Javascript de PowerBI para ocultar la imagen existente y mejorar la experiencia del usuario que no ve algo roto.
Avíseme si tiene alguna pregunta específica sobre estas llamadas API o cómo usarlas.
Aquí es donde he estado buscando la funcionalidad JavaScript de Power BIhttps://github.com/Microsoft/powerbi-javascript/wiki(No se puede encontrar nada específico para Matrix Visuals. La funcionalidad de JavaScript para imágenes genéricas para Visuals y no Visual Type como Matrix o Card)
Aquí está la documentación de Microsoft sobre las API REST disponibles yhttps://docs.microsoft.com/en-us/rest/api/power-bi/
Aquí hay algunos buenos recursos para aprender más sobre incrustar
https://docs.microsoft.com/en-us/power-bi/developer/embedded/register-app https://docs.microsoft.com/en-us/power-bi/developer/embedded/embedding
Si necesita capacidad de desglose, las jerarquías son una excelente opción
https://spreadsheeto.com/power-bi-hierarchy/