Cada día crece y crece aún más la nube. La confianza y seguridad que la misma provee se esta destacando lo que fortalece el vínculo con sus usuarios.
La solución de PowerBi local consiste en un Servidor de informes adherido a SQL Server. Esta versión tiene sus limitaciones contra PowerBi Service que todo el tiempo nos trae muchas características atractivas.
Este artículo nos enseñará a migrar informes publicados en Power Bi Report Server hasta un Power Bi Service con la ayuda de la librería SimplePBI.
Vamos a conocer como migrar informes publicados en Report Server a Power Bi Service en tres pasos.
1. Conocer la API de PBIRS
Lo primero que tenemos que hacer para poder utilizar la API de Power Bi Report Server es tener a mano la documentación:
En ese apartado podremos encontrarnos con todos los tiros/requests que nos ayudarán a conocer lo que tenemos dentro del servidor. La prueba de cualquier request que sea GET es súper sencillo de probar. Basta con entrar a un navegador y colocar la dirección base + lo que deseamos. Por ejemplo para traer los PowerBIReports:
Localhost representa al servidor donde esta instalado el Report Server. Para facilitar el chequeo de los enlaces sencillamente asumiremos que tenemos acceso al servidor de ese modo.
A pesar que la API parece liberada dentro del servidor. La realidad es que no lo está para acceder por código. Entonces nuestro primer desafío será autenticar la API con Python. Esto lo conseguiremos con la librería requests_ntlm2. Creando un objeto HttpNtlmAuth(String Username, String Password) podremos utilizarlo dentro del parametro "auth" de la famosa librería "requests" de python.
Veamos un ejemplo para obtener los informes de Power Bi considerando que ya importamos la librería antes mencionada junto con requests y json:

Si completamos usuario y contraseña para loguear contra el Report Server podremos utilizar la API de esta forma.
NOTA: Si no configuraron usuarios para Report Server pueden usar la cuentasde Windows que usen para loguear al sistema operativo.
IMPORTANTE: PowerBi Report Server solo guarda la version del archivo almacenada desde Desktop. Las actualizaciones de datos generadas por SQL Agent no son visibles en el informe. Siempre descargará la versión publicada lo cual significa que hasta que no actualicen los datos desde service no estaría al dia el informe.
2. Obtener pbix de PBIRS para importar en Service
Ahora que sabemos como utilizar la API vamos a asumir que tenemos que migrar un informe que capturamos viendo la lista de informes. Leímos el ID que queríamos y lo resguardamos. Teniendo el ID del informe que queremos llevar a Power Bi Service podremos mantener el mismo nombre si lo extraeremos de un request y el contenido el archivo pbix con otro. Veamos el código

El script comienza con lo que vimos antes y asumiendo las tres librerías importadas. Fijense que tenemos una variable report_id adicional a lo que vimos antes. Esa la usaremos para nuestros requests. El primero será buscando la metadata del informe el cual explora el json buscando el atributo "Name" y le concatena la cadena string ".pbix" para completar el nombre de archivo con el formato "[Nombre Resultante].pbix" en la variable report_name.
El segundo tiro a la API lo haremos buscando el valor del contenido de ese ID. La respuesta será el content del response de la API.
3. Importar en Service
En este último proceso vamos a usar la librería de Python para usar la Power Bi Rest API llamada SimplePBI. La última respuesta vendrá con el formato esperado para utilizar nuestra librería. El objeto Imports contiene un método para importar en un workspace específico un contenido en una variable.

Los tres primeros parámetros serán los que usaremos.
- workspace_id: el area de trabajo donde publicarlo
- fileConten: el contenido del archivo que guardamos en la variable result
- datasetDisplayName: string con el nombre del archivo que debe terminar en .pbix tal como dejamos en la variable report_name
NOTA: Asumiremos que sabemos usar la librería o la API de Power Bi, es decir, registrar una app en azure con permisos ReadWrite.Dataset y la App como miembro del area de trabajo que usaremos con las opciones de PowerBi Service que permitan el uso de Service Principal.
Lo último que haremos en el script será crear el objeto token e imports para llamar al método deseado. Quedaría así:

De ese modo habremos llevado un informe de Power Bi Report Server hacia Power Bi Service permitiéndonos realizar la migración.
Si queremos ver el script completo podremos encontrarlo en mi github