Power Automate から Dataverse の行を一覧にするアクションを利用すると、既定ではページングにより5,000レコードが取得できます。こちらはページングの量を設定から増やすと100,000行まで取得できますが、それ以上のレコードを取得するにはひと工夫が必要です。
For each やDo until は、特にPower Platform の保護機能であるPower Platform 要求 (Power Platform リクエスト) の制限に気をつける必要がある開発です。こちらはライセンス契約によって異なる要求数の上限があります。上限を超えると、フローが低速化します。超えている状態が続くと、フローはオフになります。リクエスト数が短時間で多くなりそうな時は、インターバルを1日程度開けて実行するとよいです。
本件は記事の最後に注意点として説明を行います。
今回はその方法をご紹介します。
目次
作成するフローのイメージ
このようなフローを作成します。Do untilとFetch XML を利用します。

作成方法
変数の準備
ページ番号と取得したレコードの件数を保管する変数をInteger形式で宣言します。


FetchXMLの式を取得する
FetchXMLでのフィルター条件を取得します。モデル駆動型アプリにて、フィルターを編集します。

設定したフィルター条件にて、FetchXMLをダウンロードします。

Power Automate の行を一覧にするアクションにFetchXMLを利用
ダウンロードしたFetchXMLをDataverseの行を一覧にするアクションのFetchXMLクエリのフィールドにペーストします。
page = ""
を以下のように加えて、pageNumber
変数を追加します。これにより、ページ送りができるようになります。

ページ数の設定
続けて、取得できたレコードの件数を変数に格納します。以下のようにLength
関数を利用します。

Do until
ページ送りをしていくと、いつか値がなくなり件数が0になります。するとストップするようにします。それはDo untilに記載します。

Countフィールド
このCountは最大ページ数に当たります。Do untilの制限で5,000が最大です。この方法でページ送りをすると、1ページあたり5,000件のため、5,000×5,000件のレコードを取得できます。
つまり、25,000,000(2千5百万)件のレコードを取得できます。これを上回る場合、Fetch XMLのフィルター条件で分割して取得するとよいでしょう。例えば、オートナンバーなどで番号が割り振られている場合、下一桁0~9でフィルターしてそれぞれDo untilすれば、10倍のレコードを取得することができます。下2桁にすれば100倍です。
Timeoutフィールド
Timeoutには、Power Automateの上限である30日間を指定します。クーロン式で指定する必要があります。既定では1時間となっているので、とりあえず最大にしたい場合はP30D
(30日間)と入力するとよいでしょう。
次に、変数の値を増やすアクションにてページ番号を1増やしてループ処理を続けます。

リクエスト数の超過に気をつける
For each やDo until は、特にPower Platform の保護機能であるPower Platform 要求 (Power Platform リクエスト) の制限に気をつける必要がある開発です。
Power Platform はマルチテナント = つまり他の顧客もサービスを利用しています。影響がないようにサービス安定稼働の観点で制限を設けています。
考慮する必要のある保護のゲートは主に以下があります。
Power Platform 要求
要求の制限と割り当て – Power Platform | Microsoft Learn
Power Automate の制限
Power Automateの制限があります。こちらも実行するフローの内容によっては考慮する必要があります。
自動化フロー、スケジュールされたフロー、インスタント フローの制限事項 – Power Automate | Microsoft Learn
コネクタの制限
コネクタにも制限があります。こちらも実行するフローの内容によっては考慮する必要があります。
Power Platform および Azure Logic Apps コネクタのドキュメント – Connectors | Microsoft Learn
サービスごとの制限
Power Automate から呼び出した先のサービスの観点です。
Microsoft サービスでは主に Dataverse と SharePoint が話に出てきます。SharePointのスロットリングというと聞いたことがある方もあるかと思います。
SharePoint Online で調整またはブロックを回避する | Microsoft Learn
サービス保護 API の制限 (Microsoft Dataverse) – Power Apps | Microsoft Learn
Power Automate から呼び出す先のサービス側にも個別にリクエスト数の上限が設けられていることが多いです。上記はあくまでMicrosoft サービスのリストです。例えばSalesforceやBoxなど、そういったクラウドサービスには設けられておりますので、こちらにも注意しましょう。
以上、ご参考になれば幸いです。