Insertar un informe de Power BI en un formulario principal basado en modelos

Importante

Hay una mejor manera de agregar un informe de Power BI a un formulario de aplicación basada en modelo. Más información: Utilizar el control de informe de Power BI para agregar un informe

Puede usar informes de Power BI en aplicaciones basadas en modelos de Power Apps para incluir informes y análisis enriquecidos en los formularios principales y permitir a los usuarios conseguir más. Esto desbloquea la capacidad de agregar datos en entre los sistemas, y adaptarlos al contexto de un solo registro.  

Requisitos previos

Insertar contenido de Power BI es una característica opcional y está deshabilitada en todos los entornos de forma predeterminada. Debe habilitarla para poder insertar contenido de Power BI. Más información: Visualizaciones de Power BI en la organización.

Esta característica requiere exportar una solución, modificarla para agregar el fragmento de código XML, y luego volver a importarla al entorno. Asegúrese de importar los cambios en el entorno de destino mediante una solución administrada únicamente. Vea Importar, actualizar y exportar soluciones para obtener instrucciones sobre instalar una actualización en una solución administrada existente.

Insertar sin filtrado contextual

Puede usar los informes de Power BI insertándolos, y obtener el mismo informe exacto. Esto no implica contextualizarlos en el formulario actual basado en modelos y, por tanto, obtiene el mismo informe en todos los registros de la tabla. Por ejemplo, el informe siguiente muestra la ubicación geográfica de todas las cuentas a la vez y es útil para mostrar información resumida.

Informe de Power BI insertado sin filtrado contextual.

Puede personalizar un nodo sections de formulario XML principal para que pueda albergar un informe y un mosaico de Power BI siguiendo estos pasos:

  1. En su entorno de desarrollo, cree una solución y agregue la tabla que contiene el formulario principal donde desea que se muestre el informe de Power BI integrado.

    • Si la tabla ya existe en el entorno de destino donde importará la solución, elija la opción Seleccionar componentes cuando agregue la tabla a la solución. Luego, agregue solo el formulario principal de la tabla.
    • Si la tabla no existe en el entorno de destino donde importará la solución, elija Incluir todos los componentes cuando agregue la tabla a la solución.
  2. Exporte la solución como administrada.

  3. Extraiga todos los archivos del archivo zip del paquete de solución. Luego, edite el archivo customizations.xml y agregue el código XML que se proporciona a continuación dentro del bloque <sections> que está en el nodo <forms type="main"> del archivo customizations.xml.

<section id="{d411658c-7450-e1e3-bc80-07021a04bcc2}" locklevel="0" showlabel="true" IsUserDefined="0" name="tab_4_section_1" labelwidth="115" columns="1" layout="varwidth" showbar="false">
    <labels>
        <label languagecode="1033" description="Unfiltered Power BI embedding demo"/>
    </labels>
    <rows>
        <row>
            <cell id="{7d18b61c-c588-136c-aee7-03e5e74a09a1}" showlabel="true" rowspan="20" colspan="1" auto="false" solutionaction="Added">
                <labels>
                    <label languagecode="1033" description="Accounts (Parent Account)"/>
                </labels>
                <control id="unfilteredreport" classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}">
                    <parameters>
                        <PowerBIGroupId>00000000-0000-0000-0000-000000000000</PowerBIGroupId>
                        <PowerBIReportId>544c4162-6773-4944-900c-abfd075f6081</PowerBIReportId>
                        <TileUrl>https://app.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081</TileUrl>
                    </parameters>
                </control>
            </cell>
        </row>
        <row/>
    </rows>
</section>

Importante

Asegúrese de usar el control classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}" como se indica en el XML de ejemplo.

  1. Realice los siguientes cambios en el formulario XML que copió en el archivo customizations.xml para su informe de Power BI. Esta tabla describe los valores que necesita cambiar a los elementos del ejemplo XML anterior.
