¿Cómo incrustar algunos mosaicos de Power BI en una aplicación de Rails?

Un usuario Pregunto ✅

fro_oo

Hola,

Estoy luchando con esto desde hace una semana… Probé tantas cosas, leí tantas documentaciones (tutorial), no puedo encontrar ninguna solución y he perdido la claridad. En serio necesito tu ayuda.

  1. He creado una aplicación Rails simple.
  2. Tengo una cuenta de Power BI y una cuenta de Azure.
  3. Estoy usando un conjunto de datos de ejemplo en PowerBI (muestra de análisis minorista).

Quiero que mis usuarios inicien sesión en mi aplicación (a través del dispositivo), luego accedan a algunas páginas y vean los mosaicos de PowerBI integrados (o un informe, o quizás un panel). Luego quiero que puedan filtrar los resultados. Un ejemplo del lado del cliente es https://microsoft.github.io/PowerBI-JavaScript/demo/filters.html.

Quiero poder hacer lo mismo.

Estoy perdido con toda la identificación del cliente, secreto, recurso uri, recurso url, …

¿Qué solución/tutorial debo usar?

Muchísimas gracias por su tiempo,

francois

greg_deckler

¿Con cuidado?

Hablando en serio, parece que este artículo debería llevarte allí:

https://powerbi.microsoft.com/en-us/blog/intro-pbi-js-api/

Creo que un requisito previo para esto es Power BI Embedded, aunque puedo estar confundido en ese punto.

https://azure.microsoft.com/en-us/services/power-bi-embedded/

Usé este tutorial cuando lo hice:

https://azure.microsoft.com/en-us/documentation/articles/power-bi-embedded-get-started-sample/

fro_oo

En respuesta a greg_deckler

Gracias por su respuesta.

¿Con cuidado? sí 🙂

Bueno, la API JS no es con lo que estoy luchando. Es lo último que verifico en mi tarea pendiente. Y no quiero crear un proyecto .Net, sino uno Rails. El proceso básico es el mismo, lo entiendo.

Aquí hay un montón de preguntas, gracias por su experiencia y consejos:

#1

¿Necesito registrar una aplicación para Power BI con https://dev.powerbi.com/apps?type=web?

(Ya lo he hecho)

#2

¿Necesito crear un Active Directory (y un usuario de Azure)? Luego, ¿agregar una aplicación que autorice el servicio Power BI?

https://manage.windowsazure.com/@my-tenant.onmicrosoft.com#Workspaces/ActiveDirectoryExtension/Direc…

(Ya lo he hecho)

#3

¿Necesito crear un área de trabajo para Power BI Embedded aquí https://portal.azure.com/#create/Microsoft.PowerBI?

Para mí, parece que hay muchas formas de implementar Power BI Embedded en una aplicación web. Estoy perdido.

Gracias

greg_deckler

En respuesta a fro_oo

Mi comprensión del proceso y cómo lo hice funcionar, sí, debe hacer el n. ° 3. El tutorial de la aplicación de muestra proporciona una aplicación de línea de comandos de .NET e instrucciones para registrar su instancia de Power BI Embedded y configurarla, etc. Al menos, eso es lo que recuerdo.

fro_oo

En respuesta a greg_deckler

Ok, ¿entonces nunca tuviste que seguir ese tutorial?

https://powerbi.microsoft.com/en-us/documentation/powerbi-developer-integrate-tile/

¿Ni ese?

https://msdn.microsoft.com/en-us/library/mt186158.aspx

(Oh)

hombre de la métrica

En respuesta a fro_oo

Puedo sentir tu dolor, me confundí mucho al leer la documentación cuando intentaba configurar Embeding.

No es completamente culpa de la documentación, tiene más que ver con las diferentes funcionalidades que se lanzan en diferentes momentos, por lo que la documentación anterior habla de la funcionalidad que la incrustación es mejor por ahora.

Para sus requisitos de tener una aplicación Rails en la que el usuario inicia sesión y ve informes, Embedded es la forma recomendada, con la excepción de que es interna (usuarios de confianza), entonces se puede usar Azure.

El método de aplicación de Azure es para usuarios internos ya que el token está expuesto (si lo buscan).

El método de inserción necesita un servidor en el medio que genera tokens a corto plazo para el usuario.

La parte del «servidor en el medio» en la que me quedo atascado durante una semana 😞 .

El ejemplo de JS al que hizo referencia si lo clona y revisa o mira la fuente, puede ver que llama a un servidor que devuelve los datos requeridos. Entonces, para su aplicación de rieles, necesita construir / crear un servidor que maneje esa tarea …

Espero que ayude, yo tampoco estoy completamente allí, ¡así que no tomes esto como definitivo!

fro_oo

En respuesta a hombre de la métrica

Hola metricsman, gracias por compartir tu experiencia.

Estoy intentando cosas diferentes en este momento, con la esperanza de encontrar una solución clara.

Eventualmente lo publicaré aquí.

Salud

hombre de la métrica

