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 em seus fluxos de trabalho. Ao entender e evitar esses antipadrões, você otimiza seus fluxos de nuvem para obter melhor desempenho e confiabilidade.

Evite loops aninhados Para cada

Loops aninhados Para cada podem ser operações que consomem muitos recursos em fluxos da nuvem e afetam o desempenho e o consumo de recursos.

  • Tempo de execução: loops aninhados podem multiplicar o número total de iterações rapidamente. Por exemplo, se você tiver dois loops, cada um com 10 iterações, o número total de iterações se tornará 10 x 10 = 100. Esse aumento exponencial pode estender 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 aplica limites e cotas, como o número máximo de iterações permitidas em um loop e o tempo de execução geral. Os loops aninhados podem se aproximar rapidamente desses limites, levando a falhas de fluxo ou limitação, especialmente ao lidar com grandes conjuntos de dados ou execuções frequentes.
  • Impacto no desempenho: cada iteração em um loop aninhado consome poder de processamento e memória. À medida que o número de iterações cresce, a demanda por recursos do sistema aumenta, potencialmente desacelerando todo o fluxo.

Saiba mais: Limites de simultaneidade, loop e debatching

Dependendo do seu cenário, você pode evitar loops aninhados processando registros relacionados de uma tabela pai. Considere estes fatores:

  • Cenário: um loop externo usa a ação Listar Linhas para recuperar uma lista de categorias de produtos da tabela ProductCategory em que a coluna IsPromotion é verdadeira. Em seguida, um loop interno processa registros relacionados da tabela Produto para cada categoria recuperada pelo loop externo.

  • Abordagem alternativa: use a Expansão de Consulta OData para simplificar esse processo. Esse método permite que você trabalhe com um único loop Para cada, reduzindo o número total de solicitações para o Dataverse apenas uma chamada RetrieveMultiple.

Para implementar a expansão de consulta OData:

  • Use o parâmetro Expandir Consulta para especificar o nome da coluna de pesquisa que vincula a tabela ProductCategory à tabela Produto . Essa abordagem recupera registros relacionados em uma única consulta. Por exemplo, defina o parâmetro Expandir Consulta para Products($select=ProductName,Price).
  • Use o parâmetro $select para limitar as colunas retornadas da tabela relacionada.
  • Recupere e processe registros relevantes aplicando condições diretamente nas colunas da tabela de pesquisa usando o parâmetro Filtrar Linhas. Por exemplo, defina o parâmetro Filtrar Linhas como IsPromotion eq true.

Captura de tela do uso do parâmetro Expandir Consulta e Filtrar Linhas para implementar a expansão de consulta OData.

Evite loops infinitos

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

Quando você salva um fluxo que pode resultar em um loop de gatilho infinito, o Power Automate avisa.

Captura de tela do aviso que um criador recebe ao tentar salvar um fluxo que pode resultar em um loop infinito.

Para evitar loops infinitos:

  • Usar condições de gatilho: as condições de gatilho garantem que o fluxo só seja executado quando critérios específicos forem atendidos, evitando execuções desnecessárias. Implemente condições de gatilho adicionando uma condição ao gatilho para verificar determinados valores ou estados antes que o fluxo continue. Por exemplo, se o fluxo atualizar um campo de status, você poderá definir uma condição de gatilho para executar o fluxo somente se o status ainda não estiver definido com o valor desejado.
  • Encerrar o fluxo: uma abordagem alternativa é impedir que o fluxo continue, caso seja detectada uma condição que causaria um loop infinito. Encerre o fluxo quando uma condição específica for atendida usando a ação Encerrar. Essa abordagem pode ser usada como uma proteção para evitar novas ações se o fluxo estiver prestes a entrar em um loop infinito. Por exemplo, se o fluxo detectar que já processou um registro, ele poderá se encerrar 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 larga escala, considere o uso de um processo de extração, transformação e carregamento (ETL). Por exemplo, em vez de usar um fluxo da nuvem do Power Automate para ler dados de uma planilha grande do Excel, execute formatações ou validações de dados e grave os dados no Dataverse. Pode ser mais apropriado usar Fluxos de dados do Power Platform ou outra ferramenta de ETL.

