Undgå modmønstre

Antimønstre er fremgangsmåder, der virker gavnlige, men som fører til problemer med ydeevnen, ressourceineffektivitet og potentielle fejl i dine arbejdsprocesser. Ved at forstå og undgå disse antimønstre optimerer du dine cloudflows med henblik på bedre ydeevne og pålidelighed.

Undgå indlejrede For hver løkke

Indlejret For hver løkke kan være ressourcekrævende handlinger i cloudflows og påvirke ydeevnen og ressourceforbruget.

  • Udførelsestid: Indlejrede løkker kan hurtigt multiplicere det samlede antal gentagelser. Hvis du f.eks. har to løkker, hver med 10 gentagelser, bliver det samlede antal gentagelser 10 x 10 = 100. Denne eksponentielle stigning kan forlænge kørselstiden for dit flow, især hvis hver gentagelse behandler store datasæt eller udfører komplekse handlinger.
  • Grænser og kvoter: Power Automate håndhæver grænser og kvoter, f.eks. det maksimale antal gentagelser, der er tilladt i en løkke, og den samlede udførelsestid. Indlejrede løkker kan hurtigt nærme sig disse grænser, hvilket fører til flowfejl eller begrænsninger, især når du beskæftiger dig med store datasæt eller hyppige kørsler.
  • Påvirkning af ydeevnen: Hver gentagelse i en indlejret løkke forbruger processorkraft og hukommelse. Efterhånden som antallet af gentagelser vokser, øges behovet for systemressourcer, hvilket potentielt kan gøre hele flowet langsommere.

Flere oplysninger: Samtidighed for løkker og fjernelse af batchgrænser

Afhængigt af dit scenarie kan du undgå indlejrede løkker ved at behandle relaterede poster fra en overordnet tabel. Overvej følgende:

  • Scenarie: En ydre løkke bruger handlingen Listerækker til at hente en liste over produktkategorier fra Produktkategori tabellen, hvor kolonnen IsPromotion er sand. En indre løkke behandler derefter relaterede poster fra tabellen Product for hver kategori, der hentes af den ydre løkke.

  • Alternativ fremgangsmåde: Brug OData-forespørgselsudvidelse til at strømline denne proces. Denne metode giver dig mulighed for at arbejde med en enkelt For hver-løkke, hvilket reducerer det samlede antal anmodninger til Dataverse til kun ét RetrieveMultiple-kald.

Sådan implementeres OData-forespørgselsudvidelse:

  • Brug parameteren Udvid forespørgsel til at angive navnet på opslagskolonnens navn, der knytter tabellen ProductCategory til tabellen Produkt. Denne fremgangsmåde henter relaterede poster i en enkelt forespørgsel. Du kan f.eks. angive parameteren Udvid forespørgsel til Products($select=ProductName,Price).
  • Brug parameteren $select til at begrænse de kolonner, der returneres fra den relaterede tabel.
  • Hent og behandl relevante poster ved at anvende betingelser direkte på opslagstabellens kolonner ved hjælp af parameteren Filtrer rækker. Du kan f.eks. angive parameteren Filtrer rækker til IsPromotion eq true.

Skærmbillede af, hvordan du bruger parameteren Udvid forespørgsel og Filtrer rækker til at implementere OData-forespørgselsudvidelse.

Undgå uendelige løkker

Med Power Automate kan flows udløses uendeligt, f.eks. når flowet opdaterer den samme tabel, som udløser det.

Når du gemmer et flow, der kan resultere i en uendelig udløserløkke, advarer Power Automate dig.

Skærmbillede af den advarsel, en udvikler modtager, når han forsøger at gemme et flow, der kan resultere i en uendelig løkke.

Undgå uendelige løkker:

  • Brug udløserbetingelser: Udløserbetingelser sikrer, at flowet kun kører, når bestemte kriterier er opfyldt, så unødvendige kørsler undgås. Implementer udløserbetingelser ved at føje en betingelse til udløseren for at kontrollere, om der er bestemte værdier eller tilstande, før flowet fortsætter. Hvis flowet f.eks. opdaterer et statusfelt, kan du angive en udløserbetingelse til kun at køre flowet, hvis status ikke allerede er angivet til den ønskede værdi.
  • Afslut flowet: En alternativ fremgangsmåde er at stoppe flowet i at fortsætte, hvis det registrerer en tilstand, der ville forårsage en uendelig løkke. Afslut flowet, når en bestemt betingelse er opfyldt, ved hjælp af handlingen Afslut. Denne fremgangsmåde kan bruges som en sikkerhedsforanstaltning for at forhindre yderligere handlinger, hvis flowet er ved at komme ind i en uendelig løkke. Hvis flowet f.eks. registrerer, at det allerede har behandlet en post, kan det afslutte sig selv for at undgå genbehandling.

Undgå et stort antal datatransformationshandlinger

Når du arbejder med store datatransformationer, kan du overveje at bruge en ETL-proces (extract, transform, load). F.eks. skal du i stedet for at bruge et Power Automate cloudflow til at læse data fra et stort Excel-regneark, udføre dataformatering eller valideringer og derefter skrive dataene ind Dataverse. Det kan være mere hensigtsmæssigt at bruge Power Platform dataflows eller et andet ETL-værktøj.

Dataflows håndterer store mængder data effektivt og giver bedre ydeevne til ETL-opgaver end cloudflows. ETL-værktøjer tilbyder specialiserede funktioner til datatransformation, validering og indlæsning, hvilket kan forenkle komplekse databehandlingsopgaver.

Hvis du vil administrere dataindlæsning med orkestreringslogik i cloudflows, skal du kombinere cloudflows med dataflows. Sådan gør du:

  1. Kald opdatering af dataflow

    • Handling: Brug dataflowconnectoren i Power Automate til at udløse en opdateringshandling og starte den ETL-proces, der er defineret i dit dataflow.
    • Eksempel: Indstille et cloudflow, der udløser opdateringen af dataflowet baseret på en tidsplan (f.eks. dagligt) eller en hændelse (f.eks. når en ny fil overføres til en SharePoint mappe).
  2. Efter-ETL-handlinger

    • Udløser: Brug udløseren Når en opdatering af dataflow er fuldført i Power Automate til at udføre handlinger, når ETL-processen er afsluttet.
    • Eksempel: Når dataflowet er fuldført, kan du bruge et cloudflow til at sende meddelelser, opdatere poster eller udføre databehandling.

Skærmbillede af brug af dataflowhandlinger i et cloudflow.

Undgå at bruge For hver-løkke til at opdatere et stort antal poster

Brugere har ofte brug for at oprette eller opdatere tusindvis af poster i en datakilde, når et flow udløses i Power Automate. Mange brugere bruger en For hver-løkke til at behandle hver post sekventielt, hvilket medfører ventetider og forsinkelser.

Prøv disse to fremgangsmåder for at forbedre ydeevnen:

  1. Batchhandlinger

    • Beskrivelse: Oprette eller opdatere poster i portioner. Mange connectorer og tjenester har API-slutpunkter, der understøtter batchanmodninger. Med denne fremgangsmåde kan du gruppere flere handlinger i en enkelt HTTP-anmodning.
    • Implementering: Brug funktionen for batchhandlinger til at sende flere oprettelses- eller opdateringsanmodninger på én gang. Disse handlinger udføres sekventielt i den rækkefølge, der er angivet i batchanmodningen. Svarenes rækkefølge svarer til rækkefølgen af anmodningerne i batchhandlingen.
    • Fordele: Reducerer antallet af individuelle anmodninger, der sendes til datakilden, hvilket minimerer ventetiden og forbedrer ydeevnen.

    Skærmbillede, der demonstrerer brug af SharePoint API til at udføre en batchanmodning.

  2. Parallelitet i For hver løkke

    • Beskrivelse: Aktivér parallel behandling i For hver-løkken for at håndtere flere poster samtidigt.
    • Implementering: Konfigurer For hver-løkken til at behandle op til 50 poster parallelt. Denne fremgangsmåde er nyttig for tjenester, der ikke understøtter batchhandlinger.
    • Fordele: Reducerer den samlede behandlingstid betydeligt ved at håndtere flere poster på samme tid.

Du kan finde oplysninger om batchanmodninger i følgende REST API-dokumentation:

Brug massehandlinger i Dataverse

Når du arbejder med Dataverse, kan du bruge web-API'er til massehandlinger til at reducere antallet af handlinger, der kræves, strømline processerne og forbedre ydeevnen.

Web-API'er til massehandlinger giver en klar fordel i forhold til batchhandlinger. Sådan adskiller de sig:

  • Batchhandlinger: Selvom batchhandlinger bogføres i en enkelt anmodning, udføres de som flere individuelle handlinger. Hver handling i batchen behandles separat.
  • Massehandlinger: I modsætning hertil bogføres og udføres massehandlinger som en enkelt handling. Hele masseanmodningen tælles som én handling, hvilket kan reducere antallet af handlinger betydeligt og forbedre effektiviteten.

Sådan aktiverer du massehandlinger:

  • Brug HTTP med Microsoft Entra id: Du kan aktivere web-API'en til massehandlinger ved hjælp af HTTP-anmodninger, der er godkendt med Microsoft Entra id.
  • Brug HTTP-connectoren med tjenesteprincipaler: Du kan også bruge HTTP-connectoren Power Automate , når du arbejder med tjenesteprincipaler, til at aktivere disse API'er.

I dette eksempel forbereder vi posterne i JSON-format ved hjælp af handlingen Vælg:

Skærmbillede af brug af en Vælg-handling til at forberede indholdet til masseanmodningen.

Derefter bruger vi HTTP med Microsoft Entra id til at sende anmodningen ved hjælp af CreateMultiple Web-API:

Skærmbillede af aktivering af en HTTP-anmodning om at udføre en massehandling.

Hvis du har 100 poster i JSON-outputtet, omfatter denne fremgangsmåde kun én enkelt handling i stedet for 100 Opret række-handlinger i Dataverse.