A veces no sabemos de antemano cuándo va a terminar la carga de nuestros datos, y queremos que justo cuando termine esa carga, nuestros informes se actualicen. Con Power BI Report Server (de aquí en adelante PBIRS), puedes poner un horario en el que actualizar tu informe, pero si quieres que se actualice justo al acabar la carga de tus datos, con esto no es suficiente.

En este artículo vamos a explicar cómo lanzar la actualización de nuestro dataset en PBIRS mediante la llamada de un comando en PowerShell, la llamada a este comando se realizará con un paquete de SQL Server Integration Services (SSIS de aquí en adelante), y la ejecución del paquete se agendará como un paso adicional posterior en nuestro job de carga, de esta manera el informe se refrescará justo de después de terminar nuestra carga de datos.

Configuración de SSIS

El comando de PowerShell, se puede parametrizar con dos parámetros, uno de ellos es el nombre del Report Server y el otro es el id del scheduler que queremos lanzar para refrescar el dataset.

En nuestro ejemplo vamos a usar dos parámetros del proyecto de SSIS para pasar estos valores al paquete y hacerlo aún más configurable.

Vamos a la parte de “Project.params” de nuestro proyecto de SSIS y creamos dos parámetros, en nuestro caso, los llamaremos ReportServer e idScheduler, como se muestra en la siguiente imagen:

SSIS Powershell

En nuestro caso el Report Server está en localhost y más adelante explicaremos como obtener el id del scheduler de nuestro PBIRS.

Una vez creados los parámetros en nuestro proyecto de SSIS, vamos a nuestro paquete y creamos una variable que contendrá el comando PowerShell, esta variable estará parametrizada para usar los parámetros de proyecto que acabamos de crear. En nuestro ejemplo llamaremos a la variable “Comando” y contendrá lo siguiente:

“Invoke-WebRequest -Uri ‘http://”+ @[$Project::ReportServer] +”/reports/api/v2.0/CacheRefreshPlans(“+ @[$Project::idScheduler] +”)/Model.Execute’ -UseBasicParsing -Method Post -ContentType ‘application/json’ -UseDefaultCredentials | Out-Null”

Marcado en rojo se puede ver en qué parte se usan los parámetros de proyecto.

El siguiente paso, será arrastrar a nuestro paquete el componente “Execute Process Task”:

SSIS Powershell execute process task

Lo vamos a renombrar como “Refresh PBI RS” y hacemos doble click en él para configurarlo.

Seleccionamos “Expressions” a la izquierda y pulsamos sobre el botón […] que se encuentra a la derecha.

Cómo Automatizar el Refresco de un Dataset en Power BI Report Server con Powershell

Seleccionamos la Property “Arguments” y en Expression seleccionamos nuestra variable “comando” que acabamos de crear:

SSIS Powershell property expressions editor

Pulsamos sobre OK.

En la parte de Process, en “Executable”, tenemos que poner la ruta en la que tenemos instalado nuestro PowerShell. Normalmente suele ser esta ruta, pero no siempre es así:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Pulsamos sobre OK y ya tendríamos configurado nuestro paquete.

Lo siguiente sería hacer Deploy de nuestro proyecto para tenerlo en el catálogo de SSIS.

Obtención del ID Scheduler en PBI Report Server

Para obtener el id del refresco programado, vamos a nuestro PBI Report Server y sobre el informe que queremos refrescar al final del proceso, pulsamos sobre los […] y después en Manage.

Cómo Automatizar el Refresco de un Dataset en Power BI Report Server con Powershell

Vamos a la sección de Scheduled refresh y pulsamos sobre Edit en cualquier scheduled refresh plan que ya tengamos o creamos uno en el caso de que no exista.

Power BI Report Server manage PBI

Una vez dentro de la edición, en la barra del navegador donde se encuentra la url de la página, podemos ver el id de dicho scheduled refresh plan.

Ejecución del Paquete

Ahora ya tenemos todo listo para añadir este nuevo paquete como un step adicional en nuestro job de carga.

Además, al parametrizar nuestro proyecto de SSIS, podemos crear Environments en nuestro catálogo de SSIS y darle valor a los parámetros según en el entorno en el que queramos ejecutar nuestro paquete, haciéndolo así más flexible.

¿Necesitas sacar más partido a tus datos para mejorar tu proyecto?

Acelera tus procesos de Business Analytics. Toma mejores decisiones, optimiza tu Datawarehouse y el proceso de generación de informes en tus proyectos de analítica con nuestra consultoría en Business Intelligence.

Voy a echar un vistazo
0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like
Leer más

QueryStore

Enrique Catalá nos enseña en este vídeo qué es QueryStore y cómo sacarle más partido a tu servidor SQL Server.