Property Descripción
PowerBIGroupId Id. del área de trabajo de Power BI. Si su informe está en Mi área de trabajo,** entonces el id. del espacio de trabajo es 00000000-0000-0000-0000-000000000000. De lo contrario, agregue el ID del área de trabajo. Puede encontrar el id. del área de trabajo en la URL de servicio de Power BI. Más información: Buscar el id. de informes y espacios de trabajo de Power BI.
PowerBIReportId Id. de informe de Power BI. Reemplace esto con el informe que desea insertar. Puede encontrar el id. de su informe en la URL de servicio de Power BI. Más información: Buscar el id. de informes y espacios de trabajo de Power BI
TileUrl La dirección URL del informe de Power BI que desea insertar. Asegúrese de usar el nombre de subdominio correcto de Power BI (puede que deba reemplazar app.powerbi.com por el suyo) y el id. de informe (reemplace reportId=544c4162-6773-4944-900c-abfd075f6081 por el suyo). Por ejemplo, https://app.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081.
solutionaction="Added" Si la tabla ya existe en el entorno de destino, deje el parámetro solutionaction=Added para el elemento de celda, como se proporciona en el ejemplo XML. Si la tabla no existe en el entorno de destino, elimine el parámetro solutionaction=Added.
  1. Cree un archivo zip con todos los archivos de solución extraídos previamente. A continuación, importe la solución en el entorno de destino.

Insertar con filtrado contextual

Puede hacer que los informes de Power BI sean más significativos aplicando filtros contextuales al formulario basado en modelos, de forma que el informe se base en filtros de atributos de la fila actual. Por ejemplo, el siguiente informe muestra la ubicación geográfica de una cuenta, filtrando el informe de Power BI con el nombre de cuenta. Esto permite que un informe solo muestre información contextualizada para todas las filas de la tabla.

Informe de Power BI insertado con filtrado contextual.

El filtrado se realiza agregando un elemento <PowerBIFilter> en el bloque <parameter> como se muestra aquí. Puede usar cualquier atributo de tabla del formulario para generar expresión de filtro. Más información: Construir filtros para comprender cómo crear sus propios filtros.

<control id="filteredreport" classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}">
    <parameters>
        <PowerBIGroupId>00000000-0000-0000-0000-000000000000</PowerBIGroupId>
        <PowerBIReportId>544c4162-6773-4944-900c-abfd075f6081</PowerBIReportId>
        <TileUrl>https://xyz.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081</TileUrl>
        <PowerBIFilter>{"Filter": "[{\"$schema\":\"basic\",\"target\":{\"table\":\"table_name_of_power_bi_dataset\",\"column\":\"power_bi_field\"},\"operator\":\"In\",\"values\":[$a],\"filterType\":1}]", "Alias": {"$a": "field_name_in_powerapps_to_filter"}}</PowerBIFilter>
    </parameters>
</control>

Tenga en cuenta que se usa el mismo control que la inserción del informe sin filtrar y, por tanto, el id. de clases control se mantiene sin cambios.

Esta tabla describe las propiedades adicionales utilizadas en el ejemplo XML anterior.

Propiedad Descripción
PowerBIFilter La expresión de filtro que contextualiza el informe de Power BI pasando los atributos de formulario como parámetros. Para hacer que sea más legible, el filtro se construye como se muestra aquí. La expresión de filtro no puede ser una lista de valores separados por comas.
    {
            "Filter": "[{
                    \"$schema\":\"basic\",
                    \"target\":{
                            \"table\":\"table_name_of_power_bi_dataset\",
                            \"column\":\"power_bi_field\"
                    },
                    \"operator\":\"In\",
                    \"values\":[$a, $b],
                    \"filterType\":1
            }]",
            "Alias": {
                    "$a": "field1_name_in_powerapps_to_filter",
                    "$b":"field2_name_in_powerapps_to_filter"
            }
    }

La parte de destino de la expresión anterior identifica la tabla y la columna a la que aplicar filtros. El operador identifica la lógica y los valores identifican los últimos datos pasados desde la aplicación basada en modelos de Power Apps. Para parametrizar de una forma genérica, los valores son construidos mediante alias. En la expresión anterior, se pasa el valor de firstname y lastname de una cuenta, y se busca cualquiera de ellos en la columna Nombre de cuenta en el informe de Power BI. Tenga en cuenta que firstname y lastname son los nombres únicos de los atributos de la tabla de cuenta, cuyo valor será pasado aquí.

Puede crear expresiones de filtro más complejas consultando ejemplos de Construir los filtros y proporcionando los valores adecuados para $schema y filterType. Asegúrese de escapar cada literal en la parte de filtro con ", para generar JSON correctamente.

Quitar atributo sin modificar antes de importar

