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.
- He creado una aplicación Rails simple.
- Tengo una cuenta de Power BI y una cuenta de Azure.
- 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
¿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.