Power AutomateでApply to eachを避けるべき場面と対処方法
2022-04-14
azblob://2022/11/11/eyecatch/2022-04-14-power-automate-peformance-up-array-processing-000.jpg

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