Microsoft Power Automate Flow parallelisieren
Einführung
In diesem "Quick Tipp" geht es um die Gegenüberstellung von seriellen und parallelen Flows, darum wie man einen Flow parallelisiert und darum welche Geschwindigkeitsvorteile parallele Flows bieten.
Überblick der Problematik serieller Flows in Power Automate
Wenn man in Power Automate Flows anlegt, hat man häufig mit Schleifen zu tun (for-each-loop). Standardmäßig wird so eine Schleifenschritt in Power Automate seriell ausgeführt, also immer eine Schleife nach der anderen. Dies ist die sichere Einstellung, weil sie ohne Seiteneffekte ausgeführt werden kann. Allerdings ist diese Variante deshalb auch sehr langsam.
In meinem Beispiel-Flow Serieller Flow verwende ich 1041 Datensätze von Ortsnamen und Postleitzahlen. Die Datensätze werden seriell durchlaufen. Bei jedem Datensatz wird überprüft, ob der Ortsname das Präfix "Bad " enthält. Falls die Bedingung zutrifft, wird der Datensatz zur Auswahl hinzugefügt. Vor Eintritt in die Schleife und nach Verlassen der Schleife wird die Zeit gemessen. Am Ende des Flows wird die Dauer berechnet und angezeigt und zur Kontrolle wird auch die Auswahl angezeigt.
Der serielle Flow benötigt 2:14 Minuten um alle 1041 Datensätze zu verarbeiten. Wie läßt sich der Flow beschleunigen?
Lösungsansatz: Flow parallelisieren
Power Automate bietet mit der Gleichzeitigkeitssteuerung die Möglichkeit, ausgewählte Schritte eines Flows zu parallelisieren. Diese Einstellung wird pro Schritt vorgenommen, sie bezieht sich also nicht auf den kompletten Flow!
Bevor ausgewählte Schritte eines Flows parallelisiert werden, muss man sich Gedanken über den Prozessablauf machen. Dabei kann es unter Umständen erforderlich sein, den Gesamtprozess in unabhängige Unterprozesse zu untergliedern.
In unserem Beispiel-Flow sieht man, dass der Schritt Auf alle Datensätze anwenden am meisten Zeit benötigt. In diesem Schritt werden alle Datensätze einzeln auf eine bestimmte Bedingung hin überprüft. Falls die Bedingung erfüllt ist, wird der Datensatz zu einem Array hinzugefügt. Das Hinzufügen eines Datensatzes zu einem Array ist unabhängig von anderen Schritten, so daß der Schritt Auf alle Datensätze anwenden also ohne Bedenken parallelisiert werden kann.
Um in Power Automate einen Schritt zu parallelisieren muss man in den Einstellungen des Schritts die Gleichzeitigkeitssteuerung aktivieren.
In den Schritt-Einstellungen kann dann die Gleichzeitigkeitssteuerung aktiviert werden.
Der parallelisierte Flow sieht identisch aus, es gibt leider keinen Indikator, der dem Benutzer anzeigt, ob es sich um einen seriell oder parallel ausgeführten Schritt handelt.
Der serielle Flow benötigt 13 Sekunden um alle 1041 Datensätze zu verarbeiten. Durch die Parallelisierung des Flows haben wir also eine Geschwindigkeitszunahme um 1031% erreicht!
Fazit zum Parallelisieren von Flows in Power Automate
Über Parallelisierung von Flows nachzudenken ist auf jeden Fall sinnvoll! Durch Parallelisierung lassen sich unter Umständen große Geschwindigkeitsverbesserungen realisieren. Die nachträgliche Umstellung eines bestehenden Flows von serieller zu paralleler Verarbeitung kann aber auch bedeuten, dass der gesamte Flow neu angeordnet werden muss. Je nach weiteren Randbedingungen kann sich dieser erhöhte Aufwand schnell lohnen.