Os fluxos de dados lidam com grandes volumes de dados de forma eficiente e fornecem melhor desempenho para tarefas de ETL do que os fluxos de nuvem. As ferramentas de ETL oferecem recursos especializados para transformação, validação e carregamento de dados, o que pode simplificar tarefas complexas de processamento de dados.

Para gerenciar a carga de dados com lógica de orquestração em fluxos de nuvem, combine fluxos de nuvem com fluxos de dados. Veja como:

  1. Invocar atualização do fluxo de dados

    • Ação: use o conector de fluxo de dados no Power Automate para disparar uma ação de atualização e iniciar o processo de ETL definido no fluxo de dados.
    • Exemplo: configure um fluxo da nuvem que dispara a atualização do fluxo de dados com base em uma agenda (como diária) ou em um evento (por exemplo, quando um novo arquivo é carregado em uma pasta do SharePoint).
  2. Ações Pós-ETL

    • Gatilho: use o gatilho Quando uma atualização de fluxo de dados for concluída no Power Automate para executar ações após o processo de ETL ser finalizado.
    • Exemplo: após a conclusão do fluxo de dados, use um fluxo da nuvem para enviar notificações, atualizar registros ou executar o processamento de dados.

Captura de tela do uso de ações de fluxo de dados em um fluxo de nuvem.

Evite usar o loop Para cada para atualizar um grande número de registros

Os usuários geralmente precisam criar ou atualizar milhares de registros em uma fonte de dados quando um fluxo é acionado no Power Automate. Muitos usuários usam um loop Para cada para processar cada registro sequencialmente, causando latência e atrasos.

Para melhorar o desempenho, tente estas duas abordagens:

  1. Operações em lote

    • Descrição: crie ou atualize registros em lotes. Muitos conectores e serviços fornecem pontos de extremidade de API que oferecem suporte a solicitações em lote. Essa abordagem permite agrupar várias operações em uma única solicitação HTTP.
    • Implementação: use o recurso de operação em lote para enviar várias solicitações de criação ou atualização de uma só vez. Essas operações são executadas sequencialmente na ordem especificada na solicitação em lote. A ordem das respostas corresponde à ordem das solicitações na operação em lote.
    • Benefícios: reduz o número de solicitações individuais enviadas à fonte de dados, minimizando a latência e melhorando o desempenho.

    Captura de tela demonstrando o uso da API do SharePoint para executar uma solicitação em lote.

  2. Paralelismo no loop Para cada

    • Descrição: habilite o processamento paralelo dentro do loop For Each para manipular vários registros simultaneamente.
    • Implementação: configure o loop Para cada para processar até 50 registros em paralelo. Essa abordagem é útil para serviços que não oferecem suporte a operações em lote.
    • Benefícios: reduz significativamente o tempo geral de processamento ao lidar com vários registros ao mesmo tempo.

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

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 seus processos e melhorar o desempenho.

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

  • Operações em lote: embora as operações em lote sejam lançadas em uma única solicitação, elas são executadas como várias operações individuais. Cada operação dentro do lote é processada separadamente.
  • Operações em massa: ao contrário, as operações em massa são lançadas e executadas como uma única operação. Toda a solicitação em massa é contada 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:

  • Usar HTTP com o Microsoft Entra ID: você pode invocar a API Web de Operações em Massa usando solicitações HTTP autenticadas com o Microsoft Entra ID.
  • Usar o Conector HTTP com entidades de serviço: como alternativa, você pode usar o conector HTTP no Power Automate ao trabalhar com entidades de serviço para invocar essas APIs.

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

Captura de tela usando uma ação Selecionar para preparar o conteúdo para a solicitação em massa.

Em seguida, usamos HTTP com o Microsoft Entra ID para lançar a solicitação usando a API Web CreateMultiple:

Captura de tela invocando uma solicitação HTTP para executar uma operação em massa.

Se você tiver 100 registros na saída JSON, essa abordagem incorrerá apenas em uma única ação em vez de 100 ações de Criar Linha no Dataverse.