[SimplePBI] Importar archivo de PowerBi de Github o Azure DevOps

Cada día aparece más y más métodos que ayudan a generar flujos de trabajo para los desarrollos analíticos que nos ayuden a versionar las soluciones. Muy a la par aparece el tema de deploys automáticos.

Seguramente leyendo por internet encontraremos muchos artículos que informan que solo es posible implementar PowerBi entre ambientes con Deployment Pipelines o usando Pipelines de Azure DevOps y seguramente pronto aparecerán con Github actions. Me gusta diferir pensando que podemos nosotros armar nuestros flujos con nuestro propio código.

En este artículo veremos como importar un archivo.pbix de un repositorio en Power Bi Service.

Todos los días son más y más los proyectos y empresas que comienzan a entender la importancia de versionado. Lo que lleva a la necesidad de trabajar nuestras soluciones con repositorios. Por la naturaleza de la tecnología Microsoft seguramente el 90% de los involucrados utilizan Azure DevOps o Github.

Cada una de las herramientas no solo tiene repositorio versionado, sino también otras herramientas para ayudarnos con flujos automáticos. La realidad es que esos flujos no son simples de entender ni construir. Me he encontrado con personas abrumadas y desanimadas por la compleja tarea de usarlos para implementar soluciones CI/CD. Esta clarísimo que por algo existen los Roles de DevOps.

Pensando en que hoy existe una gran versatilidad en como usar la tecnología es que LaDataWeb implementó en el desarrollo de la librería de Python para usar la PowerBi Rest API (SimplePBI), la posibilidad de importar archivos.pbix de nuestros repositorios directo a un área de trabajo de Power Bi.

No será el flujo más perfecto y robusto para enormes soluciones analíticas, pero si uno simple para mantener simple un deploy automático de pequeñas soluciones. Con pocas líneas de python podríamos tener un script que se encargue de implementar automáticamente estos archivos en Áreas de Trabajo. Esto podría fácilmente ser implementado en algún servicio cloud que permita ejecutar código como Azure Automation Runbooks, Azure Functions, AWS Lambdas o inclusive podría estar dentro de los pipelines o github actions antes mencionadas.

Azure DevOps

Para poder obtener acceso a nuestros archivos de repositorio por código, necesitamos crear un "Personal Access Token". La creación es tan simple como la siguiente imagen:

La pantalla de creación basta con delimitar un nombre, fecha de expiración (un año máximo) y el permiso al código como se ve en la imagen:

Luego de crear nos muestra la clave.

NOTA: copien la clave en ese momento porque luego no podremos volver a verla de nuevo.

Ahora si contamos con la clave de acceso para hacer el import de nuestro .pbix. Por ejemplo, yo tengo un archivo en mi repositorio con la siguiente dirección:

Para importarlo vamos a ejecutar sl siguiente código que autentica a la PowerBi Rest API como hacemos en otros posts y tiene valores adicionales para conectarnos a DevOps

Código aqui.

Fíjense como la imagen de la dirección que les mostré tiene lo que necesitamos. Organización es el primer valor de la dirección que vemos en DevOps, luego sigue el nombre de proyecto. A la derecha en con ícono rojo se ve el nombre del repositorio (en este caso coincide con el proyecto). La dirección o path la veíamos bajo una sola carpeta "Blogging". Autenticamos con la clave que creamos hace un momento. Finalmente, delimitamos en que área de trabajo de service queremos guardarlo. Veamos un simple gif del deploy en acción:


Github

Al igual que antes, para poder leer los archivos de nuestro repositorio, es necesario crear un token de autenticación. Lo primero es ir al ícono de nuestro perfil y abrir la configuración. Luego buscaremos configuración de desarrollador "developer settings". Ahi encontraremos las Personal Access Token:

Aquí vamos a generar una Token (classic) con permisos al repositorio como hicimos antes. Veamos como es la dirección y valores de nuestro archivo en el repo de github:

Nuestro código:

Código aqui.

Ahora tenemos otros valores aunque parecidos. El Owner del repositorio, el nombre y la dirección. Eso acompañado de la clave que generamos en un principio. Veamoslo en acción:


Así llegamos al final de nuestro artículo mostrando como un simple código puede importar archivos de powerbi desktop a service. El flujo queda en nuestra creatividad. Por ejemplo, podrían ser azure functions corriendo una vez a la semana por cada carpeta del repositorio, pensando una carpeta por area de trabajo. De esa forma tendríamos deploy continuos de una carpeta como si fuera un área de trabajo. ¡La creatividad es el límite! sobre todo para quienes solo usen licencias PRO.