Mostrando las entradas con la etiqueta Embed. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Embed. Mostrar todas las entradas

domingo, 8 de enero de 2017

Novedades en Power BI Embedded

De forma periódica se publican actualizaciones a Power BI Embedded . Sin embargo, no todas las versiones incluirán nuevas características de cara al usuario; algunas se centran en las funcionalidades del servicio back-end. Analizaremos aquí las nuevas funcionalidades para el usuario. Asegúrese de revisarlas periódicamente.

31 de agosto de 2016

En esta versión se incluyen:

11 de julio de 2016

En esta versión se incluyen:
  • Buenas noticias El servicio Power BI Embedded ya no está en versión preliminar: ahora ya está disponible de manera general.
  • Todas las API de REST han pasado de /beta a /v1.0.
  • Los SDK de JavaScript y .NET se han actualizado a v1.0.
  • Ahora se pueden autenticar las llamadas de API de BI Power directamente mediante claves de API. Los tokens de aplicación solo se necesitan para la inserción. Como parte de esto, los tokens de aprovisionamiento y desarrollo han quedado en desuso en la versión v1.0 API, pero seguirán funcionando en la versión beta hasta el 30 de diciembre de 2016. Para obtener más información, consulte Acerca del flujo del token de aplicación en Power BI Embedded.
  • Compatibilidad de la seguridad de nivel de fila (RLS) con tokens de aplicación e informes insertados. Para obtener más información, consulte Seguridad de nivel de fila con Power BI Embedded.
  • Aplicación de ejemplo actualizada para todas las llamadas de API v1.0 .
  • Compatibilidad de Power BI Embedded con SDK de Azure, PowerShell y CLI.
  • Los usuarios pueden exportar datos de visualización a un archivo .csv.
  • Power BI Embedded ahora es compatible con los mismos idiomas o configuraciones regionales que Microsoft Azure. 

¿Qué es Microsoft Power BI Embedded?

Con Power BI Embedded, puede integrar informes de Power BI directamente en las aplicaciones web o móviles.
Power BI Embedded es un servicio de Azure que permitirá a los ISV y a los desarrolladores de software exponer las experiencias de datos de Power BI en sus aplicaciones. Como desarrollador, ha creado aplicaciones y esas aplicaciones tienen sus propios usuarios y un diferente conjunto de características. También podría ocurrir que estas aplicaciones tengan algunos elementos de datos integrados como gráficos e informes que ahora pueden disponer de la tecnología de Microsoft Power BI Embedded. Los usuarios no necesitan una cuenta de Power BI para utilizar la aplicación. Pueden seguir iniciando sesión en su aplicación como antes, y ver e interactuar con la experiencia de informes de Power BI sin necesitar ninguna licencia adicional.

Licencias de Microsoft Power BI Embedded

