Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo aborda a atualização incremental de dados no Dataflow Gen2 para o Data Factory do Microsoft Fabric. Quando você usa fluxos de dados para ingestão e transformação de dados, às vezes precisa atualizar apenas dados novos ou atualizados, especialmente à medida que seus dados crescem.
A atualização incremental ajuda a:
- Reduzir os tempos de atualização
- Torne as operações mais confiáveis, evitando processos de longa duração
- Utilize menos recursos
Prerequisites
Para usar a atualização incremental no Dataflow Gen2, você precisa:
- Uma capacidade de tecido
- Uma fonte de dados que suporta dobragem (recomendado) e contém uma coluna Data/Data/Hora para filtrar dados
- Um destino de dados que oferece suporte à atualização incremental (consulte Suporte de destino)
- Reveja as Limitações antes de começar
Suporte de destino
Estes destinos de dados suportam atualização incremental:
- Tecido Lakehouse
- Armazém de Tecidos
- Base de Dados SQL do Azure
Você também pode usar outros destinos com atualização incremental. Crie uma segunda consulta que faça referência aos dados em estágios para atualizar seu destino. Essa abordagem ainda permite que você use a atualização incremental para reduzir os dados que precisam de processamento do sistema de origem. No entanto, você precisará realizar uma atualização completa dos dados da etapa até o seu destino final.
Além disso, a configuração de destino padrão não é suportada para atualização incremental. Você deve definir explicitamente o destino em suas configurações de consulta.
Como utilizar a atualização incremental
Crie um novo Dataflow Gen2 ou abra um existente.
No editor de fluxo de dados, crie uma nova consulta que obtenha os dados que você deseja atualizar incrementalmente.
Verifique a pré-visualização de dados para se certificar de que a sua consulta devolve dados com uma coluna DateTime, Date ou DateTimeZone para filtragem.
Certifique-se de que sua consulta seja totalmente dobrada, o que significa que a consulta é enviada para o sistema de origem. Se ele não dobrar totalmente, modifique sua consulta para que ela aconteça. Você pode verificar se sua consulta está totalmente dobrada observando as etapas de consulta no editor de consultas.
Clique com o botão direito do mouse na consulta e selecione Atualização incremental.
Configure as configurações necessárias para a atualização incremental.
- Escolha uma coluna DateTime pela qual filtrar.
- Extraia dados do passado.
- Tamanho da caçamba.
- Extraia novos dados apenas quando o valor máximo nesta coluna for alterado.
Configure as configurações avançadas, se necessário.
- Exigir que a consulta de atualização incremental seja totalmente otimizável.
Selecione OK para salvar suas configurações.
Se desejar, configure um destino de dados para a consulta. Faça isso antes da primeira atualização incremental, ou seu destino conterá apenas os dados alterados incrementalmente desde a última atualização.
Publicar o Dataflow Gen2.
Depois de configurar a atualização incremental, o fluxo de dados atualiza automaticamente os dados incrementalmente com base em suas configurações. O fluxo de dados obtém apenas dados que foram alterados desde a última atualização, portanto, ele é executado mais rápido e usa menos recursos.
Como funciona a atualização incremental nos bastidores
A atualização incremental divide seus dados em buckets com base na coluna DateTime. Cada bucket contém dados que foram alterados desde a última atualização. O fluxo de dados sabe o que mudou verificando o valor máximo na coluna especificada.
Se o valor máximo for alterado para esse bucket, o fluxo de dados obterá todo o bucket e substituirá os dados no destino. Se o valor máximo não for alterado, o fluxo de dados não obterá nenhum dado. Veja como funciona passo a passo.
Primeiro passo: Avaliar as alterações
Quando o fluxo de dados é executado, ele primeiro verifica o que mudou na fonte de dados. Ele examina o valor máximo na coluna DateTime e o compara com o valor máximo da última atualização.
Se o valor máximo for alterado (ou se esta for sua primeira atualização), o fluxo de dados marcará esse bucket como "alterado" e o processará. Se o valor máximo for o mesmo, o fluxo de dados ignorará esse bucket completamente.
Segundo passo: Obter os dados
Agora, o fluxo de dados obtém os dados para cada bucket que foi alterado. Ele processa múltiplos buckets ao mesmo tempo para acelerar as operações.
O fluxo de dados carrega esses dados em uma área de preparação. Ele obtém apenas dados que estão dentro do intervalo de tempo do bucket, o que significa apenas os dados que realmente foram alterados desde a última atualização.
Última etapa: substituir os dados no destino
O fluxo de dados atualiza seu destino com os novos dados. Ele usa uma abordagem de "substituição": primeiro exclui os dados antigos para esse bucket específico e, em seguida, insere os dados novos.
Esse processo afeta apenas os dados dentro do intervalo de tempo do bucket. Todos os dados fora desse intervalo (como dados históricos mais antigos) permanecem intocados.
Explicação das configurações de atualização incremental
Para configurar a atualização incremental, você precisa especificar essas configurações.
Configurações gerais
Essas configurações são necessárias e especificam a configuração básica para atualização incremental.
Escolha uma coluna DateTime para filtrar
Essa configuração obrigatória especifica a coluna que os fluxos de dados usam para filtrar os dados. Esta coluna deve ser uma coluna DateTime, Date ou DateTimeZone. O fluxo de dados usa essa coluna para filtrar os dados e obtém apenas os dados que foram alterados desde a última atualização.
Extrair dados do passado
Esta configuração necessária especifica quão longe no tempo o fluxo de dados deve extrair dados. Esta configuração obtém a carga inicial de dados. O fluxo de dados obtém todos os dados do sistema de origem dentro do intervalo de tempo especificado. Os valores possíveis são:
- x dias
- x semanas
- x meses
- x quartos
- x anos
Por exemplo, se você especificar 1 mês, o fluxo de dados obterá todos os novos dados do sistema de origem no último mês.
Tamanho da caçamba
Essa configuração necessária especifica o tamanho dos buckets que o fluxo de dados usa para filtrar dados. O fluxo de dados divide os dados em buckets com base na coluna DateTime. Cada bucket contém dados que foram alterados desde a última atualização. O tamanho do bucket determina a quantidade de dados que são processados em cada iteração:
- Um tamanho de bucket menor significa que o fluxo de dados processa menos dados em cada iteração, mas requer mais iterações para processar todos os dados.
- Um tamanho de bucket maior significa que o fluxo de dados processa mais dados em cada iteração, mas requer menos iterações para processar todos os dados.
Extrair novos dados apenas quando o valor máximo nesta coluna for alterado
Essa configuração obrigatória especifica a coluna que o fluxo de dados usa para determinar se os dados foram alterados. O fluxo de dados compara o valor máximo nesta coluna com o valor máximo da atualização anterior. Se o valor máximo foi alterado, o fluxo de dados obterá os dados que foram alterados desde a última atualização. Se o valor máximo não for alterado, o fluxo de dados não obterá nenhum dado.
Extrair apenas dados de períodos concluídos
Essa configuração opcional especifica se o fluxo de dados só deve extrair dados para períodos concluídos. Se você habilitar essa configuração, o fluxo de dados extrairá apenas dados de períodos concluídos. O fluxo de dados só extrai dados para períodos que estão completos e não contêm dados futuros. Se você desabilitar essa configuração, o fluxo de dados extrairá dados para todos os períodos, incluindo períodos que não estão completos e contêm dados futuros.
Por exemplo, se você tiver uma coluna DateTime que contenha a data da transação e quiser atualizar apenas os meses completos, poderá habilitar essa configuração com o tamanho do bucket de month. O fluxo de dados só extrairá dados para meses completos e não extrairá dados para meses incompletos.
Configurações avançadas
Algumas configurações são consideradas avançadas e não são necessárias para a maioria dos cenários.
Exigir que a consulta de atualização incremental seja totalmente integrada
Essa configuração controla se a consulta de atualização incremental deve ser "totalmente dobrada". Quando uma consulta se dobra totalmente, ela é empurrada inteiramente para o seu sistema de origem para processamento.
Se você habilitar essa configuração, sua consulta deverá ser totalmente dobrada. Se você desativá-lo, a consulta poderá ser parcialmente processada pelo fluxo de dados em vez do seu sistema de origem.
É altamente recomendável manter essa configuração ativada. Ele garante que, depois de salvar o fluxo de dados, validemos se a dobragem da consulta para a origem é possível. Se essa validação falhar, seu fluxo de dados pode sofrer com o desempenho reduzido e pode acabar recuperando dados desnecessários e não filtrados.
Em alguns casos, você pode ver um indicador de dobragem verde durante a criação. No entanto, quando validamos a definição final de fluxo de dados, a transformação pode não ser mais possível; Por exemplo, se uma etapa como Table.SelectRows interromper a transformação. Isso pode levar a um erro de validação.
Limitations
O suporte da Lakehouse vem com ressalvas adicionais
Ao trabalhar com lakehouse como destino de dados, esteja ciente destas limitações:
O número máximo de avaliações simultâneas é 10. Isso significa que o fluxo de dados só pode avaliar 10 buckets ao mesmo tempo. Se você tiver mais de 10 buckets, precisará limitar o número de buckets ou limitar o número de avaliações simultâneas.
Quando você grava em uma casa de lago, o fluxo de dados controla quais arquivos ele grava. Isso segue as práticas padrão do lakehouse.
Mas aqui está o problema: se outras ferramentas (como o Spark) ou processos também gravarem na mesma tabela, eles podem interferir na atualização incremental. Recomendamos evitar outros escritores ao usar atualizações incrementais.
Se tiver de usar outros gravadores, certifique-se de que não entrem em conflito com o processo de atualização incremental. Além disso, a manutenção de tabelas, como operações OTIMIZE ou REORG TABLE, não é suportada para tabelas que usam atualização incremental.
Se você aproveitar um gateway de dados para se conectar às suas fontes de dados, certifique-se de que o gateway seja atualizado para pelo menos a versão da atualização de maio de 2025 (3000.270) ou posterior. Isso é crucial para manter a compatibilidade e garantir que a atualização incremental funcione corretamente com destinos lakehouse.
Não é suportado a transição de atualização não incremental para atualização incremental quando existem dados sobrepostos no destino. Se o destino lakehouse já contiver dados para buckets que se sobrepõem aos buckets incrementais definidos nas configurações, o sistema não poderá converter de forma segura para atualização incremental sem necessitar de reescrever toda a tabela Delta. Recomendamos filtrar a ingestão inicial para incluir apenas dados antes do bucket incremental mais antigo para evitar sobreposição e garantir o comportamento correto de atualização.
O destino dos dados deve ser definido como um esquema fixo
O destino dos dados deve ser definido como um esquema fixo, o que significa que o esquema da tabela no destino dos dados deve ser fixo e não pode ser alterado. Se o esquema da tabela no destino de dados estiver definido como esquema dinâmico, você precisará alterá-lo para esquema fixo antes de configurar a atualização incremental.
O único método de atualização suportado no destino dos dados é replace
O único método de atualização suportado no destino de dados é replace, o que significa que o fluxo de dados substitui os dados de cada bucket no destino de dados pelos novos dados. No entanto, os dados fora do intervalo de bucket não são afetados. Se você tiver dados no destino de dados mais antigos do que o primeiro bucket, a atualização incremental não afetará esses dados.
O número máximo de buckets é 50 para uma única consulta e 150 para todo o fluxo de dados
Cada consulta pode lidar com até 50 buckets. Se tiver mais de 50 baldes, precisará aumentar o tamanho do balde ou reduzir o intervalo de tempo para diminuir a contagem.
Para todo o seu fluxo de dados, o limite é de 150 buckets no total. Se você atingir esse limite, poderá reduzir o número de consultas usando a atualização incremental ou aumentar o tamanho do bucket em todas as consultas.
Diferenças entre a atualização incremental no Dataflow Gen1 e no Dataflow Gen2
Há algumas diferenças em como a atualização incremental funciona entre Dataflow Gen1 e Dataflow Gen2. Eis as principais diferenças:
Recurso de primeira classe: a atualização incremental agora é um recurso de primeira classe no Dataflow Gen2. No Dataflow Gen1, você configurou a atualização incremental depois de publicar o fluxo de dados. No Dataflow Gen2, você pode configurá-lo diretamente no editor de fluxo de dados. Isso facilita a configuração e reduz o risco de erros.
Nenhum intervalo de dados históricos: no Dataflow Gen1, você especificou o intervalo de dados históricos quando configurou a atualização incremental. No Dataflow Gen2, você não especifica esse intervalo. O fluxo de dados não remove nenhum dado do destino que está fora do intervalo especificado. Se você tiver dados no destino mais antigos do que o primeiro bucket, a atualização incremental não os afetará.
Parâmetros automáticos: no Dataflow Gen1, você especificou os parâmetros para atualização incremental ao configurá-lo. No Dataflow Gen2, você não especifica esses parâmetros. O fluxo de dados adiciona automaticamente os filtros e parâmetros como a última etapa da consulta.
FAQ
Recebi um aviso de que usei a mesma coluna para detetar alterações e filtrar. Qual é o significado disto?
Se você receber esse aviso, isso significa que a coluna especificada para detetar alterações também é usada para filtrar os dados. Não recomendamos isso porque pode levar a resultados inesperados.
Em vez disso, use uma coluna diferente para detetar alterações e filtrar os dados. Se os dados forem deslocados entre buckets, o fluxo de dados pode não detetar as alterações corretamente e pode criar dados duplicados no seu destino.
Você pode resolver esse aviso usando uma coluna diferente para detetar alterações e filtrar os dados. Ou você pode ignorar o aviso se tiver certeza de que os dados não mudam entre as atualizações da coluna especificada.
Quero usar a atualização incremental com um destino de dados que não é suportado. O que posso fazer?
Se você quiser usar a atualização incremental com um destino de dados que não ofereça suporte a ela, veja o que você pode fazer:
Habilite a atualização incremental em sua consulta e crie uma segunda consulta que faça referência aos dados em estágios. Em seguida, use essa segunda consulta para atualizar seu destino final. Essa abordagem ainda reduz o processamento de dados do seu sistema de origem, mas você precisará fazer uma atualização completa dos dados em estágios para o seu destino final.
Certifique-se de configurar a janela e o tamanho do bucket corretamente. Não garantimos que os dados armazenados temporariamente permaneçam disponíveis fora do intervalo de buckets.
Outra opção é usar o padrão de acumulação incremental. Confira o nosso guia: Amassamento incremental de dados com Dataflow Gen2.
Como posso saber se a minha consulta tem a atualização incremental ativada?
Você pode ver se sua consulta tem a atualização incremental habilitada marcando o ícone ao lado da consulta no editor de fluxo de dados. Se o ícone contiver um triângulo azul, a atualização incremental será ativada. Se o ícone não contiver um triângulo azul, a atualização incremental não estará ativada.
Minha fonte recebe muitas solicitações quando uso a atualização incremental. O que posso fazer?
Você pode controlar quantas solicitações seu fluxo de dados envia para o sistema de origem. Saiba como:
Vá para as configurações globais do seu fluxo de dados e localize a configuração de avaliações de consulta paralela. Defina isso para um número menor para reduzir as solicitações enviadas ao seu sistema de origem. Isso ajuda a reduzir a carga em sua fonte e pode melhorar seu desempenho.
Para encontrar esta configuração: vá para configurações globais, na guia Escala, e defina o número máximo de avaliações de consulta paralela.
Recomendamos usar esse limite apenas se o sistema de origem não puder lidar com o número padrão de solicitações simultâneas.
Quero usar a atualização incremental, mas vejo que, após a habilitação, o fluxo de dados leva mais tempo para ser atualizado. O que posso fazer?
A atualização incremental deve tornar o fluxo de dados mais rápido, processando menos dados. Mas às vezes acontece o contrário. Isso geralmente significa que a sobrecarga de gerenciar buckets e verificar alterações leva mais tempo do que você economiza processando menos dados.
Aqui está o que você pode tentar:
Ajuste suas configurações: aumente o tamanho da caçamba para reduzir o número de caçambas. Menos caçambas significam menos sobrecarga de gerenciá-las.
Experimente uma atualização completa: se o ajuste das configurações não ajudar, considere desativar a atualização incremental. Uma atualização completa pode realmente ser mais eficiente para o seu cenário específico.