Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Antimuster sind Praktiken, die nützlich erscheinen, aber zu Leistungsproblemen, Ressourcenineffizienzen und potenziellen Fehlern in Ihren Workflows führen. Indem Sie diese Antimuster verstehen und vermeiden, optimieren Sie Ihre Cloud-Flows für eine bessere Leistung und Zuverlässigkeit.
Verschachtelte For-Each-Schleifen vermeiden
Geschachtelte For-Each-Schleifen können ressourcenintensive Vorgänge in Cloud-Flows sein und sich auf die Leistung und den Ressourcenverbrauch auswirken.
- Ausführungszeit: Durch verschachtelte Schleifen kann sich die Gesamtzahl der Iterationen schnell vervielfachen. Wenn Sie beispielsweise zwei Schleifen mit jeweils 10 Iterationen haben, beträgt die Gesamtzahl der Iterationen 10 x 10 = 100. Dieser exponenzielle Anstieg kann die Ausführungszeit Ihres Flows verlängern, insbesondere wenn jede Iteration große Datasets verarbeitet oder komplexe Vorgänge ausführt.
- Grenzwerte und Kontingente: Power Automate erzwingt Grenzwerte und Kontingente, z. B. die maximal zulässige Anzahl an Iterationen in einer Schleife und die Gesamtausführungszeit. Verschachtelte Schleifen können sich schnell diesen Grenzwerten nähern, was zu Flowfehlern oder Drosselung führt, insbesondere beim Umgang mit großen Datasets oder häufigen Ausführungen.
- Leistungseinbußen: Jede Iteration in einer verschachtelten Schleife verbraucht Rechenleistung und Arbeitsspeicher. Mit zunehmender Anzahl von Iterationen steigt die Anforderung an die Systemressourcen, was möglicherweise den gesamten Ablauf verlangsamt.
Weitere Informationen: Grenzwerte für Parallelität, Schleifen und Aufteilungen
Je nach Szenario können Sie verschachtelte Schleifen vermeiden, indem Sie zugehörige Datensätze aus einer übergeordneten Tabelle verarbeiten. Beachten Sie Folgendes:
Szenario: Eine äußere Schleife verwendet die Aktion Zeilen auflisten, um eine Liste von Produktkategorien aus der Tabelle ProductCategory abzurufen, in der die Spalte IsPromotion auf „true“ steht. Eine innere Schleife verarbeitet dann zugehörige Datensätze aus der Tabelle Produkt für jede Kategorie, die von der äußeren Schleife abgerufen wird.
Alternativer Ansatz: Optimieren Sie diesen Prozess mithilfe der OData-Abfrageerweiterung. Mit dieser Methode können Sie mit einer einzelnen For-each-Schleife arbeiten, was die Gesamtzahl der Anforderungen an Dataverse auf nur einen RetrieveMultiple-Aufruf reduziert.
So implementieren Sie die OData-Abfrageerweiterung:
- Verwenden Sie den Parameter Abfrage erweitern, um den Namen der Suchspalte anzugeben, welche die Tabelle ProductCategory mit der Tabelle Produkt verknüpft. Bei diesem Ansatz werden verknüpfte Datensätze in einer einzelnen Abfrage abgerufen. Legen Sie z. B. den Parameter „Abfrage erweitern“ auf
Products($select=ProductName,Price)fest. - Verwenden Sie den Parameter $select, um die Spalten einzuschränken, die von der zugehörigen Tabelle zurückgegeben werden.
- Wenden Sie für den Abruf und die Verarbeitung relevanter Datensätze die Bedingungen mithilfe des Parameters Zeilen filtern direkt auf die Spalten der Suchtabelle an. Legen Sie z. B. den Parameter Zeilen filtern auf
IsPromotion eq truefest.
Vermeiden Sie Endlosschleifen
Mit Power Automate können Flows unendlich oft ausgelöst werden, z. B. wenn der Flow dieselbe Tabelle aktualisiert, die ihn auslöst.
Wenn Sie einen Flow speichern, der zu einer unendlichen Triggerschleife führen können, erhalten Sie von Power Automate eine Warnung.
So verhindern Sie Endlosschleifen:
- Verwenden Sie Triggerbedingungen: Triggerbedingungen stellen sicher, dass der Flow nur ausgeführt wird, wenn bestimmte Kriterien erfüllt sind, und verhindern so, dass er unnötig ausgeführt wird. Implementieren Sie Triggerbedingungen, indem Sie dem Trigger eine Bedingung hinzufügen, um bestimmte Werte oder Zustände zu überprüfen, bevor der Flow fortgesetzt wird. Wenn Ihr Flow beispielsweise ein Statusfeld aktualisiert, können Sie eine Triggerbedingung festlegen, um den Flow nur dann auszuführen, wenn der Status noch nicht auf den gewünschten Wert festgelegt ist.
- Beenden Sie den Flow: Alternativ können Sie die Fortsetzung des Flows stoppen, wenn eine Bedingung erkannt wird, die eine Endlosschleife verursachen würde. Beenden Sie den Flow, wenn eine bestimmte Bedingung erfüllt ist, mithilfe der Aktion Beenden. Dieser Ansatz kann als Schutzmaßnahme verwendet werden, um weitere Aktionen zu verhindern, wenn der Flow kurz davor steht, in eine Endlosschleife einzutreten. Wenn der Flow beispielsweise erkennt, dass er bereits einen Datensatz verarbeitet hat, kann er sich selbst beenden, um eine erneute Verarbeitung zu vermeiden.
Vermeiden Sie eine große Anzahl von Datentransformationsvorgängen
Wenn Sie mit umfangreichen Datentransformationen arbeiten, sollten Sie die Verwendung eines ETL-Prozesses (Extrahieren, Transformieren, Laden) in Betracht ziehen. Anstatt beispielsweise einen Power Automate-Cloud-Flow zum Lesen von Daten aus einer großen Excel-Tabelle zu verwenden, führen Sie Datenformatierungen oder -prüfungen durch und schreiben die Daten dann in Dataverse. Es kann sinnvoller sein, Power Platform-Dataflows oder ein anderes ETL-Tool zu verwenden.
Dataflows verarbeiten große Datenmengen effizient und bieten eine bessere Leistung für ETL-Aufgaben als Cloud-Flows. ETL-Tools bieten spezielle Funktionen für die Datentransformation, -validierung und -Ladung, die komplexe Datenverarbeitungsaufgaben vereinfachen können.
Um die Datenlast mit Orchestrierungslogik in Cloud-Flows zu verwalten, kombinieren Sie Cloud-Flows mit Dataflows. Führen Sie dazu die folgenden Schritte aus:
Dataflowaktualisierung aufrufen
- Aktion: Verwenden Sie den Dataflow-Connector in Power Automate, um eine Aktualisierungsaktion auszulösen und den in Ihrem Dataflow festgelegten ETL-Prozess zu initiieren.
- Beispiel: Richten Sie einen Cloud-Flow ein, der die Dataflowaktualisierung basierend auf einem Zeitplan (z. B. täglich) oder einem Ereignis (z. B. beim Hochladen einer neuen Datei in einen SharePoint-Ordner) auslöst.
ETL-Aktionen veröffentlichen
- Trigger: Verwenden Sie den Trigger Wenn eine Dataflowaktualisierung abgeschlossen ist in Power Automate, um nach Abschluss des ETL-Prozesses Aktionen durchzuführen.
- Beispiel: Verwenden Sie nach Abschluss des Dataflows einen Cloud-Flow, um Benachrichtigungen zu senden, Datensätze zu aktualisieren oder eine Datenverarbeitung durchzuführen.
Vermeiden Sie die Verwendung von For each-Schleifen, um eine große Anzahl von Datensätzen zu aktualisieren
Benutzende müssen häufig Tausende von Datensätzen in einer Datenquelle erstellen oder aktualisieren, wenn ein Flow in Power Automate ausgelöst wird. Viele Benutzer verwenden eine For Each-Schleife, um jeden Datensatz sequenziell zu verarbeiten, was zu Latenz und Verzögerungen führt.
Versuchen Sie diese beiden Ansätze, um die Leistung zu verbessern:
Batchvorgänge
- Beschreibung: Datensätze werden in Batches erstellt oder aktualisiert. Viele Konnektoren und Dienste stellen API-Endpunkte bereit, die Batchanforderungen unterstützen. Dieser Ansatz ermöglicht es Ihnen, mehrere Vorgänge in einer einzigen HTTP-Anforderung zu gruppieren.
- Implementierung: Verwenden Sie das Batchvorgangs-Feature, um mehrere Erstellungs- oder Aktualisierungsanforderungen gleichzeitig zu senden. Diese Vorgänge werden nacheinander in der in der Batchanforderung angegebenen Reihenfolge ausgeführt. Die Reihenfolge der Antworten entspricht der Reihenfolge der Anforderungen im Batchvorgang.
- Vorteile: Reduziert die Anzahl der einzelnen Anforderungen, die an die Datenquelle gesendet werden, minimiert die Latenz und verbessert die Leistung.
Parallelität in For-Each-Schleifen
- Beschreibung: Aktivieren Sie die parallele Verarbeitung innerhalb der For-Each-Schleife, um mehrere Datensätze gleichzeitig verarbeiten zu können.
- Implementierung: Konfigurieren Sie die For-Each-Schleife so, dass bis zu 50 Datensätze parallel verarbeitet werden. Dieser Ansatz ist nützlich für Dienste, die keine Batchvorgänge unterstützen.
- Vorteile: Verarbeitet mehrere Datensätze gleichzeitig und reduziert somit die Gesamtverarbeitungszeit erheblich.
Informationen zum Erstellen von Batchanforderungen finden Sie in der folgenden REST-API-Dokumentation:
Bulkvorgänge in Dataverse verwenden
Verwenden Sie bei der Arbeit mit Dataverse die Massenvorgangs-Web-APIs, um die Anzahl der erforderlichen Aktionen zu reduzieren, Prozesse zu rationalisieren und die Leistung zu verbessern.
Web-APIs für Massenvorgänge bieten einen entscheidenden Vorteil gegenüber Batchvorgängen. Sie unterscheiden sich folgendermaßen:
- Batchvorgänge: Obwohl Batchvorgänge in einer einzelnen Anforderung bereitgestellt werden, werden sie als mehrere einzelne Vorgänge ausgeführt. Jeder Vorgang innerhalb des Batchs wird separat verarbeitet.
- Massenvorgänge: Im Gegensatz dazu werden Massenvorgänge als ein einzelner Vorgang bereitgestellt und ausgeführt. Die gesamte Massenanforderung wird als ein Vorgang gezählt, wodurch die Anzahl der Aktionen erheblich reduziert und die Effizienz verbessert werden kann.
So rufen Sie Massenvorgänge auf:
- Verwenden Sie HTTP mit Microsoft Entra ID: Sie können die Massenvorgangs-Web-API mithilfe von HTTP-Anforderungen aufrufen, die mit Microsoft Entra ID authentifiziert werden.
- Verwenden Sie den HTTP-Connector mit Dienstprinzipalen: Alternativ können Sie den HTTP-Connector in Power Automate verwenden, wenn Sie mit Dienstprinzipalen arbeiten, um diese APIs aufzurufen.
In diesem Beispiel bereiten wir die Datensätze im JSON-Format mithilfe der Aktion Auswählen vor:
Anschließend verwenden wir HTTP mit Microsoft Entra ID, um die Anforderung mithilfe der CreateMultiple-Web-API bereitzustellen:
Wenn die JSON-Ausgabe 100 Datensätze enthält, führt dieser Ansatz nur zu einer einzigen Aktion und nicht zu 100 „Zeile erstellen“-Aktionen in Dataverse.