Partilhar via


Utilização de atualização incremental com fluxos de dados

Com fluxos de dados, pode transportar 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 oferece os seguintes benefícios para fluxos de dados:

  • A atualização ocorre mais rapidamente: Apenas os dados alterados precisam de ser atualizados. Por exemplo, atualize apenas os últimos cinco dias de um fluxo de dados de 10 anos.
  • A atualização é mais fiável: Por exemplo, não é necessário manter ligações de longa duração a sistemas fonte voláteis.
  • O consumo de recursos é reduzido: Menos dados para atualizar reduz o consumo global de memória e outros recursos.

A atualização incremental está disponível nos fluxos de dados criados no Power BI e nos 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.

Observação

Quando o esquema de uma tabela num fluxo de dados analítico muda, ocorre uma atualização completa para garantir que todos os dados resultantes correspondem ao novo esquema. Como resultado, quaisquer dados armazenados incrementalmente são atualizados e, em alguns casos, se o sistema de origem não retiver dados históricos, são perdidos.

Captura de ecrã do diálogo de configurações de atualização incremental usado para atualizar fluxos de dados.

A utilização de atualização incremental em fluxos de dados criados no Power BI exige que o fluxo de dados resida num espaço de trabalho em capacidade Premium. A atualização incremental no Power Apps requer planos Power Apps por aplicação ou por utilizador, estando disponível apenas para dataflows com o Azure Data Lake Storage como destino.

Tanto no Power BI como no Power Apps, usar a atualização incremental exige que os dados de origem ingeridos no fluxo de dados tenham um campo DateTime onde a atualização incremental pode filtrar.

Configuração da atualização incremental para fluxos de dados

Um fluxo de dados pode conter muitas tabelas. A atualização incremental é configurada ao nível da tabela, permitindo que um fluxo de dados contenha tanto tabelas totalmente atualizadas como tabelas atualizadas incrementalmente.

Para configurar uma tabela com atualização incremental, comece por configurar a sua tabela como qualquer outra.

Depois de o fluxo de dados ser criado e guardado, selecione Atualização Incremental na vista de tabela, como mostrado na imagem seguinte.

Captura de ecrã do Power BI com o ícone de atualização incremental para fluxos de dados enfatizado.

Quando selecionas o ícone, aparece a janela de Definições de Atualização Incremental . Ativar a atualização incremental.

Captura de ecrã do diálogo de definições de atualização incremental com a atualização incremental ativada.

A lista seguinte explica as definições na janela de Atualização Incremental .

  • Alternância de atualização incremental ativa/desligada: Ativa ou desativa a política de atualização incremental para a mesa.

  • Menu suspenso do campo de filtro: Seleciona o campo de consulta no qual a tabela deve ser filtrada para valores incrementais. Este campo contém apenas campos DataHora. Não podes usar atualização incremental se a tua tabela não tiver um campo DateTime.

    Importante

    Escolha um campo de data inalterável para o filtro de atualização incremental. Se o valor do campo mudar (por exemplo, com um campo de data modificada ), esta alteração pode levar a falhas de atualização devido a valores duplicados nos dados.

  • Guardar/atualizar linhas do passado: O exemplo na imagem anterior ilustra estas próximas definiçõ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. Assumindo que a tabela é atualizada diariamente, as seguintes ações são realizadas em cada operação de atualização:

    • Adicione um novo dia de dados.

    • Atualize 10 dias, até à data atual.

    • Remova os anos do calendário que tenham mais de cinco anos antes da data atual. Por exemplo, se a data atual for 1 de janeiro de 2019, o ano de 2013 é removido.

    A primeira atualização do fluxo de dados pode demorar algum tempo a importar os cinco anos, mas as atualizações subsequentes deverão ser 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 pode conseguir fazer ainda melhor. Ao selecionar a caixa Detetar alterações de dados , pode selecionar uma coluna de data/hora para identificar e atualizar apenas os dias em que os dados mudaram. Isto pressupõe que tal coluna existe no sistema fonte, que normalmente serve para efeitos de auditoria. O valor máximo desta coluna é avaliado para cada um dos períodos no intervalo incremental. Se esses dados não mudaram desde a última atualização, não há necessidade de atualizar o período. No exemplo, isto pode reduzir ainda mais os dias refrescados incrementalmente, de 10 para talvez 2.

    Sugestão

    O design atual exige que a coluna usada para detetar alterações nos dados seja mantida e armazenada em cache na memória. 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, possivelmente utilizando uma função Power Query.
    • Reduza a precisão a um nível aceitável tendo em conta os requisitos de frequência de atualização.
  • Atualize apenas períodos completos: Imagine que a sua atualização está agendada para executar às 4:00 da manhã todos os dias. Se os dados aparecerem no sistema de origem durante essas primeiras quatro horas desse dia, talvez não queiras ter em conta isso. Alguns indicadores empresariais, como barris por dia na indústria do petróleo e gás, não são práticos ou sensatos para contabilizar 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 civil do mês. Podes definir o intervalo incremental para um mês e agendar a atualização para o dia 12 do mês. Com esta opção selecionada, o sistema atualizará os dados de janeiro (o período mensal completo mais recente) a 12 de fevereiro.

