Evitar antipadrões

Antipadrões são práticas que parecem benéficas, mas levam a problemas de desempenho, ineficiências de recursos e possíveis falhas nos seus fluxos de trabalho. Ao compreender e evitar estes antipadrões, otimiza os seus fluxos de cloud para melhor o desempenho e a fiabilidade.

Evitar ciclos aninhados Para cada

Os ciclos aninhados Para cada podem ser operações intensivas de recursos em fluxos de cloud e afetam o desempenho e o consumo de recursos.

  • Tempo de execução: os ciclos aninhados podem multiplicar o número total de iterações rapidamente. Por exemplo, se tiver dois ciclos, cada um com 10 iterações, o número total de iterações torna-se 10 x 10 = 100. Este aumento exponencial pode expandir o tempo de execução do seu fluxo, especialmente se cada iteração processar grandes conjuntos de dados ou executar operações complexas.
  • Limites e cotas: o Power Automate impõe limites e cotas, tal como o número máximo de iterações permitidas dentro de um ciclo e o tempo de execução geral. Os ciclos aninhados podem atingir rapidamente estes limites, o que leva a falhas de fluxo ou a limitação, especialmente ao lidar com grandes conjuntos de dados ou execuções frequentes.
  • Impacto no desempenho: cada iteração dentro de um ciclo aninhado consome energia de processamento e memória. À medida que o número de iterações cresce, a procura de recursos do sistema aumenta, potencialmente abrandando todo o fluxo.

Mais informações: Limites de simultaneidade, ciclos e de anulação de lotes

Dependendo do cenário, pode evitar ciclos aninhados ao processar registos relacionados de uma tabela principal. Considere o seguinte:

  • Cenário: um ciclo externo usa a ação Listar Linhas para obter uma lista de categorias de produtos da tabela ProductCategory onde a coluna IsPromotion é true. Em seguida, um ciclo interno processa os registos relacionados da tabela Produto para cada categoria obtida pelo ciclo externo.

  • Abordagem alternativa: use a Expansão da Consulta OData para simplificar este processo. Este método permite-lhe trabalhar com um único ciclo Para cada, o que reduz o número total de pedidos para o Dataverse para apenas uma chamada RetrieveMultiple.

Para implementar a expansão da consulta OData:

  • Use o parâmetro Expandir Consulta para especificar o nome da coluna de procura que associa a tabela ProductCategory à tabela Produto. Esta abordagem obtém registos relacionados numa única consulta. Por exemplo, defina o parâmetro Expandir Consulta como Products($select=ProductName,Price).
  • Use o parâmetro $select para limitar as colunas obtidas da tabela relacionada.
  • Obtenha e processe registos relevantes ao aplicar condições diretamente nas colunas da tabela de procura usando o parâmetro Filtrar Linhas. Por exemplo, defina o parâmetro Filtrar Linhas como IsPromotion eq true.

Captura de ecrã da utilização do parâmetro Expandir Consulta e Filtrar Linhas para implementar a expansão da consulta OData.

Evite ciclos infinitos

Com o Power Automate, os fluxos podem ser acionados infinitamente, como quando o fluxo atualiza a mesma tabela que o aciona.

Quando guarda um fluxo que pode resultar num ciclo de acionador infinito, o Power Automate avisa-o.

Captura de ecrã do aviso que um criador recebe quando tenta guardar um fluxo que pode resultar num ciclo infinito.

Para evitar ciclos infinitos:

  • Usar condições de acionador: as condições de acionador garantem que o fluxo só é executado quando critérios específicos são cumpridos, evitando execuções desnecessárias. Implemente condições de acionador ao adicionar uma condição ao acionador para verificar determinados valores ou estados antes que o fluxo prossiga. Por exemplo, se o fluxo atualizar um campo de estado, poderá definir uma condição de acionador para executar o fluxo apenas se o estado ainda não estiver definido para o valor desejado.
  • Terminar o fluxo: uma abordagem alternativa é impedir que o fluxo continue se detetar uma condição que causaria um ciclo infinito. Termine o fluxo quando uma condição específica for satisfeita usando a ação Terminar. Esta abordagem pode ser usada como uma salvaguarda para evitar ações adicionais se o fluxo estiver prestes a entrar num ciclo infinito. Por exemplo, se o fluxo detetar que já processou um registo, pode terminar-se a si próprio para evitar o reprocessamento.

Evite um grande número de operações de transformação de dados

Ao trabalhar com transformações de dados em grande escala, considere a utilização de um processo de extração, transformação, carregamento (ETL). Por exemplo, em vez de usar um fluxo de cloud do Power Automate para ler dados de uma folha de cálculo do Excel grande, realize formatações ou validações de dados e escreve os dados no Dataverse. Pode ser mais apropriado usar fluxos de dados do Power Platform ou outra ferramenta ETL.

