LoginSignup
2

More than 1 year has passed since last update.

PowerAutomate で Apply to each が遅い!

Posted at

ことのほったん

PowerAutomate を使って 1000個 のデータをグルグルまわした処理をするのにかかった時間 5分

これはおそすぎる!

image.png

解決策を考える

その1 コンカレンシー制御をつかう(並列処理)

image.png

これを使うとループ処理を並列で行えます。
50並列にすることで時間は 35秒 になりました。

通常はこれで高速化できますが、並列処理できないことってのも意外とあります。
順序性が大事なものなど。

その2 事前にフィルタをかけてデータ数自体を減らす

可能であれば事前にデータ数を減らしましょう。
なんだかんだこれが一番効果があります。

とはいってもデータ数を減らすために Apply to each を使っちゃうと結局時間かかってしまうので……「アレイのフィルター処理」 というのを使います。

この例だと、データ(レコード)中に "a" を含むレコードだけをとりだして、それに対して Apply to each を行ってます。
データ数が少なくなるのでもちろん早くなります。

image.png

ポイントとしては「アレイのフィルター処理」はちゃんと早いです。なのでもし Apply to each を使う理由が、特定のデータの抽出や重複チェックみたいなものなのであれば、すぐに「アレイのフィルター処理」に書き換えちゃいましょう!

けつろん

  • Apply to each は遅い。
  • コンカレンシー制御を使えば早くなる。
  • それよりも配列のデータ数を減らせないか?も考える。データ数を減らすときには「アレイのフィルター処理」を使う

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2