Cómo actualizar un dataset de Power BI con Power Automate
Actualizar un dataset (semantic model) de Power BI con Power Automate te da control sobre el momento exacto de la actualización: puedes lanzarla en cuanto termina el ETL, varias veces al día o a petición de un usuario. Y, a diferencia de la programación nativa del Power BI Service, permite avisar al equipo cuando la actualización falla. El flujo final es sencillo: un desencadenador, una acción de refresh y una notificación de error.
Requisitos previos
- Una cuenta con licencia Power BI Pro (o PPU/Premium) y acceso a Power Automate.
- Un workspace de Power BI donde seas Miembro o Administrador.
- Un dataset ya publicado, con las credenciales del origen de datos configuradas en el Power BI Service.
- Un canal de Teams o un buzón de correo para recibir las alertas.
Paso 1: Crear el flujo programado
En Power Automate, elige Create > Scheduled cloud flow. Ponle nombre al flujo (por ejemplo, "Refresh Ventas Diario"), define la hora de inicio y la repetición — cada 1 día a las 06:00, por ejemplo. Si prefieres actualizar el dataset solo cuando termina el pipeline de datos, usa el desencadenador When an HTTP request is received y llama a la URL generada desde Azure Data Factory, Fabric o un script.
Paso 2: Añadir la acción Refresh a dataset
Haz clic en New step, busca el conector Power BI y elige la acción Refresh a dataset. Solo hay dos campos que rellenar:
- Workspace: el workspace donde vive el dataset.
- Dataset: el modelo que se va a actualizar.
Ojo con un detalle que causa mucha confusión: esta acción es asíncrona. Power Automate pide la actualización, recibe un acuse de recibo y pasa al siguiente paso, aunque la actualización siga en curso (o falle minutos después). Un flujo en verde no garantiza, por sí solo, que los datos se hayan actualizado. Por eso existen los pasos 3 y 4.
Paso 3: Confirmar que la actualización terminó bien
Para conocer el estado real, consulta el historial de actualizaciones con la API REST de Power BI. Añade una acción Delay (5 minutos, por ejemplo) y después una acción HTTP with Microsoft Entra ID, con el método GET y esta URL:
https://api.powerbi.com/v1.0/myorg/groups/{workspaceId}/datasets/{datasetId}/refreshes?$top=1
Sustituye {workspaceId} y {datasetId} por los GUID que aparecen en la URL del Power BI Service al abrir el workspace y el dataset. La respuesta incluye un campo status que puede ser Completed, Failed o Unknown (todavía en curso). Guárdalo en una variable con esta expresión:
first(body('HTTP_with_Microsoft_Entra_ID')?['value'])?['status']
En las expresiones, el nombre de la acción se escribe con guiones bajos en lugar de espacios: es el error más habitual en esta fase.
Paso 4: Avisar al equipo cuando falla
Añade una acción Condition: si la variable es igual a Completed, el flujo no hace nada; en caso contrario, envía la notificación con Post message in a chat or channel (Teams) o Send an email (V2) (Outlook). Usa un texto que ayude de verdad a diagnosticar:
concat('Fallo en el refresh del dataset Ventas. Estado: ', variables('EstadoRefresh'), ' | Run: ', workflow()?['run']?['name'])
Si la actualización suele tardar más que el Delay, sustitúyelo por un bucle Do until que repita el GET mientras el estado sea Unknown, con un límite de intentos (20, por ejemplo) para que el flujo nunca se quede bloqueado.
Paso 5: Actualización avanzada, cuando necesitas más control
Cuando quieres actualizar solo algunas tablas o particiones — en lugar del modelo completo — usa la actualización avanzada (enhanced refresh) de la API REST. En la misma acción HTTP, cambia el método a POST y envía este cuerpo:
POST https://api.powerbi.com/v1.0/myorg/groups/{workspaceId}/datasets/{datasetId}/refreshes
{
"type": "Full",
"commitMode": "transactional",
"maxParallelism": 4,
"retryCount": 2,
"objects": [
{ "table": "Ventas", "partition": "2026" }
]
}
Una respuesta con código 202 Accepted significa que la petición fue aceptada. La cabecera Location devuelve la URL exacta para consultar el estado de esa actualización, lo que hace aún más precisa la verificación del paso 3.
Verificar el resultado
Ejecuta el flujo con Test > Manually y revisa el historial de ejecuciones: todos los pasos deben quedar en verde y la acción HTTP debe devolver 200. Después, en el Power BI Service, abre la configuración del dataset y mira el Refresh history: debe aparecer una fila nueva con el estado Completed y la hora en que se ejecutó el flujo. Para probar la alerta sin romper nada, apunta temporalmente la acción HTTP a un datasetId inexistente: el flujo debe entrar en la rama de error y enviar el mensaje.
Conclusión
Con media docena de acciones has pasado de una actualización "a ciegas" a un proceso controlado y monitorizado, en el que siempre sabes si los datos llegaron. El siguiente paso natural es conectar el desencadenador HTTP al final de tu pipeline, para que el dataset se actualice justo cuando aterrizan los datos nuevos, ni antes ni tres horas después. ¿Cuántas de tus actualizaciones programadas se están ejecutando ahora mismo sobre datos que todavía no se han cargado?