PowerAppsに2000件以上のデータを取り込む
Power AppsはDataverseやSharePointなどから一度に最大2,000件(デフォルトでは500件)のレコードしか取得する事ができない。それを無理やり?取得する方法。
取り込み先のSharePointリストにID以外の番号を追加して、2,000件ごとにループさせて読み込んでコレクションを作成する。
まずは、Power Appsのファイル→設定→全般→データ行の制限値がデフォルト値は500なので、最大値は2,000に変更する。
次にSharePointリストに「subID」(名称は任意)フィールドを追加し、1から連番で重複のないように入力する。2万件なら1〜20,000をIDとは別に入力する。(IDと同じである必要はない)
OnSlectに下記構文を設定する。
UpdateContext({threshold: 2000}); // 一度に処理するレコード数の閾値を設定
UpdateContext({lastRecord: First(Sort(SPリスト名称, ID, SortOrder.Descending))}); // 最新のレコードを取得
UpdateContext({maxInteration: RoundUp(lastRecord.ID / threshold, 0)}); // ループの最大回数を計算
Clear(コレクション名称); // コレクションをクリア
ForAll(
Sequence(maxInteration, 0), // ループの回数を設定
With(
{
prev: Value(Value) * threshold, // 現在の範囲の開始ID
next: (Value(Value) + 1) * threshold // 現在の範囲の終了ID
},
Collect(
コレクション名称, // コレクションにデータを収集
Filter(
SPリスト名称, // データソースをフィルタリング
prev < subID && subID <= next // IDの範囲でフィルタリング
)
);
)
);
実行するとコレクションに20,000件のデータが格納される。あとは、このコレクションから諸々の設定をして使いこなせる。
Filterに特定の値でフィルタを掛けて取り込むとか、AddColumnsでフィールドを追加してコレクションを作成したりできる。
NOTICES
- 記事内容は実装させたものがほとんどですが自己責任で参考にしてください。