Filter Array et Select au lieu d'Apply to Each dans Power Automate
Filter Array et Select remplacent Apply to Each pour filtrer et remodeler des tableaux, avec des performances nettement meilleures.
Lorsqu'un flux cloud doit parcourir un tableau, beaucoup se tournent automatiquement vers l'action Apply to Each. Pour les cas simples, c'est tout à fait correct, mais dès qu'il s'agit seulement de filtrer un tableau ou de modifier la forme de ses objets, il vaut la peine de regarder du côté de deux alternatives de la catégorie Opérations de données : Filter Array et Select. Les deux accomplissent exactement cette tâche en une seule étape, sans que le flux doive parcourir chaque élément individuellement.
Cet article montre comment fonctionnent ces deux actions, où elles remplacent utilement Apply to Each et où une boucle reste malgré tout le bon choix. Pour les limites d'Apply to Each lui-même, par exemple avec de très grands tableaux et les limites d'actions de Power Automate, tu trouveras plus d'informations dans l'article sur les limites d'actions Power Automate.
Pourquoi Apply to Each est souvent un détour pour filtrer et remodeler
Apply to Each exécute les actions qu'elle contient pour chaque élément d'un tableau. Avec 200 commandes et deux actions dans le corps de la boucle, cela représente 400 exécutions individuelles, qui comptent toutes dans la limite d'actions de ton flux et sont consignées individuellement dans l'historique du flux. S'il s'agit seulement de filtrer certains éléments ou de renommer des champs, cette charge apparaît sans raison réelle, car c'est exactement à cela que servent les Opérations de données. Microsoft le décrit ainsi dans son propre guide : envisage d'utiliser une opération de filtre ou de sélection au lieu d'une condition dans une boucle pour trouver des éléments dans un tableau qui répondent à certains critères, cette approche peut simplifier le flux cloud et améliorer les performances, comme indiqué dans la présentation officielle des Opérations de données dans Power Automate. Filter Array et Select s'exécutent chacune comme une seule action, que le tableau contienne cinq ou cinq mille entrées.
L'action Filter Array : constituer un sous-ensemble sans boucle
L'action Filter Array réduit un tableau aux objets qui correspondent à tes critères, selon la documentation officielle sur les Opérations de données. Dans la section Filtrer la requête, tu indiques quel champ doit être comparé à quelle valeur, par exemple Statut est égal à Ouvert, et tu obtiens en résultat un nouveau tableau contenant exactement les entrées correspondantes. Il y a deux choses à savoir à ce sujet :
- L'action peut réduire le nombre d'objets, mais pas modifier la forme des objets individuels. Pour les remodelages, tu as besoin en plus de Select.
- Le texte de comparaison est sensible à la casse : un filtre sur ouvert ne trouvera donc pas d'objet avec la valeur Ouvert.
Pour des comparaisons simples, la vue de base suffit ; pour des conditions combinées avec une logique Et/Ou, tu passes en mode avancé et tu écris l'expression directement.
L'action Select : restructurer les données sans boucle
Alors que Filter Array modifie le nombre d'objets, Select modifie leur forme. Cette action permet de renommer des champs, de créer de nouveaux champs à partir de champs existants, ou d'omettre des champs inutiles, sans que le nombre d'objets du tableau change. Un exemple tiré de la documentation Microsoft : à partir d'objets avec les champs first et last, Select crée un tableau avec FirstName, FamilyName et un champ FullName supplémentaire qui combine les deux valeurs. Le résultat est à nouveau un tableau que tu peux transmettre directement aux actions suivantes, par exemple à une action Create CSV table ou à une action SharePoint. Selon Microsoft, cela réduit non seulement la complexité de ton flux, mais aussi la taille de la charge utile lorsque les données sont ensuite transmises à un autre système.
Exemple pratique : combiner Filter Array et Select
En pratique, les deux actions se suivent presque toujours. Un déroulement typique que tu peux mettre en œuvre sans une seule action Apply to Each :
1. Une action comme Get Items ou un appel HTTP renvoie un tableau contenant toutes les commandes.
2. Filter Array réduit le tableau aux commandes dont le statut est égal à Ouvert.
3. Select remodèle les objets restants : seuls le numéro de commande, le nom du client et le montant sont conservés, avec des noms de champs explicites pour le système cible.
4. Le résultat est transmis directement à une action qui traite plusieurs enregistrements à la fois, par exemple Create CSV table ou une action de traitement par lots du connecteur cible.
Quatre actions au lieu d'une boucle avec potentiellement des centaines d'exécutions, plus un flux qui reste compréhensible en un coup d'œil. Tu gardes ainsi le contrôle sur chaque étape de traitement, car chaque action ne prend en charge qu'une tâche clairement définie.
Où Apply to Each reste malgré tout le bon choix
Filter Array et Select ne remplacent pas une boucle lorsqu'un effet secondaire propre est nécessaire pour chaque élément, par exemple lorsqu'un e-mail doit être envoyé individuellement pour chaque commande, qu'un enregistrement doit être créé dans un système sans point de terminaison par lots, ou qu'un sous-flux doit être appelé. Même lorsque le traitement d'un élément dépend du résultat du précédent, une boucle reste souvent la solution la plus simple. Si tu travailles directement avec Dataverse, il existe même une troisième option : au lieu d'utiliser Filter Array et Select dans le flux, il vaut mieux, selon Microsoft, filtrer et sélectionner les données directement à la source via les options Sélectionner des colonnes et Filtrer les lignes de l'action concernée, ce qui réduit dès le départ le volume de données transféré. La limite exacte pour ta configuration s'évalue mieux au cas par cas, par exemple dans le cadre d'un conseil Power Automate.
Questions fréquentes
Puis-je utiliser Filter Array et Select dans n'importe quel ordre ?
En général, tu filtres d'abord avec Filter Array puis tu remodèles le résultat avec Select, car Select doit alors traiter moins d'objets. Techniquement, l'ordre peut aussi être inversé, mais filtrer d'abord est généralement plus clair et un peu plus économe.
Filter Array et Select comptent-ils aussi dans la limite d'actions de Power Automate ?
Oui, chacune des deux actions compte une fois dans la limite de ton flux, comme n'importe quelle autre action. La différence avec Apply to Each est qu'elles s'exécutent toujours comme une seule action, quelle que soit la taille du tableau, alors qu'une boucle génère ses propres exécutions d'action pour chaque élément.
Filter Array peut-elle aussi modifier la forme des objets d'un tableau ?
Non. Filter Array modifie uniquement le nombre d'objets contenus dans le tableau résultat, pas leur structure. Si des champs doivent être renommés, ajoutés ou supprimés, c'est l'action Select qui s'en charge.
Que se passe-t-il si Filter Array ne trouve aucun élément correspondant ?
Dans ce cas, l'action renvoie un tableau vide et le flux continue sans erreur. Si tu veux vérifier si des résultats existent, tu combines le résultat avec la fonction length() dans une condition suivante.
Est-il utile de passer d'Apply to Each à Filter Array et Select même pour de petits tableaux ?
Pour des tableaux très petits et stables avec peu d'entrées, le gain de performance est faible. L'avantage réside alors davantage dans la clarté et la maintenabilité du flux que dans le temps d'exécution, ce qui finit toutefois par payer dès que le tableau devient plus grand en production que prévu initialement.
NordFlux UG (haftungsbeschränkt)
NordFlux construit des employés numériques pour les organisations : des automatisations et des agents KI qui prennent en charge le travail répétitif. Vous gardez le contrôle.
Des questions concrètes sur l’automatisation ou l’IA ?
Lors d’une analyse initiale gratuite, nous discutons directement de votre cas. Sans engagement.