Usando a atualização incremental com fluxos de dados
Com fluxos de dados, você pode trazer grandes quantidades de dados para o Power BI ou para o armazenamento fornecido pela sua organização. Em alguns casos, no entanto, não é prático atualizar uma cópia completa dos dados de origem em cada atualização. Uma boa alternativa é a atualização incremental, que fornece os seguintes benefícios para fluxos de dados:
- A atualização ocorre mais rapidamente: apenas os dados alterados precisam ser atualizados. Por exemplo, atualize apenas os últimos cinco dias de um fluxo de dados de 10 anos.
- A atualização é mais confiável: por exemplo, não é necessário manter conexões de longa duração com sistemas de origem voláteis.
- O consumo de recursos é reduzido: menos dados para atualizar reduz o consumo geral de memória e outros recursos.
A atualização incremental está disponível em fluxos de dados criados no Power BI e fluxos de dados criados no Power Apps. Este artigo mostra ecrãs do Power BI, mas estas instruções aplicam-se a fluxos de dados criados no Power BI ou no Power Apps.
Nota
Quando o esquema de uma tabela em um fluxo de dados analítico é alterado, uma atualização completa ocorre para garantir que todos os dados resultantes correspondam ao novo esquema. Como resultado, todos os dados armazenados incrementalmente são atualizados e, em alguns casos, se o sistema de origem não retiver dados históricos, são perdidos.
Usar a atualização incremental em fluxos de dados criados no Power BI requer que o fluxo de dados resida em um espaço de trabalho na capacidade Premium. A atualização incremental no Power Apps requer planos do Power Apps por aplicativo ou por usuário e só está disponível para fluxos de dados com o Armazenamento Azure Data Lake como destino.
No Power BI ou no Power Apps, o uso da atualização incremental requer que os dados de origem ingeridos no fluxo de dados tenham um campo DateTime no qual a atualização incremental possa filtrar.
Configurando a atualização incremental para fluxos de dados
Um fluxo de dados pode conter muitas tabelas. A atualização incremental é configurada no nível da tabela, permitindo que um fluxo de dados mantenha tabelas totalmente atualizadas e tabelas atualizadas incrementalmente.
Para configurar uma tabela atualizada incrementalmente, comece configurando sua tabela como faria com qualquer outra tabela.
Depois que o fluxo de dados for criado e salvo, selecione Atualização incremental na exibição de tabela, conforme mostrado na imagem a seguir.
Quando você seleciona o ícone, a janela Configurações de atualização incremental é exibida. Ative a atualização incremental.
A lista a seguir explica as configurações na janela Configurações de atualização incremental.
Alternância de ativação/desativação de atualização incremental: ativa ou desativa a política de atualização incremental para a tabela.
Lista suspensa do campo de filtro: seleciona o campo de consulta no qual a tabela deve ser filtrada para incrementos. Este campo contém apenas campos DateTime. Não é possível usar a atualização incremental se a tabela não contiver um campo Data/Hora.
Importante
Escolha um campo de data inalterável para o filtro de atualização incremental. Se o valor do campo for alterado (por exemplo, com um campo de data modificada ), isso pode levar a falhas de atualização devido a valores duplicados nos dados.
Armazenar/atualizar linhas do passado: o exemplo na imagem anterior ilustra essas próximas configurações.
Neste exemplo, definimos uma política de atualização para armazenar cinco anos de dados no total e atualizar incrementalmente 10 dias de dados. Supondo que a tabela seja atualizada diariamente, as seguintes ações são executadas para cada operação de atualização:
Adicione um novo dia de dados.
Atualize 10 dias, até a data atual.
Remova os anos civis anteriores a cinco anos anteriores à data atual. Por exemplo, se a data atual for 1º de janeiro de 2019, o ano de 2013 será removido.
A primeira atualização de fluxo de dados pode demorar um pouco para importar todos os cinco anos, mas as atualizações subsequentes provavelmente serão concluídas muito mais rapidamente.
Detetar alterações de dados: uma atualização incremental de 10 dias é muito mais eficiente do que uma atualização completa de cinco anos, mas você pode fazer ainda melhor. Ao marcar a caixa de seleção Detetar alterações de dados, você pode selecionar uma coluna de data/hora para identificar e atualizar apenas os dias em que os dados foram alterados. Isso pressupõe que essa coluna exista no sistema de origem, que normalmente é para fins de auditoria. O valor máximo desta coluna é avaliado para cada um dos períodos no intervalo incremental. Se esses dados não tiverem sido alterados desde a última atualização, não há necessidade de atualizar o período. No exemplo, isso pode reduzir ainda mais os dias atualizados incrementalmente de 10 para talvez 2.
Gorjeta
O design atual requer que a coluna usada para detetar alterações de dados seja persistente e armazenada em cache na memória. Você pode querer considerar uma das seguintes técnicas para reduzir a cardinalidade e o consumo de memória:
- Persista apenas o valor máximo desta coluna no momento da atualização, talvez usando uma função do Power Query.
- Reduza a precisão para um nível aceitável tendo em conta os seus requisitos de frequência de atualização.
Atualize apenas períodos completos: Imagine que sua atualização está programada para ser executada às 4h00 todos os dias. Se os dados aparecerem no sistema de origem durante as primeiras quatro horas desse dia, talvez você não queira contabilizá-los. Algumas métricas de negócios, como barris por dia na indústria de petróleo e gás, não são práticas ou sensatas de serem contabilizadas com base em dias parciais.
Outro exemplo em que apenas atualizar períodos completos é apropriado é atualizar dados de um sistema financeiro. Imagine um sistema financeiro onde os dados do mês anterior são aprovados no 12º dia do calendário do mês. Você pode definir o intervalo incremental para um mês e agendar a atualização para ser executada no 12º dia do mês. Com esta opção selecionada, o sistema atualizará os dados de janeiro (o período mensal completo mais recente) em 12 de fevereiro.
Nota
A atualização incremental do fluxo de dados determina as datas de acordo com a seguinte lógica: Se uma atualização for agendada, a atualização incremental para fluxos de dados usará o fuso horário definido na política de atualização. Se não existir nenhum agendamento para atualização, a atualização incremental usará o tempo do computador que executa a atualização.
Depois que a atualização incremental é configurada, o fluxo de dados altera automaticamente sua consulta para incluir a filtragem por data. Se o fluxo de dados tiver sido criado no Power BI, também pode editar a consulta gerada automaticamente utilizando o editor avançado no Power Query para ajustar ou personalizar a atualização. Leia mais sobre a atualização incremental e como ela funciona nas seções a seguir.
Nota
Quando edita o fluxo de dados, o editor do Power Query liga-se diretamente à origem de dados e não mostra os dados armazenados em cache/filtrados no fluxo de dados depois de serem processados pela política de atualização incremental. Para verificar os dados armazenados em cache dentro do fluxo de dados, conecte-se do Power BI Desktop ao fluxo de dados depois de configurar a política de atualização incremental e atualizar o fluxo de dados.
Atualização incremental e tabelas vinculadas versus tabelas computadas
Para tabelas vinculadas , a atualização incremental atualiza a tabela de origem. Como as tabelas vinculadas são simplesmente um ponteiro para a tabela original, a atualização incremental não tem impacto na tabela vinculada. Quando a tabela de origem é atualizada de acordo com sua política de atualização definida, qualquer tabela vinculada deve assumir que os dados na fonte são atualizados.
As tabelas computadas são baseadas em consultas executadas em um armazenamento de dados, que pode ser outro fluxo de dados. Como tal, as tabelas computadas comportam-se da mesma forma que as tabelas ligadas.
Como as tabelas computadas e as tabelas vinculadas se comportam de forma semelhante, os requisitos e as etapas de configuração são os mesmos para ambos. Uma diferença é que, para tabelas computadas, em determinadas configurações, a atualização incremental não pode ser executada de forma otimizada devido à forma como as partições são construídas.
Alternando entre atualização incremental e completa
Os fluxos de dados suportam a alteração da política de atualização entre atualização incremental e completa. Quando ocorre uma alteração em qualquer direção (completa para incremental ou incremental para completa), a alteração afeta o fluxo de dados após a próxima atualização.
Ao mover um fluxo de dados da atualização completa para a incremental, a nova lógica de atualização atualiza o fluxo de dados aderindo à janela de atualização e ao incremento, conforme definido nas configurações de atualização incremental.
Ao mover um fluxo de dados da atualização incremental para a atualização completa, todos os dados acumulados na atualização incremental são substituídos pela política definida na atualização completa. Você deve aprovar esta ação.
Suporte a fuso horário em atualização incremental
A atualização incremental do fluxo de dados depende do momento em que é executada. A filtragem da consulta depende do dia em que é executada.
Para acomodar essas dependências e garantir a consistência dos dados, a atualização incremental para fluxos de dados implementa a seguinte heurística para cenários de atualização agora :
No caso em que uma atualização agendada é definida no sistema, a atualização incremental usa as configurações de fuso horário da seção de atualização agendada. Isso garante que, qualquer que seja o fuso horário em que a pessoa que atualiza o fluxo de dados, ele sempre será consistente com a definição do sistema.
Se nenhuma atualização agendada for definida, os fluxos de dados usarão o fuso horário do computador do usuário que está executando a atualização.
A atualização incremental também pode ser invocada usando APIs. Nesse caso, a chamada de API pode conter uma configuração de fuso horário usada na atualização. O uso de APIs pode ser útil para fins de teste e validação.
Detalhes da implementação da atualização incremental
Os fluxos de dados usam particionamento para atualização incremental. A atualização incremental nos fluxos de dados mantém o número mínimo de partições para atender aos requisitos da política de atualização. Partições antigas que saem do alcance são descartadas, o que mantém uma janela rolante. As partições são mescladas oportunisticamente, reduzindo o número total de partições necessárias. Isso melhora a compactação e, em alguns casos, pode melhorar o desempenho da consulta.
Os exemplos nesta seção compartilham a seguinte política de atualização:
- Armazenar linhas no último 1 trimestre
- Atualizar linhas nos últimos 10 dias
- Detetar alterações de dados = Falso
- Atualizar apenas dias completos = Verdadeiro
Mesclar partições
Neste exemplo, as partições de dia são mescladas automaticamente para o nível de mês depois de saírem do intervalo incremental. As partições no intervalo incremental precisam ser mantidas na granularidade diária para permitir que apenas esses dias sejam atualizados. A operação de atualização com Data de Execução 12/11/2016 mescla os dias de novembro, porque eles estão fora do intervalo incremental.
Solte partições antigas
As partições antigas que estão fora do intervalo total são removidas. A operação de atualização com Data de Execução 02/01/2017 descarta a partição para o 3º trimestre de 2016 porque ela está fora do intervalo total.
Recuperação de falha prolongada
Este exemplo simula como o sistema se recupera normalmente de uma falha prolongada. Digamos que a atualização não seja executada com êxito porque as credenciais da fonte de dados expiraram e o problema leva 13 dias para ser resolvido. O intervalo incremental é de apenas 10 dias.
A próxima operação de atualização bem-sucedida, com Data de execução 15/01/2017, precisa preencher os 13 dias faltantes e atualizá-los. Ele também precisa atualizar os nove dias anteriores porque eles não foram atualizados no horário normal. Em outras palavras, o intervalo incremental é aumentado de 10 para 22 dias.
A próxima operação de atualização, com Data de Execução 16/01/2017, aproveita a oportunidade para mesclar os dias em dezembro e os meses no 4º trimestre de 2016.
Atualização incremental de fluxo de dados e conjuntos de dados
A atualização incremental do fluxo de dados e a atualização incremental do conjunto de dados são projetadas para funcionar em conjunto. É aceitável e suportado ter uma tabela de atualização incremental em um fluxo de dados, totalmente carregada em um conjunto de dados, ou uma tabela totalmente carregada em um fluxo de dados carregado incrementalmente em um conjunto de dados.
Ambas as abordagens funcionam de acordo com suas definições especificadas nas configurações de atualização. Para obter mais informações: Atualização incremental no Power BI Premium
Consulte também
Este artigo descreveu a atualização incremental para fluxos de dados. Aqui estão mais alguns artigos que podem ser úteis:
- Preparação de dados de autoatendimento no Power BI
- Criação de tabelas computadas em fluxos de dados
- Conectar-se a fontes de dados para fluxos de dados
- Vincular tabelas entre fluxos de dados
- Criar e usar fluxos de dados no Power BI
- Usando fluxos de dados com fontes de dados locais
- Recursos do desenvolvedor para fluxos de dados do Power BI
Para mais informações sobre o Power Query e a atualização agendada, pode ler estes artigos:
Para obter mais informações sobre o Common Data Model, leia o artigo de visão geral: