Durante 5 años ayudamos a las empresas a alcanzar sus objetivos de mercado y de marca. Millennial es una empresa especializada en tecnología.

Galleria

Contactos

Enrique Palacios 360, Oficina 313, Miraflores - Lima

+51-975-113-510

Blog Big Data Power BI
power bi-dax

Power BI: Cómo usar Python para automatizar tareas

por ZhongTr0n 

Como muchos entusiastas de datos, uso Power BI a diario para crear paneles y visualizar mis datos. Sin embargo, mientras construyo y mejoro un panel complejo, constantemente agrego y elimino widgets utilizando diferentes campos y tablas correspondientes. Después de numerosas iteraciones, la estructura de datos comienza a parecer un verdadero desastre, lo que resulta en una lista desordenada de muchas tablas y numerosas columnas o campos que utilicé en un momento para construir mi tablero. Sin embargo, al final sería bueno obtener una visión general de todos los campos que realmente estoy usando en mi panel final. Desafortunadamente, la única forma de lograrlo en Power BI, es ir a través de cada widget y echar un vistazo manualmente y anotar los campos que se han utilizado.

Buscar manualmente los datos detrás de los widgets en Power BI.

Como programadores, tratamos de evitar el trabajo manual por cualquier medio necesario, así que investigué un poco para ver si algún código podría reemplazar este trabajo repetitivo. Ahora, por supuesto, no escribiría este artículo si no se me ocurriera una solución. Resultó que era bastante simple lograr esto.

Deconstrucción de archivos PBIX

El primer paso para jugar con Power BI sin usar realmente el software es cavar en el archivo . PBIX. Usando software de compresión gratuito como WinRAR puedes descomprimir cualquier archivo . PBIX. archivo. Esto da como resultado una estructura de diferentes archivos y directorios que ofrecen un ámbito de posibilidades para el análisis y posiblemente la manipulación.

Al pasar por el archivo descomprimido, puede encontrar una carpeta ‘Informe’ que contiene un archivo de ‘diseño’. Este archivo contiene toda la información relativa a la estructura visual de su panel de control:

  • Coordenadas X/Y y tamaño de cada widget
  • Nombres de los campos utilizados
  • Todos los ajustes y parámetros
  • Títulos
  • … y mucho más

El archivo consiste en una cadena que es una especie de combinación de JSON, listas y diccionarios. Usando Python, planeé generar un resumen de los campos de datos y widgets realmente utilizados.

El archivo de diseño se abrió en un editor de texto.

Creación de un analizador

Esperaba que un simple analizador JSON funcionara, pero desafortunadamente dentro del JSON otras estructuras están anidadas, lo que hace que el código sea un poco más largo de lo que esperaba, pero en general sigue siendo bastante corto. Después de un poco de desconcierto y construir escenarios para excepciones, obtuve algunos resultados bastante decentes devolviendo una lista de tablas y campos correspondientes para cada widget.

Usando Pandas, resumí esta información en un marco de datos, eliminando toda la información duplicada (por ejemplo, dos widgets que usan los mismos datos). El resultado es un marco de datos limpio que contiene todos los datos que utilicé en mi panel de control con este aspecto:

Salida de fotogramas de datos en Jupyter Notebooks.

Versión en línea

Ok, ahora todo funciona bien en un Jupyter Notebook copiando y pegando la cadena del archivo de diseño y dejando que mi función haga el trabajo. Funciona bien, pero no de una manera muy fácil de usar, así que en el siguiente paso: convertir la función en una herramienta utilizable.

No queriendo abandonar a mi leal compañero llamado Python, elegí Flask para crear una aplicación web. Como no soy un desarrollador front-end, opté por un enfoque minimalista sin prestar demasiada atención al aspecto visual.

Versión en línea de la herramienta.

Básicamente, es solo una forma que toma la cadena como entrada, ejecuta la función, devuelve el marco de datos, convierte el marco de datos en una tabla HTML y finalmente se lo muestra al usuario. La herramienta es gratuita y no contiene adiciones. Puede ser un poco lento de vez en cuando, ya que está alojado en un servidor web de Heroku.

El resultado final, una tabla que muestra todos los campos de datos únicos utilizados para el panel.

¿Qué sigue?

Aunque estoy contento con la automatización de esta tarea, todavía se siente como un comienzo. Expandiendo el script y explorando otros archivos dentro del archivo . El archivo PBIX podría abrir muchas puertas nuevas. Por ejemplo, experimenté brevemente con manipulaciones menores en el archivo, comprimiéndolo nuevamente y volviéndolo a abrir a través de Power BI nuevamente, lo que pareció funcionar. Esto significa que debería ser posible usar scripts de Python para editar paneles.

Todavía no estoy seguro de a dónde iré a partir de aquí, pero algunas de las opciones podrían ser:

  • Seguimiento de cambios
  • Generación automática de informes
  • Creación de informes más extensos
  • …?

Si tiene alguna otra idea o comentario, no dude en dejarlos en los comentarios.

Para aquellos que quieran utilizar la herramienta, pueden encontrarla aquí.