Observação

A atualização incremental de fluxo de dados determina as datas segundo a seguinte lógica: se uma atualização for agendada, a atualização incremental para fluxos de dados utiliza o fuso horário definido na política de atualização. Se não existir um calendário para atualizar, a atualização incremental utiliza o tempo do computador a executar a atualização.

Após a atualização incremental ser configurada, o fluxo de dados altera automaticamente a sua consulta para incluir filtragem por data. Se o fluxo de dados foi criado no Power BI, também pode editar a consulta gerada automaticamente usando o editor avançado no Power Query para afinar ou personalizar a atualização. Leia mais sobre a atualização incremental e como funciona nas secções seguintes.

Observação

Quando editas o fluxo de dados, o editor Power Query liga-se diretamente à fonte de dados e não mostra os dados armazenados em cache ou filtrados no fluxo de dados depois de a política de atualização incremental os processar. Para verificar os dados armazenados em cache dentro do fluxo de dados, ligue-se do Power BI Desktop ao fluxo de dados após configurar a política de atualização incremental e atualizar o fluxo de dados.

Atualização incremental e tabelas ligadas vs. tabelas computadas

Para tabelas ligadas , a atualização incremental atualiza a tabela de origem. Como as tabelas ligadas são simplesmente um apontador para a tabela original, a atualização incremental não tem impacto na tabela ligada. Quando a tabela fonte é atualizada de acordo com a sua política de atualização definida, qualquer tabela ligada deve assumir que os dados na fonte são atualizados.

As tabelas computadas baseiam-se em consultas que correm sobre um armazenamento de dados, que pode ser outro fluxo de dados. Assim, as tabelas computadas comportam-se da mesma forma que as tabelas ligadas.

Como as tabelas computadas e as tabelas ligadas comportam-se de forma semelhante, os requisitos e etapas de configuração são os mesmos para ambas. Uma diferença é que, para tabelas computadas, em certas configurações, a atualização incremental não pode correr de forma otimizada devido à forma como as partições são construídas.

Alternar entre atualização incremental e atualização completa

Os fluxos de dados suportam a alteração da política de atualização entre atualização incremental e renovação completa. Quando ocorre uma alteração em qualquer sentido (completa para incremental ou incremental para integral), a alteração afeta o fluxo de dados após a atualização seguinte.

Quando se move um fluxo de dados de atualização total para incremental, a nova lógica de atualização atualiza o fluxo de dados seguindo a janela de atualização e incrementa conforme definido nas definições de atualização incremental.

Quando se move um fluxo de dados de atualização incremental para atualização completa, todos os dados acumulados na atualização incremental sobrescrevem a política definida na atualização completa. Tem de aprovar esta ação.

