Inserción de un informe rápido en una aplicación de análisis insertado de Power BI para su organización

Las API de cliente de Power BI permiten crear rápidamente un informe interactivo y un conjunto de datos a partir de los datos de la aplicación sin que los usuarios necesiten abandonar la aplicación. Con esta biblioteca del lado cliente, proporcionará información sobre el origen de datos, que Power BI usará para generar un conjunto de datos dentro del servicio Power BI. Al mismo tiempo, Power BI generará automáticamente un informe con información sobre los datos para que los usuarios exploren y personalicen para satisfacer sus necesidades.

En este tutorial, aprenderá a:

  • Configuración del entorno insertado
  • Configurar un objeto para almacenar información sobre el origen de datos y personalizar el informe
  • Pasar este objeto a la API para agregar funcionalidades de exploración de datos a la aplicación

Para usar esta experiencia, los usuarios tendrán que iniciar sesión en Power BI.

Usará un objeto de configuración para almacenar información sobre el origen de datos. Además, también puede usar el objeto de configuración para personalizar la apariencia y el comportamiento del informe. Por ejemplo, puede ajustar el tema y la configuración de ubicación en el objeto de configuración. Al crear e insertar el conjunto de datos, se pasa ese objeto a la API.

Importante

Si va a insertar contenido para una nube nacional, los primeros pasos de este tutorial son diferentes. Consulte Insertar contenido para nubes nacionales para obtener más información.

Prerrequisitos

Antes de iniciar este tutorial, compruebe que tiene las dependencias de código y Power BI que se enumeran a continuación:

  • Dependencias de Power BI
  • Dependencias de código
    • Un editor de texto
    • Terminal de línea de comandos, como PowerShell

Método

En las secciones siguientes se explica cómo insertar y configurar contenido de Power BI mediante su editor de texto favorito.

La interfaz IQuickCreateConfiguration muestra las propiedades que un objeto de configuración puede proporcionar a las API de cliente de Power BI sobre el conjunto de datos que desea crear:

Ejemplo

interface IQuickCreateConfiguration { 
    type?: "quickCreate"; 
    accessToken: string; 
    settings?: ISettings; 
    tokenType?: TokenType; 
    theme?: IReportTheme; 
    embedUrl?: string; 
    datasetCreateConfig: IDatasetCreateConfiguration; 
    reportCreationMode?: ReportCreationMode; 
    eventHooks?: EventHooks; 
}

Permiso de token de acceso a QuickCreate

QuickCreate solo admite tokens de AAD . Asegúrese de que la aplicación tiene los siguientes ámbitos:

  • Content.Create
  • Dataset.ReadWrite.All
  • Report.Read.All
  • Workspace.Read.All

Consulte Registro de una aplicación para insertar contenido de Power BI para obtener más información.

Insertar dirección URL

Exclusivo de esta forma de inserción, esta experiencia tiene una ruta especial /quickcreate. Una dirección URL de inserción típica para esta experiencia tiene este aspecto: https://app.powerbi.com/quickcreate

Paso 1.1: Creación de un conjunto de datos sin un origen de datos

PowerBI proporciona una manera sencilla de permitir que los desarrolladores incluyan datos directamente en la solicitud a Power BI si no puede configurar un origen de datos. Limitamos el tamaño de la solicitud a 16 MB. Tenga en cuenta que, dado que no hay ningún origen de datos al que Power BI se conecte, no puede actualizar el conjunto de datos después de la creación.

  1. IDataTable

    IDataTable es básicamente un contenedor de una matriz de cadenas 2D donde debe rellenar los datos. Aunque los datos son una matriz, solo se admiten 1 tabla de datos por ahora. El nombre se puede establecer por usted, pero debe coincidir con el nombre en ITableSchema.

    Para que Power BI analice los datos en el formato correcto, los valores de datos deben tener el formato siguiente a la especificación de valor del lenguaje M. La propiedad de configuración regional definida en IQuickCreateConfiguration también afecta al análisis de los valores. Consulte valores del lenguaje M: PowerQuery M para obtener más información.

    Los datos deben pasarse en filas. Cada fila debe contener el mismo número de columnas definidas en ITableSchema.  

    Nota

    Los datos y tableSchemaList deben estar en pares.

