PowerBI: Python en un script PowerQuery (Cuándo y Cómo)

PowerQuery es uno de los mejores productos elaborados por Microsoft entre los que he utilizado. La interfaz gráfica y los asistentes resuelven la vasta mayoría de los casos de uso. El lenguaje M es simple de usar, y resuelve los pocos casos para los que la interfaz gráfica y los asistentes no son suficientes. El depurador es súper sencillo y potente. ¿Porqué MS añade scripts de R y de Python a las herramientas de transformación?

El espectro de casos a los que hoy se aplica PowerBI es muy amplio. Power BI puede ser cosas diferentes para cada usuario

Según el volumen y complejidad de datos, y del perfil del usuario, PowerBI puede beneficiarse de AYUDAS

  • Procesos ETL y modelados creados con herramientas ad-hoc más completas y eficaces (Informatica PowerCenter, MS SQLSERVER Integration Services, etc.)
  • Fuentes de datos ya procesados (cubos OLAP)

Algunas empresas pueden reaprovechar desarrollos previos de scripts de preparación de datos hechos con lenguaje R o con Python, sin necesidad de “migrarlos” a lenguaje M. Tanto R como Python cuentan con librerías que facilitan el procesamiento de datos, y las podemos integrar en nuestros scripts de Powerquery. O bien el desarrollador de informes tiene más experiencia con R o Python que con M.

En el último caso, habría que evaluar la conveniencia de hacer un desarrollo nuevo en un lenguaje que será más difícil de mantener y editar dentro del script. En caso de trabajar con R o Python, será conveniente usar las interfaces de desarrollo respectivas, hasta tener el script validado, antes de llevarlo a PowerQuery

Veamos los pasos iniciales para integrar un script de Python en un script de PowerQuery.

Necesitaremos tener instalado en el equipo de desarrollo una versión de Python, que descargas de internet

Verificar de haber actualizado el path a la carpeta que la instalación defina. En mi caso, en una ventana cmd, usando el comando

SET PATH=%PATH%;C:\Users\TU_USUARIO\AppData\Local\Programs\Python\Python38-32\Scripts

Puedes descargar bibliotecas para manipulación de conjuntos de datos (datasets), por ejemplo pandas y matplotlib con los comandos

C:\Users\RobertoMirelman>py -m pip install pandas y

C:\Users\RobertoMirelman>py -m pip install matplotlib.

Se descargan las bibliotecas solicitadas.

Nota: Las puedes desinstalar con el comando
py -m pipi uninstall XXXXX

Para el siguiente ejemplo, los datos los podemos cargar desde un csv (descargar desde este enlace) o en una tabla en línea

Si cargamos esta tabla en el editor de PowerQuery, vemos

Desde el último paso, agregamos un script de Python

en la ventana emergente añado mi función Python

y el resultado es:

En el visor tenemos


Si hacemos dobleclick sobre la Tabla que corresponde con MiPaso, vemos que se han competado los valores nulos con el promedio de la columna (eso es lo que hace la función fillna, con el parámetro .mean() aplicado al dataset)

ATENCION: El resultado aparece con decimales representados ahora con un punto. Si la configuración local establece la coma (“,”) como separador decimal, agregamos un paso de reemplazo de caracter.

Ahora puedo convertir este texto en número en forma adecuada

Finalmente, puedo construir un gráfico de línea, y compruebo los valores medios rellenados con Python

Leave a Comment