Unikanie antywzorców

Antywzorce to praktyki, które wydają się korzystne, ale prowadzą do problemów z wydajnością, nieefektywności zasobów i potencjalnych awarii w przepływach pracy. Rozumiejąc i unikając tych antywzorców, można zoptymalizować przepływy w chmurze w celu uzyskania lepszej wydajności i niezawodności.

Unikaj zagnieżdżania pętli Dla każdego

Zagnieżdżone pętle Dla każdego mogą być operacjami intensywnie korzystającymi z zasobów w przepływach w chmurze i wpływać na wydajność oraz zużycie zasobów.

  • Czas wykonywania: Zagnieżdżone pętle mogą szybko zwielokrotnić całkowitą liczbę iteracji. Na przykład, jeśli masz dwie pętle, każda z 10 iteracjami, całkowita liczba iteracji wynosi 10 x 10 = 100. Ten wykładniczy wzrost może wydłużyć czas wykonywania przepływu, zwłaszcza jeśli każda iteracja przetwarza duże zestawy danych lub wykonuje złożone operacje.
  • Limity i przydziały: Power Automate wymusza limity i przydziały, takie jak maksymalna dozwolona liczba iteracji w pętli i ogólny czas wykonywania. Zagnieżdżone pętle mogą szybko zbliżyć się do tych limitów, co prowadzi do awarii przepływu lub ograniczania przepustowości, szczególnie w przypadku dużych zestawów danych lub częstych wykonań.
  • Wpływ na wydajność: każda iteracja w zagnieżdżonej pętli zużywa moc obliczeniową i pamięć. Wraz ze wzrostem liczby iteracji wzrasta zapotrzebowanie na zasoby systemowe, potencjalnie spowalniając cały przepływ.

Więcej informacji: Współbieżność, limity pętli i dzielenia partii na elementy

W zależności od scenariusza można uniknąć pętli zagnieżdżonych, przetwarzając powiązane rekordy z tabeli nadrzędnej. Zaleca się uwzględnić następujące elementy:

  • Scenariusz: Pętla zewnętrzna używa akcji Wyświetl wiersze w celu pobrania listy kategorii produktów z tabeli ProductCategory, w której kolumna IsPromotion ma wartość true. Następnie pętla wewnętrzna przetwarza powiązane rekordy z tabeli Product dla każdej kategorii pobranej przez pętlę zewnętrzną.

  • Alternatywne podejście: Użyj rozszerzenia zapytań OData, aby usprawnić ten proces. Ta metoda umożliwia pracę z pojedynczą pętlą For each, zmniejszając łączną liczbę żądań do Dataverse tylko jednego wywołania RetrieveMultiple .

Aby zaimplementować rozszerzanie zapytań OData:

  • Użyj parametru Expand Query , aby określić nazwę kolumny wyszukiwania, która łączy tabelę ProductCategory z tabelą Product. Takie podejście powoduje pobranie powiązanych rekordów w ramach jednego zapytania. Na przykład ustaw parametr Expand Query na Products($select=ProductName,Price).
  • Użyj parametru $select do ograniczania kolumn zwracanych z powiązanej tabeli.
  • Pobieraj i przetwarzaj odpowiednie rekordy, stosując warunki bezpośrednio w kolumnach tabeli odnośników przy użyciu parametru Filtruj wiersze . Na przykład ustaw parametr Filtruj wiersze na IsPromotion eq true.

Zrzut ekranu przedstawiający użycie parametru Rozwiń zapytanie i Filtruj wiersze w celu zaimplementowania rozszerzenia zapytania OData.

Unikaj nieskończonych pętli

Przepływy Power Automate mogą być wyzwalane w nieskończoność, na przykład gdy przepływ aktualizuje tę samą tabelę, która go wyzwala.

Po zapisaniu przepływu, który może spowodować nieskończoną pętlę wyzwalania, Power Automate ostrzega Cię.

Zrzut ekranu przedstawiający ostrzeżenie otrzymywane przez twórcę podczas próby zapisania przepływu, co może spowodować nieskończoną pętlę.

Unikaj nieskończonych pętli:

  • Użyj warunków wyzwalania: Warunki wyzwalania zapewniają, że przepływ jest uruchamiany tylko wtedy, gdy zostaną spełnione określone kryteria, co zapobiega niepotrzebnym wykonaniom. Zaimplementuj warunki wyzwalacza, dodając warunek do wyzwalacza, aby sprawdzić określone wartości lub stany przed kontynuowaniem przepływu. Jeśli na przykład przepływ aktualizuje pole stanu, możesz ustawić warunek wyzwalacza, aby przepływ był uruchamiany tylko wtedy, gdy stan nie został jeszcze ustawiony na żądaną wartość.
  • Zakończ przepływ: Alternatywnym podejściem jest zatrzymanie kontynuowania przepływu, jeśli wykryje warunek, który spowodowałby nieskończoną pętlę. Zakończ przepływ po spełnieniu określonego warunku przy użyciu akcji Zakończ. Takie podejście może służyć jako zabezpieczenie, aby zapobiec dalszym działaniom, jeśli przepływ ma wejść do nieskończonej pętli. Jeśli na przykład przepływ wykryje, że rekord został już przetworzony, może zakończyć swoje działanie, aby uniknąć ponownego przetwarzania.

Unikanie dużej liczby operacji przekształcania danych

Podczas pracy z przekształceniami danych na dużą skalę rozważ użycie procesu wyodrębniania, przekształcania i ładowania (ETL). Na przykład zamiast używać przepływu w Power Automate chmurze do odczytywania danych z dużego arkusza kalkulacyjnego programu Excel, wykonaj formatowanie lub walidację danych, a następnie wprowadź dane do Dataverse. Bardziej odpowiednie może być użycie Power Platform przepływów danych lub innego narzędzia ETL.

