¿Qué puedo hacer con Python en Power Bi?

Cada vez hay más interesados en el mundo de Power Bi llegando al punto de atraer data analyst y scientist que solían están enfocados en lenguajes de programación. Para ellos suele ser molesto el uso de la herramienta en su interfaz y cambios de lenguajes. 

Escribo este artículo para acompañar esos procesos y para ayudar a quienes conocen mucho sobre el lenguaje y se complican dentro de Power Bi. El post está enfocado en revelar donde y como podemos utilizar Python dentro de Power Bi Desktop. También revelará limitaciones al utilizar el lenguaje dentro de la herramienta.

¿Dónde puedo usarlo?

Antes de comenzar es importante tener configurado nuestro entorno deseado de python sobre nuestra herramienta. Para ello vamos a las Opciones de configuración de Power Bi y validamos que el path a python.exe sea el correcto. En mi casi tengo un entorno de anaconda. Es por ello que no tengo una carpeta "Python" como parte del directorio.

image

Para comprender como usarlo es importante comenzar definiendo en que parte de la herramienta se puede correr código del lenguaje. Existen tres formas de usar Python dentro de Power Bi:

  • Conector "Python Script"
  • Transformación de datos con Python
  • Visualización de Python

Conector Python

image

El conector python nos permite ejecutar cualquier código inicial dentro de las librerías instaladas dentro de nuestro entorno. El conector ejecutará el código como un script reteniendo todas las variables creadas dentro de las líneas. La gran ventaja la verán a continuación puesto que un dataframe de la famosa librería Pandas es interpretada como tabla.

import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/ibarrau/PowerBi-code/master/DatosPrueba/InternetSales.csv ", delimiter=";")

image

Al terminar nos aparecerá una pantalla de navegación preguntando cual de dichas variables queremos cargar en nuestro modelo.

image

Transformación de datos con Python

El segundo método para utilizar python es posterior a la conexión de Power Bi contra un origen de datos. En lugar de utilizar a python como el medio para llegar a un origen, continuo con la conexión nativa de Power Bi para utilizarlo posteriormente como transformación. Este proceso solo se aplica dentro del "editor de consultas" al cual accedemos en el menú de "Transformar Datos".

image

Aquí Power Bi nos comentará que para transformar algo de nuestra tabla actual tenemos que usar el nombre "dataset". Veamos un sencillo ejemplo de filtro para solo ver las ventas de las tiendas con clave entre 300 y 400.

image

La ejecución de éste código nos dará como resultado un data frame, como indica la siguiente imagen, que podremos desplegar dando click en "Tabla" 

image

Asi lograremos ejecutar un script de transformaciones sobre nuestro origen de datos leído con Power Bi. Las funciones ejecutadas en este espacio están limitadas a las instaladas en el entorno donde se ejecuta al igual que el método anterior.

Visualización de Python

La tercera y última opción es la de ejecutar código sobre un modelo de datos ya creado con objetivo de plotear una visualización. Esta opción está en el menú de visualización y nos desplegará un pequeño espacio para escribir el código.

image

Cuando arrastremos alguna columna sobre la visualización habilitaremos el editor que nos permitirá interactuar con dicha columna. El script nos guiará con un mensaje explicativo.

image

En ese mensaje ya vemos incluida las columnas que agregamos. Observen el siguiente ejemplo con la columna categórica "Cal" y un valor numérico "Val".

image

Importando una librería de visualización y ejecutando el plot tendremos la posibilidad de darle "Play" al botón de arriba a la derecha y nuestra visualización ejecutará el código mostrando el ploteo.

Limitaciones

Hay ciertos detalles que debemos tener en cuenta al momento de utilizar Python sobre Power Bi Desktop.

Para la primera y segunda opción es necesario que contemos con un On Premise Data Gateway en su modo PERSONAL para actualizar los datos. El gateway instalado en modo personal permite la lectura de un entorno Python instalado en la computadora o máquina virtual donde ésta puerta de enlace. Solo así podremos programar las actualizaciones de nuestro conjunto de datos.

La tercera opción ésta limitada en librerías a utilizar. A diferencia de las opciones anteriores que ejecutan el código en el entorno del gateway, ésta debe ejecutar código Python si o si sobre el servicio de Microsoft. Es por ésta razón que tendremos un listado limitado de librerías disponibles para utilizar. Las librerías son:

  • matplotlib
  • numpy
  • Pandas
  • scikit-learn
  • scipy
  • seaborn
  • statsmodels
  • xgboost

Por cualquier error o problema les dejo una documentación más detallada de microsoft que podría definir otros limites más finos de la lectura de Python sobre Power Bi Service

https://docs.microsoft.com/es-es/power-bi/connect-data/service-python-packages-support

Así concluimos nuestro post sobre como correr código Python en Power Bi Desktop. Ojala les sea útil y puedan conectar a un origen, hacer una transformación o deployar un gráfico. Pueden conseguir el ejemplo anterior en mi github.