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