Ejemplo

const data: IDataTable = [
    { "name": "MyTableName", 
      "rows": [ 
              ["1", "1", "1991"], 
              ["1", "1", "1991"], 
        ]
    } 
] 

Nota

Actualmente, la propiedad name no se puede personalizar, por lo que no se puede asignar un nombre a una tabla. El nombre predeterminado de la propiedad es "Table".

  1. ITableSchema

    Para que Power BI comprenda los datos, debe proporcionar el esquema para cada columna de la tabla. Cada esquema de columna debe tener un nombre y un tipo. El nombre se usará como nombre de lista de campos después de crear el conjunto de datos. El tipo es un subconjunto de la especificación de tipo de lenguaje M. Los tipos admitidos se enumeran convenientemente en DataType. Consulte tipos de lenguaje M: PowerQuery M para obtener más información.

    De forma similar a la propiedad de datos, aunque tableSchemaList se define como una matriz, solo se admite una sola tabla por ahora.

    export const enum DataType { 
        Number = "Number", 
        Currency = "Currency", 
        Int32 = "Int32", 
        Percentage = "Percentage", 
        DateTime = "DateTime", 
        DateTimeZone = "DateTimeZone", 
        Date = "Date", 
        Time = "Time", 
        Duration = "Duration", 
        Text = "Text", 
        Logical = "Logical", 
        Binary = "Binary",  
        }
    

    Además de name y dataType, los usuarios pueden especificar la agregación predeterminada en las columnas proporcionando una propiedad opcional aggregateFunction para cada columna. El número de funciones de agregado admitidas se basa en el Tipo de enumeración AggregateFunction.

Ejemplo

const tableSchemaList: ITableSchema = [{ 
    name: "MyTableName",  
    columns: [ 
        { 
            name: "createdby", 
            dataType: DataType.Text
             aggregateFunction: 6 // Count 
        }, 
        { 
            name: "createdon", 
            dataType: DataType.DateTime 
        }, 
        { 
            name: "size", 
            dataType: DataType.Number 
        } 
    ]     
}];   
const data: IDataTable = [
    { 
        "name": "MyTableName", 
        "rows": [ 
                ["1", "1", "1991"],
                ["1", "1", "1991"],
        ]
    }
] 
const datasetCreateConfig: IDatasetCreateConfiguration = {
    "modelName": "my model", 
    "locale": "en_US", 
    "tableSchemaList": tableSchemaList,
    "data": data
} 

Paso 1.2: Creación de un conjunto de datos con el origen de datos existente

IDatasetCreateConfiguration es una configuración que permite a Power BI saber cómo crear el conjunto de datos. Esto incluye el documento mashup, la configuración regional del conjunto de datos y la información de conexión que indica a Power BI cómo conectarse al origen de datos.

Documento mashup

Los documentos mashup o los documentos M tienen sus propias especificaciones de lenguaje . Para los fines de esta experiencia de inserción, la manera más fácil de empezar es conectarse al origen de datos que prefiera en Power BI Desktop y, a continuación, copiar la consulta de mashup resultante fuera de la vista del editor de consultas. Lea la documentación del Editor de consultas de para Power BI Desktop para obtener más información.

Ejemplo

Let Source = Csv.Document(Web.Contents("https://yourdomain.com/sample.csv"), [Delimiter=",", QuoteStyle=QuoteStyle.None]), #"Promoted Headers" = Table.PromoteHeader(Source, [PromoteAllScalars=true]) in #"Promoted Headers";" 