En respuesta a fro_oo

Buena suerte, definitivamente parece ser algo más complicado de lo que inicialmente.

¡Qué bueno escuchar tu solución una vez que llegues allí!

fro_oo

En respuesta a hombre de la métrica

Hola,

Para tener éxito tuve que olvidar todo lo que había leído antes… y empezar de nuevo con esto:

https://azure.microsoft.com/en-us/documentation/articles/power-bi-embedded-iframe/

EN EL PORTAL AZUL

Cree una colección de áreas de trabajo de Power BI y obtenga la clave de acceso (Aprovisionamiento)

OBTENGA UN PBIX

Desde Power BI Desktop o un archivo de muestra

CON CLI

(debe usar ese: https://github.com/Microsoft/PowerBI-Cli)

Crear un espacio de trabajo de Power BI

Importar archivo .pbix en el espacio de trabajo

Obtener identificación del informe

EN LA APLICACIÓN MY RAILS

(usando https://github.com/jwt/ruby-jwt)

Incrustar el informe en la página web

No puedo decir acerca de los muchos errores encontrados, o los problemas de registro/inicio de sesión con Azure… fue realmente doloroso llegar allí.

Saludos a todos.

hombre de la métrica

En respuesta a fro_oo

Felicidades !

Estoy de acuerdo con los errores, incluso la CLI que no se ejecuta en Mac me tomó algunas horas para resolver carita triste

¿Puedo preguntar si está utilizando solo la clave de acceso principal y no genera una clave de tiempo corto?

Si es así, cómo asegurarlo o no es un factor en su caso de uso.

Gracias.

fro_oo

En respuesta a hombre de la métrica

Hola.

No estoy seguro de entender su pregunta, la mayoría de las cosas que he hecho hasta ahora están más allá de mi comprensión. 🙂

Estoy usando la «CLAVE 1» asociada con la colección WorkSpace creada en Azure Portal.

Quizás esto te ayude.

Aquí están los comandos CLI:

$ powerbi get-workspaces -c MyWorkspaceCollection -k TheVeryLongKey1IHaveCopiedOnTheAzurePortal123456789=

$ powerbi create-workspace -c MyWorkspaceCollection -k TheVeryLongKey1IHaveCopiedOnTheAzurePortal123456789=

$ powerbi import -c MyWorkspaceCollection -w TheWorkspaceIDIHaveJustCreated54321 -k TheVeryLongKey1IHaveCopiedOnTheAzurePortal123456789= -f ~/Downloads/Retail Analysis Sample.pbix -n "Retail Analysis Sample"

$ powerbi get-reports -c MyWorkspaceCollection -w TheWorkspaceIDIHaveJustCreated54321 -k TheVeryLongKey1IHaveCopiedOnTheAzurePortal123456789=

En Rails, mi controlador es:

require 'jwt'

class JwtController < ApplicationController

  ACCESSKEY = "TheVeryLongKey1IHaveCopiedOnTheAzurePortal123456789"

  TOKEN1 = {
    "typ" => "JWT",
    "alg" => "HS256",
    "wid" => "TheWorkspaceIDIHaveJustCreated54321",
    "rid" => "TheReportIDIHaveRetreived134679",
    "wcn" => "MyWorkspaceCollection",
    "iss" => "PowerBISDK",
    "ver" => "0.2.0",
    "aud" => "https://analysis.windows.net/powerbi/api",
    "nbf" => Time.now.to_i,
    "exp" => Time.now.to_i + 4 * 3600
  }

  def connect
    @token = JWT.encode TOKEN1, ACCESSKEY, 'HS256'
  end

end

Finalmente, la vista:

<button id="btnView">View Report !</button>
<div id="divView">
  <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=TheReportIDIHaveRetreived134679";
      iframe.onload = function() {
        var msgJson = {
          action: "loadReport",
          accessToken: "<%= @token %>",
          height: 800,
          width: 800
        };
        var msgTxt = JSON.stringify(msgJson);
        iframe.contentWindow.postMessage(msgTxt, "*");
      };
    };
  }());
</script>

Espero que te ayude a ti o a cualquier otra persona.

Salud

hombre de la métrica

En respuesta a fro_oo

Creo que tu comprensión es mejor que la mía…

No he usado Rails, pero creo que si un usuario final puede ver la tecla de acceso en el controlador, entonces puede acceder al espacio de trabajo.

Ese fue el formulario: https://azure.microsoft.com/en-us/documentation/articles/power-bi-embedded-iframe/

«Pero, cuando incrustamos el informe en nuestra página web, este tipo de información de seguridad se manejaría mediante JavaScript (frontend). Luego, el valor del encabezado de autorización debe estar protegido. Si nuestra clave de acceso es descubierta por un usuario malicioso o un código malicioso, pueden llamar a cualquier operación usando esta clave».

Así que he seguido un camino complicado de tener una llamada usada una «api» que usa la tecla de acceso para devolver el token a corto plazo, lo mismo que piensa su controlador.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *