
こんにちは、あおいです。
最近、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をなくす以外に改善すべきところはないか、これらを考慮した上で使うようにしましょう!