Os fluxos de dados lidam com grandes volumes de dados de forma eficiente e fornecem melhor desempenho para tarefas de ETL do que fluxos de cloud. As ferramentas ETL oferecem caraterísticas especializadas para transformação, validação e carregamento de dados, o que pode simplificar tarefas complexas de processamento de dados.

Para gerir o carregamento de dados com lógica de orquestração em fluxos de cloud, combine fluxos de cloud com fluxos de dados. Saiba como:

  1. Invocar atualização do fluxo de dados

    • Ação: use o conector do fluxo de dados no Power Automate para acionar uma ação de atualização e iniciar o processo ETL definido no seu fluxo de dados.
    • Exemplo: configure um fluxo de cloud que acione a atualização do fluxo de dados com base numa agenda (como diária) ou num evento (por exemplo, quando um novo ficheiro é carregado numa pasta do SharePoint).
  2. Ações pós-ETL

    • Acionador: use o acionador Quando uma atualização de fluxo de dados é concluída no Power Automate para realizar ações após a conclusão do processo ETL.
    • Exemplo: após a conclusão do fluxo de dados, use um fluxo de cloud para enviar notificações, atualizar registos ou realizar o processamento de dados.

Captura de ecrã da utilização de ações do fluxo de dados num fluxo de cloud.

Evite usar o ciclo Para cada para atualizar grandes números de registos

Geralmente, os utilizadores precisam de criar ou atualizar milhares de registos numa origem de dados quando um fluxo é acionado no Power Automate. Muitos utilizadores usam um ciclo Para cada para processar cada registo sequencialmente, causando latência e atrasos.

Para melhorar o desempenho, tente estas duas abordagens:

  1. Operações em lote

    • Descrição: crie ou atualize registos em lotes. Muitos conectores e serviços fornecem pontos finais de API que suportam pedidos em lote. Esta abordagem permite agrupar várias operações num único pedido HTTP.
    • Implementação: use a caraterística de operação em lote para enviar vários pedidos de criação ou atualização de uma só vez. Estas operações são executadas sequencialmente na ordem especificada no pedido de lote. A ordem das respostas corresponde à ordem dos pedidos na operação em lote.
    • Benefícios: reduz o número de pedidos individuais enviados para a origem de dados, o que minimiza a latência e melhora o desempenho.

    Captura de ecrã a demonstrar a utilização da API do SharePoint para executar um pedido em lote.

  2. Paralelismo no ciclo Para cada

    • Descrição: ative o processamento paralelo dentro do ciclo Para Cada para lidar com vários registos simultaneamente.
    • Implementação: configure o ciclo Para Cada para processar até 50 registos em paralelo. Esta abordagem é útil para serviços que não suportam operações em lote.
    • Benefícios: reduz significativamente o tempo total de processamento ao lidar com vários registos ao mesmo tempo.

Para obter informações sobre como fazer pedidos em lote, consulte a seguinte documentação da API REST:

Utilizar Operações em massa no Dataverse

Ao trabalhar com o Dataverse, use as APIs Web de Operações em Massa para reduzir o número de ações necessárias, simplificar os seus processos e melhorar o desempenho.

As APIs Web de operações em massa oferecem uma vantagem distinta em relação às operações em lote. Veja em que diferem:

  • Operações em lote: embora as operações em lote sejam publicadas num único pedido, são executadas como várias operações individuais. Cada operação dentro do lote é processada separadamente.
  • Operações em massa: em contraste, as operações em massa são publicadas e executadas como uma única operação. Todo o pedido em massa é contado como uma operação, o que pode reduzir significativamente o número de ações e melhorar a eficiência.

Para invocar Operações em Massa:

  • Utilizar HTTP com o Microsoft Entra ID: pode invocar a API Web de Operações em massa através de pedidos HTTP autenticados com o Microsoft Entra ID.
  • Utilizar o Conector HTTP com principais de serviço: alternativamente, pode usar o conector HTTP no Power Automate ao trabalhar com principais de serviço para invocar estas APIs.

Neste exemplo, preparamos os registos no formato JSON usando a ação Selecionar:

Captura de ecrã de uma ação Selecionar para preparar o conteúdo para o pedido em massa.

Em seguida, usamos HTTP com o Microsoft Entra ID para publicar o pedido usando a API Web CreateMultiple:

Captura de ecrã da invocação de um pedido HTTP para realizar uma operação em massa.

Se tiver 100 registos na saída JSON, esta abordagem incorrerá apenas numa única ação, em vez de 100 ações Criar Linha no Dataverse.