Power AutomateでApply to eachを避けるべき場面と対処方法

こんにちは、あおいです。
最近、ICLに興味があるので治療を前向きに検討中です。

さて、Power Automate「コントロール」コネクタの「Apply to each」アクションは、配列及びそれに準ずるデータの各要素をFor-eachで処理します。

このApply to eachアクションの主な活用方法は、各要素を文字列処理をして、OutlookやSlack等で通知をしたり、SQLServerやDataverseにCRUD操作、またはExcelファイルに書き込む等が挙げられます。


とても便利なアクションですが、ループ対象のデータ要素があまりにも多いとかなりの処理時間を要します。

可能な限り、Apply to eachの多用は避けるべきです。


そんな時に役立つのが「データ操作」コネクタの「選択」「アレイのフィルター処理」アクションです。

そこで、今回はApply to eachの適用を避けるべき場面と対処方法を紹介させていただきます。

配列の作成

例えば、配列変数に各要素(100個)を追加して配列を作成します。

「Apply to each」の場合





フロー実行で処理時間を確認すると25秒です、、、





「選択」アクションの場合





フロー実行で処理時間を確認すると0秒です!
また、余分なフローステップがなくなるので可読性も向上します!




配列から要素を抽出

例えば、配列(100個)から条件に合った要素のみ処理をします。

「Apply to each」の場合





フロー実行で処理時間を確認すると18秒です、、、





「アレイのフィルター処理」アクションの場合





フロー実行で処理時間を確認すると0秒です!
また、余分なフローステップがなくなるので可読性も向上します!




今回はApply to eachの適用を避けるべき場面と対処方法を紹介させていただきました。

「選択」「アレイのフィルター処理」アクションを使う上で、注意すべき点があります!

それはApply to eachでどんな処理をしているかをきちんと理解していることです。

何も考えずにとりあえずApply to eachを無理矢理なくそうとすると、返って複雑なフローになってしまう可能性もあります。脳死でフローを組むのは絶対に避けるべきです。


Apply to eachが必須な処理か、Apply to eachをなくす以外に改善すべきところはないか、これらを考慮した上で使うようにしましょう!