Reverse ETL con Power BI

29 Abr, 2022
Nelson López Centeno , ,

Comparto el vídeo de la presentación que hice en la Power Platform Madrid en noviembre de 2021 sobre casos de uso de la ejecución de consultas DAX con la API REST de Power BI. También comparto los enlaces a los repositorios en GitHub del código que usé en las demostraciones.

API REST de Power BI

Con la API REST de Power BI podemos interactuar con el servicio de Power BI desde nuestras aplicaciones o herramientas para realizar tareas de administración o de desarrollo. Una de las últimas incorporaciones a esta API es la posibilidad de ejecutar consultas DAX a un modelo que esté publicado en el servico de Power BI. En una entrada anterior muestro cómo ejecutar una consulta DAX desde Python, y esta entrada sería una continuación.

Reverse ETL

Con el término Reverse ETL me encontré hace unos meses atrás leyendo el blog de James Serra y se refiere al proceso de mover algunos de los datos que tenemos en un almacén de datos (data warehouse) hacia sistemas externos, de manera que dichos sistemas puedan tomar decisiones operativas a partir de esos datos.

He extrapolado un poco este concepto para aplicarlo a un modelo de Power BI donde tenemos las dimensiones y las medidas que nos permiten hacer análisis, pero ha surgido la necesidad de utilizar algunas de dichas medidas en otros sistemas que no son analíticos.

Ejecutar consultas DAX desde un script Python

La primera demostración del vídeo es con un script Python, que es el mismo que usé en la entrada anterior sobre este mismo tema.

El código está disponible en GitHub: https://github.com/dataxbi/powerbi-api-dax

Ejecutar consultas DAX desde un sitio web

El siguiente caso de uso es utilizar algunas medidas DAX en un sitio web. Una alternativa podría ser Power BI Embedded, pero no se quiere inscrustar visualizaciones Power BI en el sitio, sino que se quiere poder acceder a los valores de las medidas desde el backend del sitio web.

El sitio web está implementado con ASP.NET MVC y tiene dos páginas donde se se utilizan consultas DAX. En la portada se se hace una consulta DAX que devuelve 3 valores y que se dibujan en el sitio web desde el backend. En otra página se utiliza la biblioteca JavaScript AG Grid para dibujar gráficods de barras y de líneas a partir de la ejecución de consultas DAX.

El código está disponible en GitHub:

Tengo una demostración de un sitio web que hace lo mismo, pero utilizando XMLA en lugar de la API REST y que puedes ver en esta entrada de blog sobre varios casos de uso de XMLA.

Ejecutar consultas DAX desde Power Automate

En el vídeo también hago demuestro cómo hacer consultas DAX desde un flujo de Power Automate. La clave está en crear un conector personalizado a partir de un fichero OpenAPI con la definición de la API REST de Power BI. En Power Automate hay disponible un conector oficial de Power BI, pero aún no permite hacer consultas DAX.

El fichero OpenAPI está disponible en GitHub: https://github.com/dataxbi/powerbi-api-swagger

Planteo dos casos de uso para los flujos. El primero es la creación de una alerta que sea más flexible que las que podemos hacer con el conector oficial de Power BI. La segunda propuesta es guardar los resultados de una consulta DAX en una lista de SharePoint y luego usar la lista en Power Apps.

Ejecutar consultas DAX desde Azure Data Factory

En la última demostración utilizo Azure Data Factory para ejecutar una consulta DAX y guardar los resultados en un fichero CSV en Azure Data Lake. Para ello creo una canalización con una actividad de copia que usa como origen un servicio REST y como destino Azure Data Lake Storage Gen2.

Vídeo