Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Gli anti-pattern sono pratiche che sembrano vantaggiose ma portano a problemi di prestazioni, inefficienze delle risorse e potenziali errori nei flussi di lavoro. Comprendendo ed evitando questi anti-pattern, è possibile ottimizzare i flussi cloud per migliorare le prestazioni e l'affidabilità.
Evitare i cicli For each nidificati
I cicli For each annidati possono essere operazioni a elevato utilizzo di risorse nei flussi cloud e influire sulle prestazioni e sul consumo di risorse.
- Tempo di esecuzione: i cicli nidificati possono moltiplicare rapidamente il numero totale di iterazioni. Ad esempio, se hai due cicli, ciascuno con 10 iterazioni, il numero totale di iterazioni diventa 10 x 10 = 100. Questo aumento esponenziale può prolungare il tempo di esecuzione del flusso, soprattutto se ogni iterazione elabora set di dati di grandi dimensioni o esegue operazioni complesse.
- Limiti e quote: Power Automate applica limiti e quote, ad esempio il numero massimo di iterazioni consentite all'interno di un ciclo e il tempo di esecuzione complessivo. I cicli annidati possono avvicinarsi rapidamente a questi limiti, causando errori di flusso o limitazione, in particolare quando si tratta di set di dati di grandi dimensioni o di esecuzioni frequenti.
- Impatto sulle prestazioni: ogni iterazione all'interno di un ciclo nidificato consuma potenza di elaborazione e memoria. Con l'aumentare del numero di iterazioni, aumenta la richiesta di risorse di sistema, rallentando potenzialmente l'intero flusso.
Altre informazioni: Limiti di concorrenza, ciclo e debatch
A seconda dello scenario, puoi evitare i cicli nidificati elaborando i record correlati da una tabella padre. Tenere presente quanto segue:
Scenario: un ciclo esterno utilizza l'azione Elenca righe per recuperare un elenco di categorie di prodotti dalla tabella ProductCategory in cui la colonna IsPromotion è impostata su true. Un ciclo interno elabora quindi i record correlati dalla tabella Product per ogni categoria recuperata dal ciclo esterno.
Approccio alternativo: utilizza l'espansione delle query OData per semplificare questo processo. Questo metodo consente di usare un singolo ciclo Per ciascuno, riducendo il numero totale di richieste a Dataverse a una sola chiamata RetrieveMultiple.
Per implementare l'espansione delle query OData:
- Utilizzare il parametro Espandi query per specificare il nome della colonna di ricerca che collega la tabella ProductCategory alla tabella Product. Questo approccio recupera i record correlati in una singola query. Ad esempio, imposta il parametro Espandi query su
Products($select=ProductName,Price). - Utilizza il parametro $select per limitare le colonne restituite dalla tabella correlata.
- Recupera ed elabora i record pertinenti applicando le condizioni direttamente alle colonne della tabella di ricerca utilizzando il parametro Filtra righe. Ad esempio, imposta il parametro Filtra righe su
IsPromotion eq true.
Evitare cicli infiniti
Con Power Automate, i flussi possono essere attivati all'infinito, ad esempio quando il flusso aggiorna la stessa tabella che lo ha attivato.
Power Automate ti avvisa quando viene salvato un flusso che potrebbe causare un ciclo di trigger infinito.
Per evitare cicli infiniti:
- Usa condizioni di trigger: le condizioni di trigger assicurano che il flusso venga eseguito solo quando vengono soddisfatti criteri specifici, evitando esecuzioni non necessarie. Implementa le condizioni di trigger aggiungendo una condizione al trigger per verificare la presenza di determinati valori o stati prima che il flusso proceda. Ad esempio, se il flusso aggiorna un campo di stato, puoi impostare una condizione di trigger per eseguire il flusso solo se lo stato non è già impostato sul valore desiderato.
- Termina il flusso: un approccio alternativo consiste nell'interrompere il proseguimento del flusso se viene rilevata una condizione che potrebbe causare un ciclo infinito. Termina il flusso quando viene soddisfatta una condizione specifica usando l'azione Termina. Questo approccio può essere usato come protezione per evitare ulteriori azioni se il flusso sta per entrare in un ciclo infinito. Ad esempio, se il flusso rileva di aver già elaborato un record, può terminare automaticamente per evitare la rielaborazione.
Evitare un numero elevato di operazioni di trasformazione dei dati
Quando usi trasformazioni di dati su larga scala, prendi in considerazione l'uso di un processo ETL (Extract, Transform, Load). Ad esempio, invece di usare un flusso cloud Power Automate per leggere i dati da un foglio di calcolo Excel di grandi dimensioni, esegui la formattazione o la convalida dei dati e quindi scrivi i dati in Dataverse. Potrebbe essere più appropriato usare flussi di dati Power Platform o un altro strumento ETL.
I flussi di dati gestiscono grandi volumi di dati in modo efficiente e offrono prestazioni migliori per le attività ETL rispetto ai flussi cloud. Gli strumenti ETL offrono funzionalità specializzate per la trasformazione, la convalida e il caricamento dei dati, che possono semplificare attività complesse di elaborazione dei dati.
Per gestire il carico di dati con la logica di orchestrazione nei flussi cloud, combina i flussi cloud con i flussi di dati. In tal caso, eseguire la procedura seguente:
Richiama aggiornamento flussi di dati
- Azione: usa il connettore del flusso di dati in Power Automate per attivare un'azione di aggiornamento e avviare il processo ETL definito nel flusso di dati.
- Esempio: configura un flusso cloud che attivi l'aggiornamento del flusso di dati in base a una pianificazione (ad esempio giornaliera) o a un evento (ad esempio, quando un nuovo file viene caricato in una cartella SharePoint).
Azioni post ETL
- Trigger: usa il trigger Quando viene completato un aggiornamento del flusso di dati in Power Automate per eseguire azioni al termine del processo ETL.
- Esempio: al termine del flusso di dati, utilizza un flusso cloud per inviare notifiche, aggiornare record o elaborare dati.
Evitare di usare il ciclo For each per aggiornare un numero elevato di record
Gli utenti spesso devono creare o aggiornare migliaia di record in un'origine dati quando viene attivato un flusso in Power Automate. Molti utenti usano un ciclo For each per elaborare ogni record in sequenza, causando latenza e ritardi.
Per migliorare le prestazioni, prova questi due approcci:
Operazioni in batch
- Descrizione: crea o aggiorna i record in batch. Molti connettori e servizi forniscono endpoint API che supportano le richieste batch. Questo approccio consente di raggruppare più operazioni in un'unica richiesta HTTP.
- Implementazione: utilizza la funzionalità di operazione in batch per inviare più richieste di creazione o aggiornamento contemporaneamente. Queste operazioni vengono eseguite in sequenza nell'ordine specificato nella richiesta batch. L'ordine delle risposte corrisponde all'ordine delle richieste nell'operazione batch.
- Vantaggi: riduce il numero di singole richieste inviate all'origine dati, riducendo al minimo la latenza e migliorando le prestazioni.
Parallelismo nel ciclo Per ciascuno
- Descrizione: abilita l'elaborazione parallela all'interno del ciclo Per ciascuno per gestire più record contemporaneamente.
- Implementazione: configura il ciclo Per ciascuno per elaborare fino a 50 record in parallelo. Questo approccio è utile per i servizi che non supportano le operazioni batch.
- Vantaggi: riduce significativamente il tempo di elaborazione complessivo gestendo più record contemporaneamente.
Per informazioni su come effettuare richieste batch, vedi la seguente documentazione dell'API REST:
Utilizzare le operazioni in blocco in Dataverse
Quando usi Dataverse, usa le API Web delle operazioni in blocco per ridurre il numero di azioni richieste, semplificare i processi e migliorare le prestazioni.
Le API Web delle operazioni in blocco offrono un netto vantaggio rispetto alle operazioni in batch. Ecco come differiscono:
- Operazioni in batch: sebbene le operazioni in batch vengano pubblicate in una singola richiesta, vengono eseguite come più operazioni singole. Ogni operazione all'interno del batch viene elaborata separatamente.
- Operazioni in blocco: al contrario, le operazioni in blocco vengono registrate ed eseguite come un'unica operazione. L'intera richiesta in blocco viene conteggiata come un'unica operazione, il che può ridurre significativamente il numero di azioni e migliorare l'efficienza.
Per invocare le operazioni in blocco:
- Usa HTTP con Microsoft Entra ID: puoi richiamare l'API Web delle operazioni in blocco utilizzando richieste HTTP autenticate con Microsoft Entra ID.
- Usa il connettore HTTP con le entità servizio: in alternativa, è possibile usare il connettore HTTP in Power Automate quando si lavora con le entità servizio per richiamare queste API.
In questo esempio, prepariamo i record in formato JSON usando l'azione Seleziona:
Quindi, usiamo HTTP con Microsoft Entra ID per inviare la richiesta usando l'API Web CreateMultiple:
Se hai 100 record nell'output JSON, questo approccio comporta solo una singola azione anziché 100 azioni Crea riga in Dataverse.