Para convertir el código fuente anterior en un documento de mashup, solo tiene que agregar una sección de . Una sección incluye:

  • section-name;
  • shared section-member-name = expression;
  • donde expresión será la consulta mashup,
  • y section-member-name se mostrarán en Power BI como nombre de tabla o entidad.

Para la consulta de mashup de ejemplo proporcionada anteriormente, este es un ejemplo de documento mashup correspondiente:

"section Section1; shared #"Table" = let Source = Csv.Document(Web.Contents("https://yourdomain.com/sample.csv"), [Delimiter=",", QuoteStyle=QuoteStyle.None]), #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]) in #"Promoted Headers";" 

  Una vez que tenga el documento de mashup, puede identificar qué partes serán estáticas y qué partes serán dinámicas y se pueden rellenar mediante programación. En el ejemplo anterior, tenemos algunas variables ajustables, el dominio de contenido web, el delimitador, el estilo de comillas y, si desea promover o no los encabezados. Por lo tanto, la consulta se puede convertir en una plantilla y rellenarse con los parámetros adecuados en el lado de la aplicación de hospedaje, en función de los datos que consume el usuario en el momento.

Configuración regional

PowerBI usará la información de configuración regional proporcionada en esta configuración para evaluar el documento mashup y analizar los valores si se proporcionan datos sin procesar.

Configuración del origen de datos

Autorización en el origen de datos

Actualmente, solo se admite la conexión anónima a orígenes de datos. Esto significa que Power BI debe poder conectarse al origen de datos sin necesidad de autenticación.

Nota

Si incluye los datos directamente en la solicitud, debe omitir la propiedad dataSourceConnection.

DataCacheMode

Para la mayoría de los orígenes de datos, modo importar debe adaptarse a sus necesidades. Sin embargo, en algunos casos en los que los datos cambian rápidamente o cuando los orígenes de datos son muy grandes, también puede usar el modo DirectQuery. Si cree que esto puede aplicarse a usted, obtenga más información sobre DirectQuery en Power BI.

Nota

Si incluye datos sin procesar en la solicitud, se debe importar DataCacheMode.

Muestra

const datasetCreateConfig: IDatasetCreateConfiguration = { 
    "modelName": "temp model", 
    "locale": "en_US", 
    "mashupDocument": "section Section1; shared Table = let Source = Csv.Document(Web.Contents(\"https://yourdomain.com/sample.csv\"),[Delimiter=\",\", QuoteStyle=QuoteStyle.None]), #\"Promoted Headers\" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]) in #\"Promoted Headers\";", 
    "dataSourceConnection": { 
        "credentialType": CredentialType.Anonymous, // =1 
        "dataCacheMode": DataCacheMode.Import // =1 
    } 
} 

Paso 2: Creación de un conjunto de datos y generación automática de informes

Ahora con el datasetCreateConfig establecido, está listo para generar el conjunto de datos e insertar un informe generado automáticamente. Esto es similar al método createReport que permite crear en la inserción de informes, el método quickCreate que toma un contenedor de iframe y el método quickCreateConfig que le ayuda a insertar el informe.

Ejemplo

const powerbi = window.powerbi; 
const iframeContainer = document.getElementById("myIframeContainer"); 
const quickCreateConfig: IQuickCreateConfiguration = { 
    type: "quickCreate", 
    accessToken: "ey.....",  
    tokenType: TokenType.Aad, // Aad token only 
    embedUrl: "https://app.powerbi.com/quickcreate", // see below for generating the embed url 
    datasetCreateConfig: datasetCreateConfig, 
    reportCreationMode: ReportCreationMode.QuickExplore, // QuickExplore for auto-generated visual,    
    settings: { 
        localeSettings: { 
            language: "en_US" // this should match the current locale of your window/product. It will be used to localize the UI. 
        } 
    } 
}; 
const quickCreateReport = powerbi.quickCreate(iframeContainer, quickCreateConfig);