Przepływy danych efektywnie obsługują duże ilości danych i zapewniają lepszą wydajność zadań ETL niż przepływy w chmurze. Narzędzia ETL oferują wyspecjalizowane funkcje transformacji, walidacji i ładowania danych, które mogą uprościć złożone zadania przetwarzania danych.

Aby zarządzać ładowaniem danych za pomocą logiki aranżacji w przepływach w chmurze, połącz przepływy w chmurze z przepływami danych. Oto jak to zrobić:

  1. Odświeżanie przepływów danych

    • Akcja: użyj łącznika przepływu danych w Power Automate , aby wyzwolić akcję odświeżania i zainicjować proces ETL zdefiniowany w przepływie danych.
    • Przykład: Skonfiguruj przepływ w chmurze, który wyzwala odświeżanie przepływu danych na podstawie harmonogramu (na przykład codziennie) lub zdarzenia (na przykład po przekazaniu nowego pliku do folderu SharePoint ).
  2. Akcje po ETL

    • Wyzwalacz: użyj wyzwalacza Po zakończeniu odświeżania Power Automate przepływu danych, aby wykonać akcje po zakończeniu procesu ETL.
    • Przykład: Po zakończeniu przepływu danych użyj przepływu w chmurze, aby wysyłać powiadomienia, aktualizować rekordy lub wykonywać przetwarzanie danych.

Zrzut ekranu przedstawiający użycie akcji przepływu danych w przepływie w chmurze.

Unikaj używania pętli Dla każdego do aktualizowania dużej liczby rekordów

Użytkownicy często muszą tworzyć lub aktualizować tysiące rekordów w źródle danych po wyzwoleniu Power Automate przepływu. Wielu użytkowników używa pętli Dla każdego do sekwencyjnego przetwarzania każdego rekordu, co powoduje opóźnienia i zwłok.

Aby poprawić wydajność, wypróbuj następujące dwa podejścia:

  1. Operacje wsadowe

    • Opis: Tworzenie lub aktualizowanie rekordów w wsadach. Wiele łączników i usług udostępnia punkty końcowe interfejsu API, które obsługują żądania wsadowe. Takie podejście umożliwia grupowanie wielu operacji w jednym żądaniu HTTP.
    • Implementacja: Użyj funkcji operacji wsadowej, aby wysłać wiele żądań utworzenia lub aktualizacji jednocześnie. Te operacje są wykonywane sekwencyjnie w kolejności określonej w żądaniu wsadowym. Kolejność odpowiedzi jest zgodna z kolejnością żądań w operacji wsadowej.
    • Korzyści: Zmniejsza liczbę pojedynczych żądań wysyłanych do źródła danych, minimalizując opóźnienia i poprawiając wydajność.

    Zrzut ekranu przedstawiający SharePoint użycie interfejsu API do wykonania żądania wsadowego.

  2. Równoległość w pętli Dla każdego

    • Opis: Włącz przetwarzanie równoległe w pętli Dla każdego , aby obsługiwać wiele rekordów jednocześnie.
    • Implementacja: Skonfiguruj pętlę Dla każdego tak, aby przetwarzała do 50 rekordów równolegle. Takie podejście jest przydatne w przypadku usług, które nie obsługują operacji wsadowych.
    • Korzyści: Znacznie skraca całkowity czas przetwarzania dzięki jednoczesnej obsłudze wielu rekordów.

Aby uzyskać informacje na temat wykonywania żądań wsadowych, zapoznaj się z następującą dokumentacją interfejsu API REST:

Użyj operacji zbiorczych w Dataverse

Podczas pracy z Dataverse można używać internetowych interfejsów API operacji zbiorczych w celu zmniejszenia liczby wymaganych akcji, usprawnienia procesów i zwiększenia wydajności.

Internetowe interfejsy API operacji zbiorczych oferują wyraźną przewagę nad operacjami wsadowymi. Oto, czym się różnią:

  • Operacje wsadowe: Mimo że operacje wsadowe są księgowane w jednym żądaniu, są wykonywane jako wiele pojedynczych operacji. Każda operacja w ramach operacji wsadowych jest przetwarzana oddzielnie.
  • Operacje zbiorcze: Z kolei operacje zbiorcze są księgowane i wykonywane jako pojedyncza operacja. Całe żądanie zbiorcze jest liczone jako jedna operacja, co może znacznie zmniejszyć liczbę akcji i poprawić wydajność.

Aby wywołać operacje zbiorcze:

  • Użyj protokołu HTTP z identyfikatorem Microsoft Entra : Internetowy interfejs API operacji zbiorczych można wywołać przy użyciu żądań HTTP uwierzytelnionych przy użyciu Microsoft Entra identyfikatora.
  • Użyj łącznika HTTP z głównymi usługami: alternatywnie możesz użyć łącznika HTTP podczas Power Automate pracy z głównymi usługami, aby wywołać te interfejsy API.

W tym przykładzie przygotowujemy rekordy w formacie JSON przy użyciu akcji Wybierz :

Zrzut ekranu przedstawiający użycie akcji Wybierz w celu przygotowania zawartości do żądania zbiorczego.

Następnie użyjemy protokołu HTTP z identyfikatorem Microsoft Entra , aby opublikować żądanie przy użyciu internetowego interfejsu API CreateMany:

Zrzut ekranu przedstawiający wywołanie żądania HTTP w celu wykonania operacji zbiorczej.

Jeśli masz 100 rekordów w danych wyjściowych JSON, takie podejście wiąże się tylko z jedną akcją zamiast 100 akcji Utwórz wiersz w Dataverse.