Suporte a fusos horários para atualização incremental

A atualização incremental do fluxo de dados depende do tempo em que é executado. 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 de uma atualização agendada ser definida no sistema, a atualização incremental utiliza as definições de fuso horário da secção de atualização agendada. Este processo garante que, seja qual for o fuso horário em que a pessoa que atualiza o fluxo de dados se encontre, esteja sempre consistente com a definição do sistema.

  • Se não estiver definida uma atualização programada, os fluxos de dados utilizam o fuso horário do computador do utilizador que está a realizar a atualização.

A atualização incremental também pode ser invocada usando APIs. Neste caso, a chamada API pode conter uma definição de fuso horário usada na atualização. A utilização de APIs pode ser útil para fins de teste e validação.

Detalhes da implementação da atualização incremental de dados

Os fluxos de dados utilizam particionamento para atualização incremental. A atualização incremental nos fluxos de dados mantém o número mínimo de partições para cumprir os requisitos da política de atualização. Partições antigas que saem do alcance são descartadas, o que mantém uma janela deslizante. As partições são oportunisticamente fundidas, reduzindo o número total de partições necessárias. Este número mínimo de partições melhora a compressão e, em alguns casos, pode melhorar o desempenho das consultas.

Os exemplos nesta secção partilham a seguinte política de atualização:

  • Filas de lojas no último trimestre
  • Atualize as linhas nos últimos 10 dias
  • Detetar alterações de dados = Falso
  • Apenas atualizar dias completos = True

Fusão de partições

Neste exemplo, as partições diárias são automaticamente fundidas ao nível do mês depois de saírem do intervalo incremental. As partições no intervalo incremental precisam de ser mantidas a um nível diário de detalhe para permitir que apenas aqueles dias sejam atualizados. A operação de atualização com Data de Execução 12/11/2016 integra os dias de novembro, porque estes ficam fora do intervalo incremental.

Diagrama que mostra as partições de fusão nos fluxos de dados.

Eliminar partições antigas

Partições antigas que ficam fora do intervalo total são removidas. A operação de atualização com Data de Execução 1/2/2017 elimina a partição do terceiro trimestre de 2016 porque está fora do intervalo completo.

Diagrama que mostra as partições antigas a serem descartadas nos dataflows.

Recuperação de uma falha prolongada

Este exemplo simula como o sistema recupera de forma elegante após falhas prolongadas. Digamos que o refresh não corre com sucesso porque as credenciais da fonte de dados expiraram e o problema demora 13 dias a resolver-se. O intervalo incremental é apenas de 10 dias.

A próxima operação de atualização bem-sucedida, com Data de Execução a 15/01/2017, precisa de preencher os 13 dias em falta e atualizá-los. Também precisa de atualizar os nove dias anteriores porque não foram atualizados no horário normal. Ou seja, o intervalo incremental é aumentado de 10 para 22 dias.

A próxima operação de renovação, com Data de Execução a 16/01/2017, aproveita para fundir os dias de dezembro com os meses do quarto trimestre de 2016.

Diagrama mostrando a recuperação após falhas prolongadas nos fluxos de dados.

Atualização incremental de fluxo de dados e conjuntos de dados

A atualização incremental de fluxo de dados e a atualização incremental do conjunto de dados são concebidas para funcionar em conjunto. É aceitável e suportado ter uma tabela de atualização incremental num fluxo de dados, totalmente carregada num conjunto de dados, ou uma tabela totalmente carregada num fluxo de dados carregada incrementalmente para um conjunto de dados.

Ambas as abordagens funcionam de acordo com as definições especificadas nas configurações de atualização. Mais informações: Atualização incremental no Power BI Premium

Este artigo descreveu a atualização incremental para fluxos de dados. Aqui estão mais alguns artigos que podem ser úteis:

Para obter mais informações sobre o Power Query e a atualização agendada, pode ler estes artigos:

Para mais informações sobre o Common Data Model, pode ler o seu artigo de visão geral: