Como atualizar um dataset do Power BI com Power Automate
Atualizar um dataset (semantic model) do Power BI com Power Automate dá-lhe controlo sobre o momento exato da atualização: pode dispará-la assim que o ETL termina, várias vezes ao dia ou a pedido de um utilizador. E, ao contrário do agendamento nativo do Power BI Service, permite avisar a equipa quando a atualização falha. O fluxo final é simples: um gatilho, uma ação de refresh e uma notificação de erro.
Pré-requisitos
- Conta com licença Power BI Pro (ou PPU/Premium) e acesso ao Power Automate.
- Um workspace do Power BI onde seja Membro ou Administrador.
- Um dataset já publicado, com as credenciais da fonte de dados configuradas no Power BI Service.
- Um canal do Teams ou uma caixa de email para receber os alertas.
Passo 1: Criar o fluxo agendado
No Power Automate, escolha Create > Scheduled cloud flow. Dê um nome ao fluxo (por exemplo, "Refresh Vendas Diário"), defina a hora de início e a repetição — a cada 1 dia às 06:00, por exemplo. Se prefere atualizar o dataset apenas quando o pipeline de dados termina, use antes o gatilho When an HTTP request is received e chame o URL gerado a partir do Azure Data Factory, do Fabric ou de um script.
Passo 2: Adicionar a ação Refresh a dataset
Clique em New step, procure o conector Power BI e escolha a ação Refresh a dataset. Só tem dois campos a preencher:
- Workspace: o workspace onde o dataset vive.
- Dataset: o modelo a atualizar.
Atenção a um detalhe que causa muita confusão: esta ação é assíncrona. O Power Automate pede a atualização, recebe um "ok, recebi" e avança para o passo seguinte — mesmo que a atualização ainda esteja a decorrer (ou venha a falhar minutos depois). Um fluxo verde não é, por si só, garantia de que os dados foram atualizados. É por isso que os passos 3 e 4 existem.
Passo 3: Confirmar que a atualização terminou bem
Para saber o estado real, consulte o histórico de atualizações através da API REST do Power BI. Adicione uma ação Delay (5 minutos, por exemplo) e a seguir uma ação HTTP with Microsoft Entra ID, com o método GET e este URL:
https://api.powerbi.com/v1.0/myorg/groups/{workspaceId}/datasets/{datasetId}/refreshes?$top=1
Substitua {workspaceId} e {datasetId} pelos GUID que aparecem no URL do Power BI Service quando abre o workspace e o dataset. A resposta traz um campo status que pode ser Completed, Failed ou Unknown (ainda a decorrer). Guarde-o numa variável com esta expressão:
first(body('HTTP_with_Microsoft_Entra_ID')?['value'])?['status']
Nas expressões, o nome da ação escreve-se com underscores em vez de espaços — é o erro mais comum nesta fase.
Passo 4: Avisar a equipa quando falha
Adicione uma ação Condition: se a variável for igual a Completed, o fluxo não faz nada; caso contrário, envia a notificação com Post message in a chat or channel (Teams) ou Send an email (V2) (Outlook). Use um texto que ajude mesmo a diagnosticar:
concat('Falha no refresh do dataset Vendas. Estado: ', variables('EstadoRefresh'), ' | Run: ', workflow()?['run']?['name'])
Se a atualização costuma demorar mais do que o Delay, substitua-o por um ciclo Do until que repete o GET enquanto o estado for Unknown, com um limite de tentativas (por exemplo, 20) para o fluxo nunca ficar preso.
Passo 5: Atualização avançada, quando precisa de mais controlo
Quando quer atualizar apenas algumas tabelas ou partições — em vez do modelo inteiro — use a atualização avançada (enhanced refresh) da API REST. Na mesma ação HTTP, mude o método para POST e envie este corpo:
POST https://api.powerbi.com/v1.0/myorg/groups/{workspaceId}/datasets/{datasetId}/refreshes
{
"type": "Full",
"commitMode": "transactional",
"maxParallelism": 4,
"retryCount": 2,
"objects": [
{ "table": "Vendas", "partition": "2026" }
]
}
Uma resposta com código 202 Accepted significa que o pedido foi aceite. O cabeçalho Location devolve o URL exato para consultar o estado dessa atualização, o que torna a verificação do passo 3 ainda mais precisa.
Verificar o resultado
Corra o fluxo com Test > Manually e acompanhe o histórico de execuções: todos os passos devem ficar verdes e a ação HTTP deve devolver 200. Depois, no Power BI Service, abra as definições do dataset e veja o Refresh history: deve aparecer uma linha nova com o estado Completed e a hora em que o fluxo correu. Para testar o alerta sem estragar nada, aponte temporariamente a ação HTTP para um datasetId inexistente — o fluxo deve entrar no ramo de erro e enviar a mensagem.
Conclusão
Com meia dúzia de ações passou de uma atualização "às cegas" para um processo controlado e monitorizado, em que sabe sempre se os dados chegaram. O passo seguinte natural é ligar o gatilho HTTP ao fim do seu pipeline, para o dataset ser atualizado exatamente quando os dados novos aterram — nem antes, nem três horas depois. Quantas das suas atualizações agendadas correm, neste momento, sobre dados que ainda não foram carregados?