[PowerBi] Exportar datos automáticamente al actualizar conjunto

El mismo titulo me ha dicho muchas veces que ésta es una idea terrible y aun así decidí escribirlo. La realidad es que muchas veces nuestros clientes o usuarios finales tienen estas ideas fatales que rompen un poco el "sentido" del uso de la herramienta queriendo realizar sus fines de otro modo.

Resulta ser que tiene mucha atracción la idea que un informe de power bi que ven diariamente exporte los datos automáticamente a una dirección para que ellos no tengan que estar entrando a exportarlos. Quieren ir a un lugar y que ya tenga el csv listo para explotar/trabajar con toda la limpieza de los datos.

Naturalmente, bajo las condiciones normales de Power Bi, esto no es posible. Aún así se puede obtener el resultado jugando un poco con las capacidades de ejecución de código Python y R dentro de nuestro editor de consultas. Entonces vamos a nutrirnos de esta capacidad para realizar el objetivo de tener los datos limpios exportados automáticamente.

NOTA: Cabe aclarar que no es recomendable con grandes volúmenes de información.

Pre-requisitos

  • El conjunto de datos tiene que estar onpremise. Solo será posible correr código Python o R si el procesamiento es local vía gateway.
  • Por supuesto tener R o Python instalado con librería pandas instalado en nuestra máquina que tendrá el gateway que actualizará los datos.
  • Un Gateway Personal instalado dado que es el único que corre los lenguajes anteriores. El modo empresarial no es compatible aún.

Ejemplos de Python y R configurados:

image
image

Procedimiento

Una vez chequeados los pasos anteriores podemos proceder a construir nuestro objetivo. Para ello vamos a abrir nuestro archivo de Power Bi Desktop que nos gustaría que exporte automáticamente y nos dirigiremos al editor de consultas.

Ejemplo Python:

image

El código sería así:

dataset = pandas.DataFrame(dataset) dataset.to_csv('C:/Users/[username]/Documents/export.csv', index=False)

Ejemplo R:

image

El código debería verse así:

Write.csv(dataset, C:\\Users\\[username]\\Documents\\limonade.csv)


Ahora bien si no queremos que el código ese afecte nuestra sucesión de pasos del editor de consulta, podemos agregar un paso al final en el editor avanzado que haga ignorar al código como parte del resultado final. De esta forma el código python pasa a ser una ejecución independiente del resultado de lo que ocurra en la limpieza de datos.

image

Apreciemos el "Last Step" que en realidad no es más que copiar el paso anterior al script de python para que el resultado final sea el mismo sin necesidad de seguir expandiendo los resultados del script para llegar al resultado final.

Consideraciones

Tengamos en cuenta que ésta solución no es la más recomendada. Lo mejor para un usuario que quiere analizar datos en excel u otra herramienta es exportarlos el mismo desde Power Bi Service. Existen muchos modos de exportación y de conexión vía excel.

Es muy importante aclarar que utilizar un gateway personal y no el on premise data gateway en su modo empresarial. Normalmente nuestras soluciones productivas usarían el segundo que es más estable dado que corre como servicio de windows.

Por supuesto que lo que exporte automáticamente sería dentro de la misma PC que corre el gateway. El archivo exportando quedaría allí. Entonces los usuarios deberían tener acceso al servidor para utilizar los archivos exportados.