En el modelo de uso de Microsoft Power BI Embedded , la administración de licencias de Power BI no es responsabilidad del usuario final. En su lugar, el desarrollador de la aplicación que está consumiendo los elementos visuales, adquiere sesiones que se cobran a la suscripción que posee esos recursos. Puede encontrar información adicional en la página de precios (https://azure.microsoft.com/es-es/pricing/details/power-bi-embedded/).

Modelo conceptual de Microsoft Power BI Embedded

Al igual que cualquier otro servicio en Azure, los recursos de Power BI Embedded se aprovisionan mediante las API de ARM de Azure. En este caso, el recurso que aprovisiona es una Colección de áreas de trabajo de Power BI.

Colección de área de trabajo

Una colección de áreas de trabajo es el contenedor de Azure de nivel superior para aquellos recursos que contienen 0 o más áreas de trabajo. Una Área de trabajo áreas de trabajo has all of the standard Unazure properties, as well as the following:
  • Claves de acceso : claves que se usan al llamar de forma segura a las API de Power BI (se describen en una sección posterior).
  • Usuarios : los usuarios de Azure Active Directory (AAD) que tienen derechos de administrador para administrar la Colección de áreas de trabajo de Power BI a través del Portal de Azure o de la API de ARM.
  • Región: como parte del aprovisionamiento de una colección de áreas de trabajo, puede seleccionar una región para que se aprovisione. Para más información, consulte Regiones de Azure.

Área de trabajo

Un área de trabajo es un contenedor de contenido de Power BI, que puede incluir conjuntos de datos, informes y paneles. Un área de trabajo está vacío cuando se crea por primera vez. Durante la versión preliminar, creará todo el contenido con Power BI Desktop y lo cargará en una de las áreas de trabajo mediante las API de REST de Power BI.

Usar las áreas de trabajo y las colecciones de área de trabajo

Las colecciones de áreas de trabajo y las áreas de trabajo son contenedores de contenido que se usan y se organizan de la forma que mejor se adapte al diseño de la aplicación que está creando. Podrá disponer el contenido dentro de ellas de muchas maneras diferentes. Puede decidir colocar todo el contenido en un área de trabajo y después usar los tokens de aplicación para subdividir más el contenido entre sus clientes. También puede decidir colocar todos sus clientes en áreas de trabajo independientes de forma que exista algo de separación entre ellos. O bien, puede elegir organizar los usuarios por región en lugar de por cliente. Este diseño flexible le permite elegir la mejor manera de organizar el contenido.

Conjuntos de datos en caché

Los conjuntos de datos en caché pueden usarse en la versión preliminar. Sin embargo, no puede actualizar los datos en caché una vez que se han cargado en Microsoft Power BI Embedded.

Autenticación y autorización con tokens de aplicación

Microsoft Power BI Embedded aplaza a su aplicación para realizar la autenticación y la autorización de usuario necesaria. No hay ningún requisito explícito por el que los usuarios finales tengan que ser clientes de Azure Active Directory (Azure AD). En su lugar, la aplicación expresará la autorización para representar un informe de Power BI a Microsoft Power BI Embedded mediante los Tokens de autenticación de la aplicación (tokens de aplicación). Estos tokens de aplicación se crean según sea necesario cuando la aplicación quiere presentar un informe.
Los Tokens de autenticación de la aplicación (tokens de aplicación) se usan para autenticarse en Microsoft Power BI Embedded. Existen tres tipos de tokens de aplicación:
  1. Aprovisionar tokens: se usa al aprovisionar una nueva área de trabajo en una colección de áreas de trabajo
  2. Desarrollar tokens: se usa al realizar llamadas directamente a las API de REST de Power BI
  3. Tokens de incrustación: se usan al realizar llamadas para presentar un informe en el iframe incrustado
Estos tokens se usan para las diversas fases de las interacciones con Microsoft Power BI Embedded. Los tokens están diseñados para que pueda delegar permisos desde su aplicación a Power BI. Para obtener más información, consulte el artículo sobre el flujo del token de aplicación.

Introducción a Microsoft Power BI Embedded

Power BI Embedded es un servicio de Azure que permite a los desarrolladores de aplicaciones agregar informes de Power BI interactivos a sus propias aplicaciones. Power BI Embedded se puede utilizar con las aplicaciones existentes sin necesidad de modificar el diseño ni de cambiar el modo en que los usuarios inician sesión.
Los recursos de Microsoft Power BI Embedded se aprovisionan mediante las API de ARM de Azure. En este caso, el recurso que se aprovisiona es una colección de áreas de trabajo de Power BI.

Creación de una colección de áreas de trabajo

Una colección de áreas de trabajo es el recurso de Azure de nivel superior, y funciona como un contenedor del contenido que se insertará en la aplicación. Las colecciones de áreas de trabajo se pueden crear de dos maneras:
  • Manualmente mediante el Portal de Azure.
  • Mediante programación con la API de Azure Resource Manager (ARM).
Vamos a ver cuáles son los pasos necesarios para crear una colección de áreas de trabajo mediante el Portal de Azure.
  1. Abra el Portal de Azurehttp://portal.azure.com, e inicie sesión.
  2. En el panel superior, haga clic en + Nuevo .
  3. En Datos y análisis, haga clic en Power BI Embedded.
  4. En la hoja Creación, escriba la información necesaria. En Precios, consulte los precios de Power BI Embedded.
  5. Haga clic en Crear.
La colección de áreas de trabajo tarda un poco en aprovisionarse. Cuando la operación finalice, accederá automáticamente a la hoja Colección de áreas de trabajo.
La hoja Creación contiene la información que necesita para llamar a las API que crean las áreas de trabajo e implementan contenido en ellas.

Visualización de las claves de acceso de API de Power BI

Uno de los datos más importantes que se necesitan para llamar a las API de REST de Power BI son las claves de acceso. Las claves de acceso se utilizan para generar los tokens de aplicación que se emplean para autenticar las solicitudes de API. Para ver las claves de acceso, haga clic en Claves de acceso en la hoja Configuración. Para más información sobre los tokens de aplicación, consulte Autenticación y autorización con Power BI Embedded.
Verá que tiene dos claves.
Copie estas claves y almacénelas de forma segura en la aplicación. Es muy importante tratar estas claves igual que una contraseña, ya que proporcionan acceso a todo el contenido de la colección de áreas de trabajo.
Aunque se muestran dos claves, solo se necesita una cada vez. La segunda clave se proporciona para que pueda regenerar periódicamente las claves sin interrumpir el acceso al servicio.
Ahora que tiene una instancia de Power BI para la aplicación y las claves de acceso, puede importar un informe en la propia aplicación. Antes de aprender a importar un informe, en la sección siguiente se describe la creación de conjuntos de datos e informes de Power BI para insertar en una aplicación.

Creación de conjuntos de datos e informes de Power BI para insertar en una aplicación

Ahora que ha creado una instancia de Power BI para su aplicación y tiene las claves de acceso, deberá crear los conjuntos de datos y los informes de Power BI que quiere insertar. Los conjuntos de datos y los informes se pueden crear con Power BI Desktop. Puede descargar Power BI Desktop gratis. Por otro lado, si desea empezar a trabajar rápidamente, también puede descargar el archivo PBIX con un ejemplo de análisis de minoristas.
Nota
Para aprender más acerca de cómo usar Power BI Desktop, consulte Introducción a Power BI Desktop.
Con Power BI Desktop, para conectarse al origen de datos, puede importar una copia de los datos en Power BI Desktop o conectarse directamente al origen de datos mediante DirectQuery.
Estas son las diferencias entre usar Importación y DirectQuery.
ImportarDirectQuery
Las tablas, las columnas y los datos se importan o se copian en Power BI Desktop. Mientras trabaja con visualizaciones, Power BI Desktop consulta una copia de los datos. Para ver los cambios que se han producido en los datos subyacentes, debe actualizar o importar de nuevo un conjunto de datos actual completo.En Power BI Desktop , solo se importan o copian tablas y columnas. Mientras trabaja con visualizaciones, Power BI Desktop consulta el origen de datos subyacente, lo que significa que siempre verá los datos actuales.
Para más información acerca de cómo conectarse a un origen de datos, consulte Conectarse a un origen de datos.
Cuando guarde el trabajo en Power BI Desktop, se creará un archivo PBIX. Este archivo contiene el informe. Además, si los datos se han importado, el archivo PBIX contendrá el conjunto de datos completo, mientras que, si se ha utilizado DirectQuery, el archivo PBIX solamente contendrá un esquema del conjunto de datos. Puede implementar el archivo PBIX mediante programación en su área de trabajo con la API de importación de Power BI.
Nota
Power BI Embedded incluye API adicionales que permiten cambiar el servidor y la base de datos a los que apunta el conjunto de datos y definir una credencial de cuenta de servicio, que será la que use el conjunto de datos para conectarse a la base de datos. Consulte Post SetAllConnections y Patch Gateway Datasource (Revisión de origen de datos de puerta de enlace).

Pasos siguientes

En los pasos anteriores, ha creado una colección de áreas de trabajo y su primer informe y conjunto de datos. Ahora es el momento de aprender a escribir código en Power BI Embedded. Para ayudarle a empezar, hemos creado una aplicación web de ejemplo: Introducción al ejemplo de Microsoft Power BI Embedded. El ejemplo le muestra cómo:
  • Aprovisionar contenido
    • Crear un área de trabajo
    • Importar un archivo PBIX
    • Actualizar las cadenas de conexión y establecer las credenciales para los conjuntos de datos.
  • Insertar un informe de forma segura

Escenarios comunes de Microsoft Power BI Embedded

Microsoft Power BI Embedded se centra principalmente en la exposición de la mayoría de las funcionalidades de la API de Power BI existentes como parte de un servicio de Azure con el que desarrollar las aplicaciones. Además, podrá aprovisionar, desarrollar e implementar los recursos necesarios y el contenido de Power BI mediante programación. Para más información, consulte Introducción a Microsoft Power BI Embedded.
Estos son algunos escenarios para usar Power BI Embedded en sus aplicaciones.
  • Se pueden incrustar informes totalmente interactivos que se crearon en Power BI Desktop dentro de su aplicación mediante un nuevo modelo de autenticación de token de aplicación.
  • Los clientes y proveedores de software independiente que crean aplicaciones de acceso al cliente, pueden usar el servicio de Power BI Embedded y el SDK de Power BI para incrustar informes interactivos. Para más información, consulte Introducción a Microsoft Power BI Embedded.
  • Como desarrollador, puede usar el marco de trabajo de visualización de Power BI para crear visualizaciones personalizadas que pueden usarse en su propia aplicación. Consulte Amplíe Power BI con elementos visuales personalizados.

Interacción con informes de Power BI mediante la API de JavaScript

La API de JavaScript de Power BI permite insertar fácilmente informes de Power BI en las aplicaciones. Con ella, las aplicaciones pueden interactuar mediante programación con distintos elementos de los informes, como las páginas y filtros. Esta interactividad hace que los informes Power BI se integren mejor en las aplicaciones.
Dichos informes se insertan en las aplicaciones mediante un iframe que se hospeda como parte de la aplicación. El iframe hace de límite entre la aplicación y el informe, como se puede ver en la siguiente imagen.
iframe de Power BI Embedded sin la API de Javascript
El iframe facilita mucho el proceso de integración, pero sin la API de JavaScript el informe y la aplicación no pueden interactuar entre sí. Esta falta de interacción puede hacer parecer que el informe no forma parte de la aplicación. El informe y la aplicación necesitan comunicarse bidireccionalmente, como se muestra en la siguiente imagen.
iframe de Power BI Embedded con la API de Javascript
La API de JavaScript de Power BI permite escribir código que puede pasar de forma segura a través del límite del iframe. Esto permite que la aplicación realice una acción en un informe mediante programación y que escuche eventos de acciones que realizan los usuarios dentro del informe.

¿Qué se puede hacer con la API de JavaScript de Power BI?

Con la API de JavaScript se pueden administrar informes, navegar a las distintas páginas de un informe, filtrar un informe y controlar eventos de inserción. En el siguiente diagrama se muestra la estructura de la API.
Diagrama de la API de JavaScript de Power BI

Administración de informes

La API de Javascript permite administrar el comportamiento en el nivel de página y de informe:

Navegación a las páginas de un informe

La API de JavaScript permite para detectar todas las páginas de un informe y establecer la página actual. Pruebe la aplicación de demostración de navegación.

Filtro de un informe

La API de JavaScript proporciona funcionalidades de filtro básicas y avanzadas para informes páginas de informes integrados. Pruebe la aplicación de demostración de filtroy revise aquí el código de introducción.

Filtros básicos

Los filtros básicos se colocan en un nivel de jerarquía o de columna, y contienen la lista de valores que se incluyen o excluyen.
Copy
 
const basicFilter: pbi.models.IBasicFilter = {
  $schema: "http://powerbi.com/product/schema#basic",
  target: {
    table: "Store",
    column: "Count"
  },
  operator: "In",
  values: [1,2,3,4]
}

Filtros avanzados

Los filtros avanzados utilizan los operadores lógicos AND y OR, y aceptan una o dos condiciones, cada una de ellas con su propio operador y valor. Estas son las condiciones que se admiten:
  • None
  • LessThan
  • LessThanOrEqual
  • GreaterThan
  • GreaterThanOrEqual
  • Contains
  • DoesNotContain
  • StartsWith
  • DoesNotStartWith
  • Is
  • IsNot
  • IsBlank
  • IsNotBlank
Copy
 
const advancedFilter: pbi.models.IAdvancedFilter = {
  $schema: "http://powerbi.com/product/schema#advanced",
  target: {
    table: "Store",
    column: "Name"
  },
  logicalOperator: "Or",
  conditions: [
    {
      operator: "Contains",
      value: "Wash"
    },
    {
      operator: "Contains",
      value: "Park"
    }
  ]
}

Control de eventos

Además de enviar información al iframe, la aplicación también puede recibir información sobre los siguientes eventos que proceda de iframe:
  • Insertar
    • loaded
    • error
  • Informes
    • pageChanged
    • dataSelected (próximamente)

Procedimiento para usar Power BI Embedded con REST

Power BI Embedded: qué es y para qué sirve

En el sitio oficial de Power BI Embeddedpuede encontrar información general sobre este servicio, pero vamos a resumir brevemente sus aspectos principales antes de adentrarnos en los detalles sobre cómo utilizarlo con REST.
Es bastante sencillo. En ocasiones, un ISV quiere usar las visualizaciones de datos dinámicos de Power BI en su propia aplicación como bloques de creación de interfaz de usuario.
Sin embargo, como sabe, ya se pueden incrustar informes o iconos de Power BI en las páginas web sin necesidad de utilizar el servicio de Azure Power BI Embedded gracias a la API de Power BI. Cuando quiera compartir los informes en la misma organización, puede incrustar los informes con la autenticación de Azure AD. El usuario que vea los informes debe iniciar sesión con su propia cuenta de Azure AD. Cuando quiera compartir los informes con todos los usuarios (incluidos los externos), solo tendrá que incrustarlos con acceso anónimo.
No obstante, esta sencilla solución de incrustación no satisface las necesidades de una aplicación de ISV. La mayoría de las aplicaciones de ISV tienen que entregar los datos de sus propios clientes, que no tienen por qué ser usuarios de su organización. Por ejemplo, si brinda algún servicio a la compañía A y B, los usuarios de la A solo deberían ver datos de su propia empresa. Es decir, deben habilitarse los servicios multiinquilino para realizar la entrega.
La aplicación de ISV también podría ofrecer sus propios métodos de autenticación, como la autenticación de formularios, la autenticación básica, etc. Después, la solución de incrustación debe colaborar con este método de autenticación existente de forma segura. También se requiere que los usuarios puedan usar estas aplicaciones de ISV sin comprar más licencias de suscripción de Power BI.
Power BI Embedded se ha diseñado para, precisamente, estos tipos de escenarios de ISV. Por tanto, ahora que ya hemos visto una breve introducción de este servicio, pasemos a los detalles.
Puede utilizar el SDK de .NET (C# o Node.js para compilar fácilmente una aplicación con Power BI Embedded. Sin embargo, en este artículo explicaremos el flujo HTTP (incluida la autorización) de Power BI sin los SDK. Al entender este flujo, podrá compilar su aplicación con cualquier lenguaje de programación y comprender a fondo la esencia de Power BI Embedded.

Creación de una colección de áreas de trabajo de Power BI y obtención de la clave de acceso (aprovisionamiento)

Power BI Embedded es uno de los servicios de Azure. Solo al ISV que usa Azure Portal se le cobran cuotas de uso (por sesión de usuario y hora); al usuario que ve el informe no se le cobra nada ni se le exige tener una suscripción de Azure. Antes de comenzar a desarrollar nuestra aplicación, debemos crear la colección de áreas de trabajo de Power BI mediante el Portal de Azure.
Cada área de trabajo de Power BI Embedded es también la de cada cliente (inquilino); podemos agregar numerosas áreas de trabajo en cada colección de áreas de trabajo. En cada colección de áreas de trabajo se utiliza la misma clave de acceso. De hecho, la colección de áreas de trabajo constituye el límite de seguridad de Power BI Embedded.
Cuando termine de crear la colección de áreas de trabajo, copie la clave de acceso desde el Portal de Azure.
Nota
También podemos aprovisionar la colección de áreas de trabajo y obtener la clave de acceso a través de la API de REST. Para obtener más información, consulte Power BI Resource Provider APIs(API del proveedor de recursos de Power BI).

Creación del archivo .pbix con Power BI Desktop

Después, tenemos que crear la conexión de datos y los informes que vamos a incrustar. Para esta tarea no hay que agregar código ni realizar trabajos de programación; basta con usar Power BI Desktop. En este artículo, no veremos los detalles de cómo usar Power BI Desktop. Si necesita más ayuda con este tema, consulte Introducción a Power BI Desktop. En nuestro ejemplo, usaremos el ejemplo Análisis de venta directa.

Creación de un área de trabajo de Power BI

Ahora que hemos terminado de realizar el aprovisionamiento, comenzaremos creando el área de trabajo del cliente en la colección de áreas de trabajo a través de las API de REST. La siguiente solicitud POST HTTP (REST) va a crear la nueva área de trabajo en nuestra colección de áreas de trabajo existente. En nuestro ejemplo, el nombre de la colección de áreas de trabajo es mypbiapp. Solo hay que establecer la clave de acceso, que copiamos anteriormente, como AppKey. Como podrá comprobar, se trata de una autenticación muy sencilla.
Solicitud HTTP
Copy
 
POST https://api.powerbi.com/v1.0/collections/mypbiapp/workspaces
Authorization: AppKey MpaUgrTv5e...
Respuesta HTTP
Copy
 
HTTP/1.1 201 Created
Content-Type: application/json; odata.metadata=minimal; odata.streaming=true
Location: https://wabi-us-east2-redirect.analysis.windows.net/v1.0/collections/mypbiapp/workspaces
RequestId: 4220d385-2fb3-406b-8901-4ebe11a5f6da

{
  "@odata.context": "http://wabi-us-east2-redirect.analysis.windows.net/v1.0/collections/mypbiapp/$metadata#workspaces/$entity",
  "workspaceId": "32960a09-6366-4208-a8bb-9e0678cdbb9d",
  "workspaceCollectionName": "mypbiapp"
}
El valor devuelto workspaceId se utiliza en las siguientes llamadas de API posteriores. Nuestra aplicación debe conservar este valor.

Importación del archivo .pbix en el área de trabajo

Cada área de trabajo puede hospedar un solo archivo de Power BI Desktop con un conjunto de datos (incluida la configuración de los orígenes de datos) y los informes. Podemos importar el archivo .pbix al área de trabajo, tal y como se muestra en el código siguiente. Como puede observar, podemos cargar el binario del archivo .pbix utilizando varias partes MIME en HTTP.
El fragmento de URI 32960a09-6366-4208-a8bb-9e0678cdbb9d es el id. del área de trabajo, y el parámetro de consulta datasetDisplayName es el nombre del conjunto de datos que se va a crear. El conjunto de datos creado contiene todos los artefactos relacionados con los datos del archivo .pbix, como los datos importados, el puntero al origen de datos, etc.
Copy
 
POST https://api.powerbi.com/v1.0/collections/mypbiapp/workspaces/32960a09-6366-4208-a8bb-9e0678cdbb9d/imports?datasetDisplayName=mydataset01
Authorization: AppKey MpaUgrTv5e...
Content-Type: multipart/form-data; boundary="A300testx"

--A300testx
Content-Disposition: form-data

{the content (binary) of .pbix file}
--A300testx--
La ejecución de esta tarea de importación puede durar unos instantes. Cuando haya finalizado, nuestra aplicación puede solicitar el estado de la tarea mediante el id. de importación. En nuestro ejemplo, el id. de importación es 4eec64dd-533b-47c3-a72c-6508ad854659.
Copy
 
HTTP/1.1 202 Accepted
Content-Type: application/json; charset=utf-8
Location: https://wabi-us-east2-redirect.analysis.windows.net/v1.0/collections/mypbiapp/workspaces/32960a09-6366-4208-a8bb-9e0678cdbb9d/imports/4eec64dd-533b-47c3-a72c-6508ad854659?tenantId=myorg
RequestId: 658bd6b4-b68d-4ec3-8818-2a94266dc220

{"id":"4eec64dd-533b-47c3-a72c-6508ad854659"}
El siguiente código solicita el estado con este id. de importación:
Copy
 
GET https://api.powerbi.com/v1.0/collections/mypbiapp/workspaces/32960a09-6366-4208-a8bb-9e0678cdbb9d/imports/4eec64dd-533b-47c3-a72c-6508ad854659
Authorization: AppKey MpaUgrTv5e...
Si la tarea no finaliza, la respuesta HTTP podría ser similar a la siguiente:
Copy
 
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
RequestId: 614a13a5-4de7-43e8-83c9-9cd225535136

{
  "id": "4eec64dd-533b-47c3-a72c-6508ad854659",
  "importState": "Publishing",
  "createdDateTime": "2016-07-19T07:36:06.227",
  "updatedDateTime": "2016-07-19T07:36:06.227",
  "name": "mydataset01"
}
Si la tarea finaliza, la respuesta HTTP podría ser más parecida a esta:
Copy
 
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
RequestId: eb2c5a85-4d7d-4cc2-b0aa-0bafee4b1606

{
  "id": "4eec64dd-533b-47c3-a72c-6508ad854659",
  "importState": "Succeeded",
  "createdDateTime": "2016-07-19T07:36:06.227",
  "updatedDateTime": "2016-07-19T07:36:06.227",
  "reports": [
    {
      "id": "2027efc6-a308-4632-a775-b9a9186f087c",
      "name": "mydataset01",
      "webUrl": "https://app.powerbi.com/reports/2027efc6-a308-4632-a775-b9a9186f087c",
      "embedUrl": "https://app.powerbi.com/appTokenReportEmbed?reportId=2027efc6-a308-4632-a775-b9a9186f087c"
    }
  ],
  "datasets": [
    {
      "id": "458e0451-7215-4029-80b3-9627bf3417b0",
      "name": "mydataset01",
      "tables": [
      ],
      "webUrl": "https://app.powerbi.com/datasets/458e0451-7215-4029-80b3-9627bf3417b0"
    }
  ],
  "name": "mydataset01"
}

Conectividad de los orígenes de datos (y servicio multiinquilino de datos)

Aunque casi todos los artefactos del archivo .pbix se importan en nuestra área de trabajo, no lo hacen las credenciales de los orígenes de datos. Como resultado, al utilizar el modo DirectQuery, no se mostrará correctamente el informe incrustado. Sin embargo, al usar el modo de importación, podremos ver el informe usando los datos importados existentes. En este caso, debemos establecer la credencial siguiendo los pasos que figuran abajo a través de llamadas REST.
En primer lugar, debe obtener el origen de datos de la puerta de enlace. Sabemos que el conjunto de datos id es el identificador que se devolvió antes.
Solicitud HTTP
Copy
 
GET https://api.powerbi.com/v1.0/collections/mypbiapp/workspaces/32960a09-6366-4208-a8bb-9e0678cdbb9d/datasets/458e0451-7215-4029-80b3-9627bf3417b0/Default.GetBoundGatewayDatasources
Authorization: AppKey MpaUgrTv5e...
Respuesta HTTP
Copy
 
GET HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal; odata.streaming=true
RequestId: 574b0b18-a6fa-46a6-826c-e65840cf6e15

{
  "@odata.context": "http://wabi-us-east2-redirect.analysis.windows.net/v1.0/collections/mypbiapp/workspaces/32960a09-6366-4208-a8bb-9e0678cdbb9d/$metadata#gatewayDatasources",
  "value": [
    {
      "id": "5f7ee2e7-4851-44a1-8b75-3eb01309d0ea",
      "gatewayId": "ca17e77f-1b51-429b-b059-6b3e3e9685d1",
      "datasourceType": "Sql",
      "connectionDetails": "{\"server\":\"testserver.database.windows.net\",\"database\":\"testdb01\"}"
    }
  ]
}
Cuando obtengamos el id. del conjunto de datos y de la puerta de enlace (consulte los identificadores gatewayId e id anteriores en el resultado devuelto), podremos cambiar la credencial de este origen de datos de la siguiente manera:
Solicitud HTTP
Copy
 
PATCH https://api.powerbi.com/v1.0/collections/mypbiapp/workspaces/32960a09-6366-4208-a8bb-9e0678cdbb9d/gateways/ca17e77f-1b51-429b-b059-6b3e3e9685d1/datasources/5f7ee2e7-4851-44a1-8b75-3eb01309d0ea
Authorization: AppKey MpaUgrTv5e...
Content-Type: application/json; charset=utf-8

{
  "credentialType": "Basic",
  "basicCredentials": {
    "username": "demouser",
    "password": "P@ssw0rd"
  }
}
Respuesta HTTP
Copy
 
HTTP/1.1 200 OK
Content-Type: application/octet-stream
RequestId: 0e533c13-266a-4a9d-8718-fdad90391099
En el entorno de producción, también podemos establecer la cadena de conexión diferente para cada área de trabajo mediante la API de REST. (es decir, podemos separar la base de datos de cada cliente).
El siguiente código va a cambiar la cadena de conexión del origen de datos a través de REST.
Copy
 
POST https://api.powerbi.com/v1.0/collections/mypbiapp/workspaces/32960a09-6366-4208-a8bb-9e0678cdbb9d/datasets/458e0451-7215-4029-80b3-9627bf3417b0/Default.SetAllConnections
Authorization: AppKey MpaUgrTv5e...
Content-Type: application/json; charset=utf-8

{
  "connectionString": "data source=testserver02.database.windows.net;initial catalog=testdb02;persist security info=True;encrypt=True;trustservercertificate=False"
}
También podemos usar la característica de seguridad de nivel de fila de Power BI Embedded y separar los datos de cada uno de los usuarios en un informe. Como resultado, podemos aprovisionar cada informe de cliente con el mismo archivo .pbix (interfaz de usuario, etc.) y distintos orígenes de datos.
Nota
Si está utilizando el modo de importación en lugar del modo DirectQuery, no se podrán actualizar modelos a través de la API. Además, en Power BI Embedded todavía no se admiten orígenes de datos locales a través de la puerta de enlace de Power BI. Sin embargo, le recomendamos que eche un vistazo al blog de Power BI para ver las novedades y los cambios que incorporarán las futuras versiones.

Autenticación y hospedaje de informes (incrustación) en nuestra página web

En la API de REST anterior, podemos usar la clave de acceso AppKey como encabezado de autorización. Como estas llamadas pueden controlarse en el servidor backend, se trata de un método seguro.
Sin embargo, cuando incrustamos el informe en nuestra página web, este tipo de información de seguridad se controlaría con JavaScript (front-end). Después, debe protegerse el valor del encabezado de autorización. Si un código o un usuario malintencionados averiguan nuestra clave de acceso, pueden llamar a cualquier operación con esta clave.
Cuando incrustamos el informe se incrusta en nuestra página web, debemos utilizar el token calculado en lugar de la clave de acceso AppKey. Nuestra aplicación debe crear el token JSON Web Token (JWT) de OAuth, que consta de las notificaciones y la firma digital calculada. Tal y como se muestra a continuación, este JWT de OAuth es un token de cadena codificada delimitada por puntos.
En primer lugar, debemos preparar el valor de entrada, que se firma más adelante. Este valor es la cadena con codificación URL en formato Base64 (rfc4648) del siguiente JSON, y está delimitada por el carácter de punto (.). del informe.
Nota
Si quiere usar la característica de seguridad de nivel de fila (RLS) con Power BI Embedded, debe especificar también el nombre de usuario y los roles en las notificaciones.
Copy
 
{
  "typ":"JWT",
  "alg":"HS256"
}
Copy
 
{
  "wid":"{workspace id}",
  "rid":"{report id}",
  "wcn":"{workspace collection name}",
  "iss":"PowerBISDK",
  "ver":"0.2.0",
  "aud":"https://analysis.windows.net/powerbi/api",
  "nbf":{start time of token expiration},
  "exp":{end time of token expiration}
}
Después, deberemos crear la cadena codificada en Base64 de HMAC (la firma) con el algoritmo SHA256. Este valor de entrada firmado es la cadena anterior.
Por último, debemos combinar la cadena de valor y la cadena de firma con el carácter de punto (.). La cadena completa es el token de aplicación para la incrustación de informes. Aunque un usuario malintencionado averigüe el token de aplicación, no podrá obtener la clave de acceso original. Este token de aplicación expira rápidamente.
Este es un ejemplo PHP de estos pasos:
Copy
 
<?php
// 1. power bi access key
$accesskey = "MpaUgrTv5e...";

// 2. construct input value
$token1 = "{" .
  "\"typ\":\"JWT\"," .
  "\"alg\":\"HS256\"" .
  "}";
$token2 = "{" .
  "\"wid\":\"32960a09-6366-4208-a8bb-9e0678cdbb9d\"," . // workspace id
  "\"rid\":\"2027efc6-a308-4632-a775-b9a9186f087c\"," . // report id
  "\"wcn\":\"mypbiapp\"," . // workspace collection name
  "\"iss\":\"PowerBISDK\"," .
  "\"ver\":\"0.2.0\"," .
  "\"aud\":\"https://analysis.windows.net/powerbi/api\"," .
  "\"nbf\":" . date("U") . "," .
  "\"exp\":" . date("U" , strtotime("+1 hour")) .
  "}";
$inputval = rfc4648_base64_encode($token1) .
  "." .
  rfc4648_base64_encode($token2);

// 3. get encoded signature
$hash = hash_hmac("sha256",
    $inputval,
    $accesskey,
    true);
$sig = rfc4648_base64_encode($hash);

// 4. show result (which is the apptoken)
$apptoken = $inputval . "." . $sig;
echo($apptoken);

// helper functions
function rfc4648_base64_encode($arg) {
  $res = $arg;
  $res = base64_encode($res);
  $res = str_replace("/", "_", $res);
  $res = str_replace("+", "-", $res);
  $res = rtrim($res, "=");
  return $res;
}
?>

Incrustación del informe en la página web (último paso)

Para incrustar el informe, debe obtener la URL de incrustación y el id. del informe mediante la siguiente API de REST.
Solicitud HTTP
Copy
 
GET https://api.powerbi.com/v1.0/collections/mypbiapp/workspaces/32960a09-6366-4208-a8bb-9e0678cdbb9d/reports
Authorization: AppKey MpaUgrTv5e...
Respuesta HTTP
Copy
 
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal; odata.streaming=true
RequestId: d4099022-405b-49d3-b3b7-3c60cf675958

{
  "@odata.context": "http://wabi-us-east2-redirect.analysis.windows.net/v1.0/collections/mypbiapp/workspaces/32960a09-6366-4208-a8bb-9e0678cdbb9d/$metadata#reports",
  "value": [
    {
      "id": "2027efc6-a308-4632-a775-b9a9186f087c",
      "name": "mydataset01",
      "webUrl": "https://app.powerbi.com/reports/2027efc6-a308-4632-a775-b9a9186f087c",
      "embedUrl": "https://embedded.powerbi.com/appTokenReportEmbed?reportId=2027efc6-a308-4632-a775-b9a9186f087c",
      "isFromPbix": false
    }
  ]
}
Podemos incrustar el informe en nuestra aplicación web con el token de aplicación anterior. Si observamos el código de ejemplo siguiente, la primera parte es la misma que la del ejemplo anterior. En la última parte, este ejemplo muestra el elemento embedUrl (consulte el resultado anterior) del iframe y va a publicar el token de aplicación en dicho iframe.
Nota
Tendrá que cambiar el valor del id. del informe a uno suyo. Además, debido a un error de nuestro sistema de gestión de contenidos, la etiqueta iframe del ejemplo de código se lee literalmente. Quite el texto en mayúsculas de la etiqueta si va a copiar y pegar este código de ejemplo.
Copy
 
    <?php
    // 1. power bi access key
    $accesskey = "MpaUgrTv5e...";

    // 2. construct input value
    $token1 = "{" .
      "\"typ\":\"JWT\"," .
      "\"alg\":\"HS256\"" .
      "}";
    $token2 = "{" .
      "\"wid\":\"32960a09-6366-4208-a8bb-9e0678cdbb9d\"," . // workspace id
      "\"rid\":\"2027efc6-a308-4632-a775-b9a9186f087c\"," . // report id
      "\"wcn\":\"mypbiapp\"," . // workspace collection name
      "\"iss\":\"PowerBISDK\"," .
      "\"ver\":\"0.2.0\"," .
      "\"aud\":\"https://analysis.windows.net/powerbi/api\"," .
      "\"nbf\":" . date("U") . "," .
      "\"exp\":" . date("U" , strtotime("+1 hour")) .
      "}";
    $inputval = rfc4648_base64_encode($token1) .
      "." .
      rfc4648_base64_encode($token2);

    // 3. get encoded signature value
    $hash = hash_hmac("sha256",
        $inputval,
        $accesskey,
        true);
    $sig = rfc4648_base64_encode($hash);

    // 4. get apptoken
    $apptoken = $inputval . "." . $sig;

    // helper functions
    function rfc4648_base64_encode($arg) {
      $res = $arg;
      $res = base64_encode($res);
      $res = str_replace("/", "_", $res);
      $res = str_replace("+", "-", $res);
      $res = rtrim($res, "=");
      return $res;
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8" />
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <title>Test page</title>
      <meta name="viewport" content="width=device-width, initial-scale=1">
    </head>
    <body>
      <button id="btnView">View Report !</button>
      <div id="divView">
        <**REMOVE THIS CAPPED TEXT IF COPIED** iframe id="ifrTile" width="100%" height="400"></iframe>
      </div>
      <script>
        (function () {
          document.getElementById('btnView').onclick = function() {
            var iframe = document.getElementById('ifrTile');
            iframe.src = 'https://embedded.powerbi.com/appTokenReportEmbed?reportId=2027efc6-a308-4632-a775-b9a9186f087c';
            iframe.onload = function() {
              var msgJson = {
                action: "loadReport",
                accessToken: "<?=$apptoken?>",
                height: 500,
                width: 722
              };
              var msgTxt = JSON.stringify(msgJson);
              iframe.contentWindow.postMessage(msgTxt, "*");
            };
          };
        }());
      </script>
    </body>
Este es el resultado:
En este momento, Power BI Embedded solo muestra el informe en el iframe. No obstante, eche un vistazo al [blog de Power BI](). En futuras mejoras se podrán usar nuevas API del lado cliente con la que podremos enviar información en el iframe, además de extraer datos. Sin duda, una característica realmente útil.