Udemy 新コース: 作って学ぶMicrosoft 365 Copilot Chat !

Dataverse のレコードをページングして大量に取得する | Power Automate

Power Automate から Dataverse の行を一覧にするアクションを利用すると、既定ではページングにより5,000レコードが取得できます。こちらはページングの量を設定から増やすと100,000行まで取得できますが、それ以上のレコードを取得するにはひと工夫が必要です。今回はその方法をご紹介します。

作成するフローのイメージ

このようなフローを作成します。Do untilとFetch XML を利用します。

作成方法

変数の準備

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

fetchXMLの式を取得する

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

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

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

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

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

この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には、Power Automateの上限である30日間を指定します。クーロン式で指定する必要があります。既定では1時間となっているので、とりあえず最大にしたい場合はP30D (30日間)と入力するとよいでしょう。

次に、変数の値を増やすアクションにてページ番号を1増やしてループ処理を続けます。

以上、ご参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Index