ことのほったん
PowerAutomate を使って 1000個 のデータをグルグルまわした処理をするのにかかった時間 5分 !
これはおそすぎる!
解決策を考える
その1 コンカレンシー制御をつかう(並列処理)
これを使うとループ処理を並列で行えます。
50並列にすることで時間は 35秒 になりました。
通常はこれで高速化できますが、並列処理できないことってのも意外とあります。
順序性が大事なものなど。
その2 事前にフィルタをかけてデータ数自体を減らす
可能であれば事前にデータ数を減らしましょう。
なんだかんだこれが一番効果があります。
とはいってもデータ数を減らすために Apply to each を使っちゃうと結局時間かかってしまうので……「アレイのフィルター処理」 というのを使います。
この例だと、データ(レコード)中に "a" を含むレコードだけをとりだして、それに対して Apply to each を行ってます。
データ数が少なくなるのでもちろん早くなります。
ポイントとしては「アレイのフィルター処理」はちゃんと早いです。なのでもし Apply to each を使う理由が、特定のデータの抽出や重複チェックみたいなものなのであれば、すぐに「アレイのフィルター処理」に書き換えちゃいましょう!
けつろん
- Apply to each は遅い。
- コンカレンシー制御を使えば早くなる。
- それよりも配列のデータ数を減らせないか?も考える。データ数を減らすときには「アレイのフィルター処理」を使う