Antes de importar la solución en el entorno de destino, asegúrese de que el atributo no modificado no esté incluido en la sección formXml del archivo customizations.xml. Si el atributo sin modificar está presente en el XML que incluye el código XML del control de Power BI, elimine el atributo antes de importar la solución en el entorno de destino. Por ejemplo, reemplace <systemform unmodified="1"> con <systemform>.

Buscar el id. de informes y espacios de trabajo de Power BI

  1. En este ejemplo, el id. de espacio de trabajo es efc85277-2bdb-47bc-9762-363f64335108.
  2. En este ejemplo, el id. de informe es 643ab643-7126-4a57-bd82-ca8f1fb676fc. Ejemplo de id. de área de trabajo e id. de informe de Power BI

Problemas y limitaciones conocidos

  • Esta integración solo está disponible en el cliente de la interfaz unificada, en exploradores web y los dispositivos móviles compatibles.

  • Al abrir este formulario en el diseñador de formularios de Power Apps no se mostrará el control en una forma significativa. Esto se debe a que el control se personaliza fuera del diseñador de formularios.

  • Los usuarios se autenticarán en Power BI automáticamente con su nombre de usuario y contraseña de Power Apps. Si no existe una cuenta de Power BI con credenciales coincidentes, un inicio de sesión mensaje se muestra como se ilustra aquí.

    Power BI solicitud de inicio de sesión.

    No se mostrarán datos si una cuenta incorrecta se usa para iniciar sesión en Power BI. Para iniciar sesión con las credenciales correctas, cierre sesión y, a continuación vuelva a iniciar sesión.

    Inicie sesión en el servicio de Power BI.

    El usuario que inició sesión no tiene el permiso adecuado.

  • La vista de los datos de informe que se muestran en Power Apps es igual que en Power BI, y los roles de seguridad y los privilegios de Power Apps no afectan a los datos que se muestran. Por lo tanto, los datos son esencialmente iguales que los que vería el creador del conjunto de datos de Power BI. Para aplicar las restricciones de acceso a datos similares a los roles de seguridad y equipos de Power Apps, use Seguridad de nivel de fila (RLS) con Power BI.

  • Si el formulario no muestra el informe de Power BI después de importar la solución y de publicar las personalizaciones, ábrala en el editor de formularios basados en modelos y guárdelo, para que se genere el JSON de formulario.

  • Incrustar un Power BI icno en un formulario solo se admite sin filtrado contextual.

  • La inserción de un informe Power BI no admite referencias entre inquilinos. Por ejemplo, actualmente no se admite intentar insertar un informe Power BI que pertenece al inquilino de Contoso en una aplicación basada en modelo que pertenece al inquilino de Fabrikam, incluso si el informe que se está incrustando se ha compartido con los usuarios del Inquilino de Fabrikam vía Power BI.

Problemas comunes

  • El ID de grupo no se especifica en el nodo TileUrl de los parámetros de control cuando puede ser necesario. Este ejemplo incluye un ID. de grupo.
<parameters>
    <PowerBIGroupId>fd266a4c-9a02-4553-9310-80e05ee844f3</PowerBIGroupId>
    <PowerBIReportId>544c4162-6773-4944-900c-abfd075f6081</PowerBIReportId>
    <TileUrl>https://xyz.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081&amp;groupId=fd266a4c-9a02-4553-9310-80e05ee844f3</TileUrl>
</parameters>
  • Los campos tienen diferentes tipos de datos en Power BI y Dataverse. Deben ser del mismo tipo, como cadena en Power BI y cadena en Dataverse.
  • Los campos de cadena no tienen comillas de escape en el filtro Power BI. Observe que values posee [\"$a\"] en vez de [$a].
    {
            "Filter": "[{
                    \"$schema\":\"basic\",
                    \"target\":{
                            \"table\":\"table_name_of_power_bi_dataset\",
                            \"column\":\"power_bi_field\"
                    },
                    \"operator\":\"In\",
                    \"values\":[\"$a\"],
                    \"filterType\":1
            }]",
            "Alias": {
                    "$a": "field_name_in_powerapps_to_filter",
            }
    }

Consulte también

Insertar un panel de Power BI en un panel personal basado en modelos de Power Apps

Usar Power BI con aplicaciones de Dynamics 365

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).