Se o refresh do seu modelo demora horas, estoura o tempo limite ou consome boa parte da capacidade, provavelmente ele está reprocessando anos de histórico todos os dias — dados que não mudam desde sempre. A atualização incremental resolve exatamente esse desperdício: em vez de recarregar a tabela inteira, o Power BI atualiza somente a janela recente de dados.
O que é a atualização incremental
Quando você publica um modelo do Power BI Desktop no serviço, cada tabela vai para lá com uma única partição, contendo todas as linhas. Se essa tabela tem dezenas de milhões de linhas, cada atualização precisa varrer tudo de novo — o que leva muito tempo e consome uma quantidade excessiva de recursos.
A atualização incremental estende a atualização agendada com a criação e o gerenciamento automáticos de partições. O serviço passa a separar dinamicamente os dados que mudam com frequência daqueles que podem ser atualizados com menos frequência — ou que nunca mais mudam. Na prática, isso é feito filtrando a tabela por dois parâmetros de data/hora do Power Query com nomes reservados: RangeStart e RangeEnd.
O padrão de janela deslizante
A cada atualização, o serviço substitui os valores de RangeStart e RangeEnd para consultar apenas as linhas dentro do período de atualização. As linhas cuja data/hora já saiu dessa janela passam a fazer parte do período histórico e não são mais atualizadas.
Os dois períodos rolam para frente no tempo. Conforme novas partições de atualização são criadas, as antigas viram partições históricas e, com o tempo, vão sendo mescladas em granularidades menos detalhadas. Quando uma partição histórica fica mais velha que o período de arquivamento definido na política, ela é removida do modelo. Esse comportamento é o que a Microsoft chama de padrão de janela rolante.
O que você ganha com isso
- Atualizações mais rápidas: somente os dados recentes, que de fato mudaram, precisam ser atualizados.
- Atualizações mais confiáveis: não são necessárias conexões de longa duração com a fonte, o que reduz a chance de falha por problema de rede.
- Menos consumo de recursos: menos dados para atualizar significa menos memória e menos CPU, tanto no Power BI quanto no sistema de origem.
- Modelos grandes viabilizados: modelos com potencial de bilhões de linhas podem crescer sem exigir uma atualização completa a cada execução.
- Menos ciclos de atualização: com a partição DirectQuery em tempo real, os dados mais recentes chegam na hora da consulta, sem precisar de uma cadência alta de refresh.
Requisitos: planos e fontes de dados
A atualização incremental tem suporte em Power BI Pro, Premium por usuário, Premium e Power BI Embedded. Já o recurso de obter os dados mais recentes em tempo real com DirectQuery é exclusivo de Premium, PPU e Embedded — no Pro ele não aparece.
Do lado da fonte, o recurso funciona melhor com fontes relacionais e estruturadas, como SQL Server, Azure SQL e Azure Synapse, mas o requisito real é outro: a fonte precisa suportar filtragem por data. Normalmente isso significa uma coluna de data/hora na tabela alvo. Se a sua coluna de data for uma chave inteira no formato yyyymmdd, dá para converter os parâmetros na própria consulta — e, para fontes web, os parâmetros podem ser embutidos na requisição HTTP.
Atenção a um detalhe fácil de esquecer: todas as partições, de importação ou DirectQuery, devem consultar dados de uma única fonte.
Passo 1 — criar os parâmetros RangeStart e RangeEnd
No Editor do Power Query, abra Gerenciar Parâmetros e crie dois parâmetros do tipo Data/Hora com os nomes reservados RangeStart e RangeEnd. Os nomes diferenciam maiúsculas de minúsculas e precisam ser exatamente esses. RangeStart representa a data/hora mais antiga e RangeEnd, a mais recente.
No Power BI Desktop, esses valores servem apenas para carregar uma amostra pequena da tabela — um ou dois dias, por exemplo — para que o arquivo continue leve enquanto você trabalha. Depois que o modelo é publicado, o serviço substitui automaticamente esses valores conforme a política definida.
Passo 2 — filtrar a tabela pelos parâmetros
Com os parâmetros criados, aplique na coluna de data da tabela um filtro que os referencie. Esse filtro não pode ser feito pela opção padrão de “Filtro Personalizado” da interface: é preciso adicionar as etapas manualmente, editando a fórmula com Table.SelectRows.
Repare no detalhe dos operadores: o início da janela é inclusivo (>=) e o fim é exclusivo (<). É isso que evita que a mesma linha seja contada em duas partições vizinhas. Se a coluna de data for uma chave inteira, o filtro precisa converter o parâmetro antes de comparar:
Quando você define políticas para mais de uma tabela, os mesmos parâmetros RangeStart e RangeEnd devem ser usados em todas — ainda que cada tabela tenha períodos de arquivamento e de atualização diferentes.
Passo 3 — definir a política de atualização
Com o filtro aplicado, clique com o botão direito na tabela e abra Atualização incremental e dados em tempo real. Se a opção de ativar a atualização incremental estiver desabilitada, é sinal de que a consulta ainda não tem filtro baseado nos parâmetros.
São duas configurações obrigatórias. Arquivar dados com início antes da data de atualização define o período histórico mantido no modelo — cinco anos, por exemplo. Atualizar de forma incremental os dados com início antes da data de atualização define a janela reprocessada a cada execução — três dias, por exemplo.
O ganho fica evidente com números. Uma tabela de fatos que recebe em média 10 mil linhas por dia e guarda cinco anos de histórico tem cerca de 18 milhões de linhas. Com uma janela de três dias, cada atualização processa aproximadamente 30 mil linhas em vez de 18 milhões. A regra ao dimensionar: escolha o menor período que ainda garanta um relatório correto.
Configurações opcionais que fazem diferença
| Configuração | O que faz | Quando usar |
|---|---|---|
| Obter os dados mais recentes em tempo real com DirectQuery | Cria uma partição DirectQuery para as linhas posteriores à janela de atualização, buscadas na fonte a cada consulta | Somente Premium, PPU ou Embedded, quando o relatório precisa refletir dados do minuto |
| Atualizar apenas dias completos | Descarta o dia parcial em andamento na operação de atualização | Métricas que só fazem sentido com o dia fechado. Obrigatória se você ativar o DirectQuery em tempo real |
| Detectar alterações nos dados | Usa uma coluna de auditoria de data/hora para atualizar apenas os períodos que realmente mudaram | Quando existe coluna de última modificação na origem — pode reduzir de três dias atualizados para um |
Um cuidado sobre a detecção de alterações: a coluna escolhida não pode ser a mesma usada para particionar os dados com RangeStart e RangeEnd, e ela fica persistida em memória no modelo. Se for uma coluna de alta cardinalidade, vale reduzir a precisão (de segundos para horas, por exemplo) ou persistir apenas o valor máximo, para não trocar economia de refresh por consumo de memória.
Query folding é pré-requisito, não detalhe
Esse é o ponto onde a maioria das implementações falha. O filtro por RangeStart e RangeEnd só cumpre seu papel se for empurrado para a fonte via query folding. Sem folding, o motor de combinação de consultas compensa aplicando o filtro localmente — o que exige trazer todas as linhas da tabela da origem e anula completamente o propósito da atualização incremental, podendo inclusive esgotar os recursos do serviço ou do gateway.
Para fontes baseadas em SQL — SQL Database, Synapse, Oracle e Teradata — essa verificação automática do Desktop é confiável. Para as demais, use os Diagnósticos do Power Query ou rastreie as consultas na origem para ter certeza de que o filtro chegou até lá. Vale notar que a consulta final não precisa ser dobrável: dá para usar Value.NativeQuery() embutindo os parâmetros direto no SQL. Mas se a política incluir DirectQuery em tempo real, transformações não dobráveis não são permitidas.
Publicar e rodar a primeira atualização
Publique o modelo e execute a primeira atualização manualmente, para acompanhar o progresso. Ela vai demorar: é nesse momento que o serviço cria as partições, carrega todo o histórico e reconstrói relacionamentos, hierarquias e objetos calculados. As atualizações seguintes, manuais ou agendadas, são muito mais rápidas, porque só as partições da janela incremental são processadas.
Se o modelo estiver em capacidade Premium e puder passar de 1 GB, ative o formato de armazenamento de modelo semântico grande antes do primeiro refresh — depois fica mais trabalhoso.
Limites de tempo que você precisa conhecer
Independentemente da atualização incremental, modelos no Power BI Pro têm limite de duas horas por operação de atualização; em capacidade Premium, o limite é de cinco horas. Atualizações executadas pelo ponto de extremidade XMLA, disponível no Premium, não têm esse limite.
Vale lembrar por que esses limites existem: uma atualização completa pode consumir até o dobro da memória exigida pelo modelo, porque o serviço mantém um instantâneo em memória até a operação terminar. É exatamente esse custo que a atualização incremental reduz.
Outro ponto que costuma passar despercebido: por padrão, a data e a hora atuais são determinadas em UTC. Como isso afeta qual janela será considerada, configure o fuso horário nas opções de atualização agendada se a diferença for relevante para o seu negócio. Atualizações disparadas fora do serviço, como as via XMLA, ignoram essa configuração e usam sempre UTC.
Cuidados antes de publicar
- Não republique o modelo pelo Desktop: republicar remove todas as partições e dados já carregados no serviço. Em capacidade Premium, alterações de esquema devem ser feitas com ferramentas como o ALM Toolkit ou via TMSL.
- Você não poderá baixar o .pbix de volta depois da publicação — guarde o arquivo original com cuidado.
- DirectQuery em tempo real exige workspace Premium: com essa opção ativada, o modelo não pode ser publicado em workspace não Premium.
- Valide o folding antes, não depois de publicar: corrigir a consulta com o modelo já no serviço é bem mais caro.
Incremental e agendamento não são a mesma coisa
Vale separar bem os dois conceitos, porque eles costumam ser confundidos: o agendamento de refresh define quando a atualização acontece — horários, dias da semana, frequência. A atualização incremental define quanto dado é processado em cada uma dessas execuções.
Os dois se somam: com a janela incremental enxuta, cada refresh fica barato o suficiente para você agendar várias execuções por dia sem pressionar a capacidade. No Portal BI Embedded, você configura esses horários e acompanha o histórico de cada execução direto pelo portal.
Reduzir o custo do refresh é um dos passos com maior impacto quando um ambiente Power BI ou Fabric começa a ficar caro — muitas vezes evitando o aumento de SKU.
Perguntas frequentes
É um recurso que particiona automaticamente uma tabela do modelo semântico por período de tempo e atualiza apenas as partições mais recentes. Em vez de reprocessar anos de histórico a cada refresh, o Power BI atualiza só a janela definida na política — os últimos dias ou meses, por exemplo.
Não. A atualização incremental tem suporte em Power BI Pro, Premium por usuário, Premium e Power BI Embedded. Apenas o recurso de obter os dados mais recentes em tempo real com DirectQuery exige Premium, PPU ou Embedded — no Pro ele não está disponível.
São coisas complementares. O agendamento define quando a atualização acontece (horários e dias da semana). A atualização incremental define quanto dado é processado em cada uma dessas execuções. Usados juntos, você atualiza com mais frequência gastando menos recursos.
Porque a consulta da tabela no Power Query não contém filtros baseados nos parâmetros RangeStart e RangeEnd. Crie os dois parâmetros do tipo Data/Hora com esses nomes exatos (diferenciam maiúsculas de minúsculas) e aplique as etapas de filtro na coluna de data antes de abrir a caixa de diálogo da política.
Não. Depois que o modelo é publicado no serviço com uma política de atualização incremental, ele não pode mais ser baixado como .pbix. Republicar do Power BI Desktop também remove todas as partições e dados já carregados — por isso, guarde o arquivo original e planeje as alterações de esquema com ferramentas como o ALM Toolkit.
Referência: Atualização incremental e dados em tempo real para modelos semânticos do Power BI — documentação oficial da Microsoft.