Atualização incremental no Fluxo de Dados Gen2 (versão prévia)
Neste artigo, apresentamos a atualização incremental de dados no Fluxo de Dados Gen2 para o Data Factory do Microsoft Fabric. Ao usar fluxos de dados para ingestão e transformação de dados, há cenários em que você precisará atualizar especificamente apenas dados novos ou atualizados, especialmente à medida que seus dados continuam a crescer. O recurso de atualização incremental atende a essa necessidade, permitindo reduzir os tempos de atualização, melhore a confiabilidade evitando operações de execução longa e minimize o uso de recursos.
Pré-requisitos
Para usar a atualização incremental no Fluxo de Dados Gen2, você precisará atender aos seguintes pré-requisitos:
- Você deve ter uma capacidade do Fabric.
- Sua fonte de dados dá suporte à dobrar (recomendada) e precisa conter uma coluna Data/Data/Hora que possa ser usada para filtrar os dados.
- Você deverá ter um destino de dados que dê suporte à atualização incremental. Para obter mais informações, acesse o Suporte ao destino.
- Antes de começar, verifique se você analisou as limitações da atualização incremental. Para obter mais informações, acesse limitações.
Suporte ao destino
Os seguintes destinos de dados têm suporte para atualização incremental:
- Fabric Warehouse
- Banco de Dados SQL do Azure
- Azure Synapse Analytics
Outros destinos como o Lakehouse podem ser usados em combinação com a atualização incremental usando uma segunda consulta que faz referência aos dados preparados para atualizar o destino de dados. Dessa forma, você ainda poderá usar a atualização incremental para reduzir a quantidade de dados que precisam ser processados e recuperados do sistema de origem. Mas você precisará fazer uma atualização completa dos dados preparados para o destino dos dados.
Como usar a atualização incremental
Crie um novo Fluxo de Dados Gen2 ou abra um Fluxo de Dados Gen2 existente.
No editor de fluxo de dados, crie uma nova consulta que recupere os dados que você deseja atualizar incrementalmente.
Verifique a visualização de dados para garantir que a consulta retorne dados que contêm uma coluna Data, Data/Hora ou Fuso horário da data que você poderá usar para filtrar os dados.
Verifique se a consulta é totalmente dobrada, o que significa que a consulta é totalmente enviada para o sistema de origem. Se a consulta não dobrar totalmente, você precisará modificar a consulta para que ela seja totalmente dobrada. Garanta que a consulta seja totalmente dobrada verificando as etapas de consulta no editor de consultas.
Clique com o botão direito na consulta e selecione Atualização incremental.
Forneça as configurações necessárias para atualização incremental.
- Escolher uma coluna DateTime pela qual filtrar.
- Extraia dados do anterior.
- Tamanho do bucket.
- Extraia apenas novos dados quando o valor máximo nesta coluna for alterado.
Defina as configurações avançadas, se necessário.
- Exigir que a consulta de atualização incremental seja dobrada completamente.
Selecione OK para salvar as configurações.
Se desejar, agora você poderá configurar um destino de dados para a consulta. Verifique se você faz essa configuração antes da primeira atualização incremental, caso contrário, seu destino de dados contém apenas os dados alterados incrementalmente desde a última atualização.
Publique o Dataflow Gen2.
Depois de configurar a atualização incremental, o fluxo de dados atualizará automaticamente os dados de forma incremental com base nas configurações fornecidas. O fluxo de dados recupera apenas os dados que foram alterados desde a última atualização. Portanto, o fluxo de dados é executado mais rapidamente e consome menos recursos.
Como a atualização incremental funciona nos bastidores
A atualização incremental funciona dividindo os dados em buckets com base na coluna Data/Hora. Cada bucket contém os dados que foram alterados desde a última atualização. O fluxo de dados sabe o que foi alterado verificando o valor máximo na coluna especificada. Se o valor máximo for alterado para esse bucket, o fluxo de dados recuperará o bucket inteiro e substituirá os dados no destino. Se o valor máximo não for alterado, o fluxo de dados não recuperará nenhum dado. As seções a seguir contêm uma visão geral de alto nível de como a atualização incremental funciona passo a passo.
Primeira etapa: avaliar as alterações
Quando o fluxo de dados é executado, ele primeiro avalia as alterações na fonte de dados. Ele faz essa avaliação comparando o valor máximo na coluna Data/Hora com o valor máximo na atualização anterior. Se o valor máximo for alterado ou se for a primeira atualização, o fluxo de dados marcará o bucket como alterado e o listará para processamento. Se o valor máximo não for alterado, o fluxo de dados ignorará o bucket e não o processará.
Segunda etapa: recuperar os dados
Agora, o fluxo de dados está pronto para recuperar os dados. Ele recupera os dados de cada bucket que foi alterado. O fluxo de dados faz essa recuperação em paralelo para melhorar o desempenho. O fluxo de dados recupera os dados do sistema de origem e os carrega na área de preparo. O fluxo de dados recupera apenas os dados que estão dentro do intervalo de buckets. Em outras palavras, o fluxo de dados recupera apenas os dados que foram alterados desde a última atualização.
Última etapa: substituir os dados no destino de dados
O fluxo de dados substitui os dados no destino pelos novos dados. O fluxo de dados usa o método replace
para substituir os dados no destino. Ou seja, o fluxo de dados primeiro exclui os dados no destino desse bucket e insere os novos dados. O fluxo de dados não afeta os dados que estão fora do intervalo de buckets. Portanto, caso tenha dados no destino mais antigos que o primeiro bucket, a atualização incremental não afetará esses dados de forma alguma.
Configurações de atualização incremental explicadas
Para configurar a atualização incremental, especifique as seguintes configurações.
Configurações gerais
As configurações gerais são necessárias e especificam a configuração básica para atualização incremental.
Escolher uma coluna Data/Hora pela qual filtrar
Essa configuração é necessária e especifica a coluna que os fluxos de dados usam para filtrar os dados. Esta coluna deve ser uma coluna Data/Hora, Data ou Fuso horário da data. O fluxo de dados usa essa coluna para filtrar os dados e recupera apenas os dados que foram alterados desde a última atualização.
Extrair dados do passado
Essa configuração é necessária e especifica quanto tempo o fluxo de dados deve extrair dados. Essa configuração é usada para recuperar a carga de dados inicial. O fluxo de dados recupera todos os dados do sistema de origem que estão dentro do intervalo de tempo especificado. Os valores possíveis são:
- x dias
- x semanas
- x meses
- x trimestres
- x anos
Por exemplo, caso especifique um mês, o fluxo de dados recuperará todos os novos dados do sistema de origem que estão no último mês.
Tamanho do bucket
Essa configuração é necessária e especifica o tamanho dos buckets que o fluxo de dados usa para filtrar os dados. O fluxo de dados divide os dados em buckets com base na coluna Data/Hora. Cada bucket contém os dados que foram alterados desde a última atualização. O tamanho do bucket determina a quantidade de dados processada em cada iteração. Um tamanho de bucket menor significa que o fluxo de dados processa menos dados em cada iteração, mas também significa que mais iterações são necessárias para processar todos os dados. Um tamanho de bucket maior significa que o fluxo de dados processa mais dados em cada iteração, mas também significa que menos iterações são necessárias para processar todos os dados.
Extraia apenas novos dados quando o valor máximo nesta coluna for alterado
Essa configuração é necessária e 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 na atualização anterior. Se o valor máximo for alterado, o fluxo de dados recuperará 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 recuperará nenhum dado.
Extrair apenas dados para períodos concluídos
Essa configuração é opcional e especifica se o fluxo de dados deve extrair apenas dados para períodos concluídos. Se essa configuração estiver habilitada, o fluxo de dados extrairá apenas dados para períodos concluídos. Portanto, o fluxo de dados extrai apenas dados para períodos concluídos e que não contêm dados futuros. Se essa configuração estiver desabilitada, o fluxo de dados extrairá dados para todos os períodos, incluindo períodos que não estão concluídos e contêm dados futuros.
Por exemplo, caso tenha uma coluna Data/Hora que contenha a data da transação e quiser atualizar apenas meses completos, poderá habilitar essa configuração em combinações com o tamanho do bucket de month
. Portanto, o fluxo de dados extrai apenas dados para meses completos e não extrai dados por 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 dobrada
Essa configuração é opcional e especifica se a consulta usada para atualização incremental deve ser totalmente dobrada. Se essa configuração estiver habilitada, a consulta usada para atualização incremental deverá ser totalmente dobrada. Em outras palavras, a consulta deve ser totalmente enviada para o sistema de origem. Se essa configuração estiver desabilitada, a consulta usada para atualização incremental não precisará ser totalmente dobrada. Nesse caso, a consulta pode ser parcialmente enviada para o sistema de origem. É altamente recomendável habilitar essa configuração para melhorar o desempenho para evitar a recuperação de dados desnecessários e não filtrados.
Limitações
Há suporte apenas para destinos de dados baseados em SQL
Atualmente, somente destinos de dados baseados em SQL têm suporte para atualização incremental. Portanto, você só poderá usar o Warehouse do Fabric, o Banco de Dados SQL do Azure ou o Azure Synapse Analytics como um destino de dados para atualização incremental. O motivo dessa limitação é que esses destinos de dados dão suporte às operações baseadas em SQL necessárias para atualização incremental. Usamos operações Excluir e Inserir para substituir os dados no destino de dados, o que não pode ser feito em paralelo em outros destinos de dados.
O destino de dados deve ser definido como um esquema fixo
O destino de dados deve ser definido como um esquema fixo, o que significa que o esquema da tabela no destino de dados deve ser corrigido 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 o esquema fixo antes de configurar a atualização incremental.
O único método de atualização com suporte no destino de dados é replace
O único método de atualização com suporte 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 que estão fora do intervalo de buckets não são afetados. Portanto, caso tenha dados no destino de dados mais antigos que o primeiro bucket, a atualização incremental não afetará esses dados de forma alguma.
O número máximo de buckets é 50 para uma única consulta e 150 para todo o fluxo de dados
O número máximo de buckets por consulta com suporte pelo fluxo de dados é 50. Caso tenha mais de 50 buckets, precisará aumentar o tamanho do bucket ou reduzir o intervalo de buckets para diminuir o número de buckets. Para todo o fluxo de dados, o número máximo de buckets é 150. Caso tenha mais de 150 buckets no fluxo de dados, precisará reduzir o número de consultas de atualização incremental ou aumentar o tamanho do bucket para reduzir o número de buckets.
Diferenças entre a atualização incremental no Fluxo de Dados Gen1 e no Fluxo de Dados Gen2
Entre o Fluxo de Dados Gen1 e o Fluxo de Dados Gen2, há algumas diferenças na forma como a atualização incremental funciona. A lista a seguir explica as principais diferenças entre a atualização incremental no Fluxo de Dados Gen1 e no Fluxo de Dados Gen2.
- A atualização incremental agora é um recurso de primeira classe no Fluxo de Dados Gen2. No Fluxo de Dados Gen1, você teve que configurar a atualização incremental depois de publicar o fluxo de dados. No Fluxo de Dados Gen2, a atualização incremental agora é um recurso de primeira classe que você poderá configurar diretamente no editor de fluxo de dados. Esse recurso facilita a configuração da atualização incremental e reduz o risco de erros.
- No Fluxo de Dados Gen1, você precisava especificar o intervalo de dados histórico quando configurou a atualização incremental. No Fluxo de Dados Gen2, você não precisará especificar o intervalo de dados histórico. O fluxo de dados não remove nenhum dado do destino que está fora do intervalo de buckets. Portanto, caso tenha dados no destino mais antigos que o primeiro bucket, a atualização incremental não afetará esses dados de forma alguma.
- No Fluxo de Dados Gen1, você precisava especificar os parâmetros para a atualização incremental quando configurou a atualização incremental. No Fluxo de Dados Gen2, você não precisará especificar os parâmetros para a atualização incremental. O fluxo de dados adiciona automaticamente os filtros e parâmetros como a última etapa na consulta. Portanto, você não precisará especificar os parâmetros para a atualização incremental manualmente.
Perguntas frequentes
Recebi um aviso informando que usei a mesma coluna para detectar alterações e filtragem. O que isso significa?
Caso receba um aviso de que usou a mesma coluna para detectar alterações e filtragem, isso significa que a coluna especificada para detectar alterações também será usada para filtrar os dados. Não recomendamos esse uso, pois ele pode levar a resultados inesperados. Em vez disso, é recomendado usar uma coluna diferente para detectar alterações e filtrar os dados. Se os dados forem deslocados entre buckets, o fluxo de dados poderá não detectar as alterações corretamente e pode criar dados duplicados em seu destino. Você poderá resolver esse aviso usando uma coluna diferente para detectar alterações e filtrar os dados. Ou você poderá ignorar o aviso se tiver certeza de que os dados não são alterados entre as atualizações da coluna especificada.
Quero usar a atualização incremental com um destino de dados que não tem suporte. O que posso fazer?
Caso queira usar a atualização incremental com um destino de dados sem suporte, você poderá habilitar a atualização incremental em sua consulta e usar uma segunda consulta que faça referência aos dados preparados para atualizar o destino de dados. Dessa forma, você ainda poderá usar a atualização incremental para reduzir a quantidade de dados que precisam ser processados e recuperados do sistema de origem, mas você precisará fazer uma atualização completa dos dados preparados para o destino dos dados. Verifique se você configurou a janela e o tamanho do bucket corretamente, pois não garantimos que os dados no preparo sejam mantidos fora do intervalo de buckets.
Como fazer para saber se minha consulta tem a atualização incremental habilitada?
Você poderá visualizar se a consulta tem a atualização incremental habilitada verificando 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á habilitada. Se o ícone não contiver um triângulo azul, a atualização incremental não estará habilitada.
Minha fonte recebe muitas solicitações quando uso a atualização incremental. O que posso fazer?
Adicionamos uma configuração que permite definir o número máximo de avaliações de consulta paralelas. Essa configuração pode ser encontrada nas configurações globais do fluxo de dados. Ao definir esse valor como um número menor, você poderá reduzir o número de solicitações enviadas ao sistema de origem. Essa configuração pode ajudar a reduzir o número de solicitações simultâneas e melhorar o desempenho do sistema de origem. Para definir o número máximo de execuções de consulta paralelas, acesse as configurações globais do fluxo de dados, navegue até o guia Escala e defina o número máximo de avaliações de consulta paralelas. É recomendado não habilitar esse limite, a menos que tenha problemas com o sistema de origem.